VPNサーバーの構築

店舗情報

Ubuntu16.04でのL2TP+IPsec VPNサーバーの構築

本業とは関係ありませんが、遊び&趣味の話題です。

色々なサイトで調べて、自分なりの解決法やこれから構築する人の参考になれば
また自分の覚書も含めたメモです。

これからも、時間があれば色々上げていこうと思います。
Samba
Postgresql
など

ios10以降PPTPが使えなくなって、Openvpnを使っていましたが、興味があったので
Ubuntu16.04に入れてみました。
回線や使うマシンにもよると思いますが、うちの環境だと150M位のスループットが出ています。

独学なので間違っている部分も多々あるかもしれません。

構築環境
ルーター         IP 192.168.100.1
VPNサーバー   IP 192.168.100.10
WINSサーバー IP 192.168.100.20

Ubuntu16.04にStrongswan+Xl2tpdをatp-getでインストール

su                          #作業をしやすくするためにスーパーユーザーになります。
apt-get install -y strongswan xl2tpd

 

Stongswan(IPsec)の設定

ちなみにごちゃごちゃした設定ファイルが嫌いなのでコメント等は削除し
必要な項目だけを書き換えています。

ipsec.conf

不要な設定も有るかもしてないけど、ここまで追加したら接続が安定しました。
type=transport以降の設定は無くても動くが、Android以外の端末だと
不安定な状態になったので追加したら、iphoneやWin10で安定した接続が出来た。

vi /etc/ipsec.conf
config setup
    nat_traversal=yes
conn %default
    auto=add
conn L2TP-NAT
    closeaction=clear
    dpdaction=clear
    type=transport
    rekey=no
    leftauth=psk
    rightauth=psk
    right=%any
    rightprotoport=17/%any

ipsec.secrets

事前共通キーの設定
何故か全て大文字にしないとエラーが出て起動ができなかった。
原因を探るまで4時間潰してしまいました。

 vi /etc/ipsec.secrets

: PSK "PASSWORD"

Xl2tpd(L2TP)の設定

xl2tpd.conf

 vi /etc/xl2tpd/xl2tpd.conf
[lns default]
  ip range = 192.168.100.50-192.168.100.60 *クライアントに配布するIPアドレスの範囲
  local ip = 192.168.100.10         *サーバーのアドレス
  length bit = yes
  refuse pap = yes
  refuse chap = yes
  require authentication = yes
  name = l2tp
  pppoptfile = /etc/ppp/options.l2tpd.lns

 

options.l2tpd.lns

VPNからインターネットに出ない場合はDNS不要
WINS-DNSを指定することにより、Windwsのネットワークに表示されるようになる。

 vi /etc/ppp/options.l2tpd.lns
 name l2tp
 refuse-pap
 refuse-chap
 refuse-mschap
 require-mschap-v2
 nodefaultroute
 proxyarp
 ms-dns 192.168.100.1
 ms-dns 8.8.8.8
 ms-wins 192.168.100.20
 netmask 255.255.255.0
 lock
 nobsdcomp
 mtu 1410   *1280の方が安定すると思う。
 mru 1410   *1280の方が安定すると思う。
 logfile /var/log/xl2tpd.log

chap-secrets

接続ユーザーの設定
ユーザー名とパスワードを””で囲む

 vi /etc/ppp/chap-secrets
"hogehoge1" * "password1" *
"hogehoge2" * "password2" *

 

ルーティングの設定

VPNに接続しただけでは何も出来ないので接続した端末のルーティングを設定します。

sysctl

 vi /etc/sysctl.conf
 net.ipv4.ip_forward=1

IPマスカレードの設定

/sbin/iptables -t nat -A POSTROUTING -s 192.168.100.0/255.255.255.0 -j MASQUERADE

自動起動するためにスクリプトを作成
IPマスカレードの設定を保存する。

/sbin/iptables-save -c > /etc/iptables.rules

設定を読み込むスクリプト作成

 vi /etc/network/if-pre-up.d/iptables_start

 #!/bin/sh
       /sbin/iptables-restore < /etc/iptables.rules
   exit 0

実行権限を与える

chmod +x /etc/network/if-pre-up.d/iptables_start

デーモンを再起動

systemctl restart strongswan
systemctl restart xl2tpd
sysctl -p

ポートの開放

NATのUDP500、UDP4500、UDP1701
をVPNサーバーにフォワード