最近、VPN接続以外はLinuxノートを使っており、VPNのためだけにWindowsノートを起動するのが面倒になったので設定しました。
ウインドウマネージャはXfceを使ってますが、ネットワーク接続アイコンのVPNからは接続できなかったのでコマンドでつなぐことにしました。
パッケージインストール
yum install libreswan
yum install xl2tpd
※epelリポジトリが必要です。
設定ファイル
※環境依存値は"%"で挟んでいます。
L2TPサーバの設定
conn L2TP-HOGE
authby=secret
pfs=no
rekey=no
keyingtries=3
type=transport
left=%defaultroute
leftprotoport=17/1701
right=%L2TPサーバのIP%
rightprotoport=17/1701
auto=add
NATトラバーサル環境の場合は以下の行を追加する。
rightid=%実際に受ける機器のプライベートIP%
共有鍵の設定
: PSK "%事前共有鍵%"
L2TP接続設定
[lac L2TP1]
lns = %L2TPサーバのIP%
require chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd.conn-1
length bit = yes
redial = yes
redial timeout = 10
max redials = 6
接続オプションの設定
name "%接続ユーザ名%"
noauth
mtu 1400
mru 1400
nodefaultroute
proxyarp
logfile /var/log/xl2tpd.conn-1.log
refuse-pap
refuse-eap
usepeerdns
connect-delay 5000
参考URLではcrtscts、lockを指定するようになっていましたが、CentOS7ではエラーになるようなので削除。refuse-pap、refuse-eapは追加。
認証情報の設定
# client server secret IP addresses
%接続ユーザ名% * "%パスワード%" *
接続
sudo systemctl start ipsec
sudo systemctl start xl2tpd
sudo ipsec auto --up L2TP-HOGE # L2TPサーバ設定名
sudo su -c 'echo "c L2TP1" > /var/run/xl2tpd/l2tp-control' # L2TP接続設定名
切断
sudo su -c 'echo "d L2TP1" > /var/run/xl2tpd/l2tp-control' # L2TP接続設定名
sudo ipsec auto --down L2TP-HOGE # L2TPサーバ設定名
sudo systemctl stop ipsec
sudo systemctl stop xl2tpd
シェル化
私の環境ではusepeerdnsでVPN側のDNSを拾えなかったので、resolv.confを書き換えるようにしました。
sudo systemctl start ipsec
sleep 1
sudo systemctl start xl2tpd
sleep 1
sudo ipsec auto --up L2TP-HOGE
sudo su -c 'echo "c L2TP1" > /var/run/xl2tpd/l2tp-control'
sleep 3
grep '^nameserver %DNSのIP%' /etc/resolv.conf > /dev/null
if [ $? -ne 0 ]; then
sudo sed -i -e "2i nameserver %DNSのIP%" /etc/resolv.conf
fi
sudo su -c 'echo "d L2TP1" > /var/run/xl2tpd/l2tp-control'
sudo ipsec auto --down L2TPーHOGE
sudo systemctl stop ipsec
sudo systemctl stop xl2tpd
sudo sed -i -e "/^nameserver %DNSのIP%$/d" /etc/resolv.conf
VPNを切断せずにshutdownしても、DHCPで使ってるので次回起動時に余計なnameserverはいないため手抜きしてます。
参考URL
http://network.station.ez-net.jp/client/remote/vpn/l2tp-linux.asp
https://wiki.archlinuxjp.org/index.php/Openswan_L2TP/IPsec_VPN_%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E8%A8%AD%E5%AE%9A