こんにちは。@jedipunkz です。

以前、こんな記事をブログに記しました。2012/06 の記事です。

http://jedipunkz.github.io/blog/2012/06/13/vyatta-vpn/

その後、PPTP で保護されたネットワークの VPN パスワードを奪取出来るツールが公開 されました。2012/07 のことです。よって今では VPN に PPTP を用いることが推奨さ れていません。

ということで L2TP over IPsec による VPN 構築を Vyatta で行う方法を記します。

fig.1 : home lan と vyatta のアドレス

                +--------+                      +-----+
    home lan ---| vyatta | --- the internet --- | CPE |
                +--------+                      +-----+
    X.X.X.X/X(NAT)     pppoe0
                       Y.Y.Y.Y

この様に X.X.X.X/X と Y.Y.Y.Y/Y が関係しているとします。CPE は VPN により X.X.X.X/X に接続することが出来ます。

手順 : IPsec

下記の操作で IPsec を待ち受けるインターフェースの設定します。

% configure
# edit vpn ipsec
# set ipsec-interface interface pppoe0

インターフェース名は環境に合わせて設定してください。私の環境では pppoe0 です。

IPsec パケットが NAT を超えるように設定します。

# set nat-traversal enable

CPE がどの環境にいるか、IPsec 接続を許可するネットワークアドレスを入力します。 渡しの場合はどこからでも接続できるよう 0.0.0.0/0 を入力しました。

# set nat-networks allowed-network 0.0.0.0/0
# exit

手順 : L2TP

入力を省くために edit します。

# edit vpn l2tp remote-access

IPsec 認証モードに pre-shared-secret を選択し pre-shared-secret (パスワード) を設定します。このパスワードは接続するユーザ全員が知るものです。また認証モード を local に設定します。

# set ipsec-settings authentication mode pre-shared-secret
# set ipsec-settings authentication pre-shared-secret <パスワード>
# set authentication mode local

接続ユーザを作成します。パスワードはユーザに合わせたパスワードを入力します。先 ほど設定した pre-shared-secret とは別のパスワードを設定するべきです。

# set authentication local-users username <ユーザ名> password <パスワード>

接続するネットワーク情報を記します。pool のアドレス範囲は環境に合わせて設定し てください。渡しの場合は第4オクテット 100 - 120 を設定しました。

# set outside-address Y.Y.Y.Y
# set client-ip-pool start X.X.X.100
# set client-ip-pool stop X.X.X.120

最後に commit & save を忘れずに。

# commit
# save

まとめ

iPhone で接続を確認しました。iOS の場合は L2TP, PPTP, IPsec と3つのタブがあり、 どれかを選択するようになっていますが、L2TP over IPsec の場合には L2TP タブの項 目に情報を入力すれば OK です。