Help us understand the problem. What is going on with this article?

CentOS7からL2TP接続

More than 3 years have 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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away