options.xl2tpdのオプションで引っかかったのでかきかき
-
SELinuxを無効にする
セキュリティ系の何かで、いつも切られてるやつを例によって無効化。なにに使うんだろうこれ。/etc/sysconfig/selinux
を編集。/etc/sysconfig/selinux# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. #SELINUX=enforcing <- コメントアウト SELINUX=disabled <- 追記 # SELINUXTYPE= can take one of three two values: (後略)
編集後再起動で反映される。
-
epelリポジトリを追加
必要なパッケージのあるリポジトリが標準で追加されていないので追加。$ sudo yum install epel-release $ sudo yum update
-
パッケージのインストール
必要なパッケージは xl2tpと libreswan、検証用に lsof(これはすでに入ってる可能性あり)$ sudo yum install xl2tpd libreswan lsof
-
xl2tpの設定
ここからはrootになっていたほうが都合がいい-
設定ファイルのバックアップ
# cp /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.origin # cp /etc/ppp/options.xl2tpd /etc/ppp/options.xl2tpd.origin # cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.origin
-
設定の編集 以下は自分の場合
- xl2tpd.conf
xl2tpd.conf(前略) [global] listen-addr = (サーバーのグローバルip) (中略) [lns default] ip range = 192.168.11.201-192.168.11.221 (クライアントに割り当てるローカルip) local ip = (サーバーのローカルip) require chap = yes refuse pap = yes require authentication = yes name = xl2tpd <- ここはこうした方が安心らしい? (後略)
- options.xl2tpd
最近のアップデートで
crtscts
とlock
というオプションがなくなったらしく、これをコメントアウトしないとxl2tpが起動に失敗してしまう。options.xl2tpd(前略) #crtscts (中略) #lock (中略 末尾に追加) name xl2tpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 persist logfile /var/log/xl2tpd.log
ついでにこのログファイルも作っておく
# touch /var/log/xl2tpd.log
- chap-secrets
chap-secrets# Secrets for authentication using CHAP # client server secret IP addresses "ユーザー名" "xl2tpd" "シークレット" *
-
-
IPsecの設定
上と同じ感じ。- 設定ファイルのバックアップ
$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.origin
- 設定の編集
-
ipsec.conf
ipsec.conf(前略) include /etc/ipsec.d/*.conf <- コメントアウトされていた場合は外す
-
/etc/ipsec.d/l2tp-ipsec.conf (新規作成)
/etc/ipsec.d/l2tp-ipsec.confconn L2TP-PSK-NAT rightsubnet=0.0.0.0/0 dpddelay=10 dpdtimeout=20 dpdaction=clear forceencaps=yes also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h keylife=1h type=transport left=(サーバーのローカルip) leftprotoport=17/1701 right=%any rightprotoport=17/%any
-
/etc/ipsec.d/default.secrets (新規作成)
: PSK "事前共有鍵"
-
-
ファイヤウォールの設定
必要なサービスとポートを解放する。
環境がNATの中の場合はこれとは別にルーターでポート開放設定の必要あり# firewall-cmd --permanent --add-service=ipsec # firewall-cmd --permanent --add-port=1701/udp # firewall-cmd --permanent --add-port=4500/udp # firewall-cmd --permanent --add-masquerade # firewall-cmd --reload
-
カーネルパラメータの変更
この設定がないとipsecが怒る(無知)。/etc/sysctl.d/60-ipsec.conf
を作成して内容を以下の様にする。ただし、np63s0
の箇所はそれぞれのネットワークアダプタ名に置換する必要がある。ネットワークアダプタ名は$ip a
で調べられるnet.ipv4.ip_forward = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.np63s0.accept_redirects = 0 net.ipv4.conf.np63s0.rp_filter = 0 net.ipv4.conf.np63s0.send_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.lo.rp_filter = 0 net.ipv4.conf.lo.send_redirects = 0
(2020/08/07 追記)
構成によっては下記の設定が有効or必要なようです
net.ipv4.ip_nonlocal_bind = 1
ちなみにこの設定は下記のような設定項目です。ルーターによる静的なIP割当をしているときや構成によってはこの設定がなのかもです。
/proc/sys/net/ipv4/ip_nonlocal_bind
アプリケーションを自分のシステムには属していないデバイスにバインドさせたければ、 これを設定してください。 これはマシンの接続が永続的でない (あるいは動的な) 場合、 接続が切れたときにもサービスが起動して特定のアドレスに バインドできるようにするのに便利です。
出典: Linux Advanced Routing & Traffic Control HOWTO 日本語訳版
(https://linuxjf.osdn.jp/JFdocs/Adv-Routing-HOWTO/lartc.kernel.obscure.html)
(追記ここまで @yaztak1227 さんありがとうございます!)
作成後適用する。
```
# sysctl --system
```
-
サービスの有効化と再起動
以下のコマンドでサービスを有効化&再起動# systemctl enable ipsec # systemctl enable xl2tpd # systemctl restart ipsec # systemctl restart xl2tpd
-
起動の確認
lsofを実行して、1701ポートをLISTENしていればサービスは動いてる。# lsof -i:1701 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME xl2tpd 3505 root 3u IPv4 33488 0t0 UDP hostname:l2tp
参考:
L2TP/IPsec VPNサーバの構築
http://d.hatena.ne.jp/xlc/20170804/1501857811
CentOS6/7 で VPN 構築
http://mix3.github.io/blog/2015/05/09/20150509/
CentOS7のL2TP仕様が若干変わっていた
https://ameblo.jp/j-drucker/entry-12240489746.html