Edited at

CentOS7からL2TP接続

More than 1 year has passed since last update.

最近、VPN接続以外はLinuxノートを使っており、VPNのためだけにWindowsノートを起動するのが面倒になったので設定しました。

ウインドウマネージャはXfceを使ってますが、ネットワーク接続アイコンのVPNからは接続できなかったのでコマンドでつなぐことにしました。


パッケージインストール

yum install libreswan

yum install xl2tpd

※epelリポジトリが必要です。


設定ファイル

※環境依存値は"%"で挟んでいます。


L2TPサーバの設定


/etc/ipsec.d/HOGE.conf

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%


共有鍵の設定


/etc/ipsec.d/ipsec.secrets

: PSK "%事前共有鍵%"



L2TP接続設定


/etc/xl2tpd/xl2tpd.conf

[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


接続オプションの設定


/etc/ppp/options.xl2tpd.conn-1

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は追加。


認証情報の設定


/etc/ppp/chap-secrets

# 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を書き換えるようにしました。


vpn_conn.sh

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



vpn_disconn.sh

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