IPoEとPPPoEでL2TP/IPsec VPN

IPoE環境では公開できるポートが限られている(参考)。

# show nat descriptor address 20000
NAT/IPマスカレード 動作タイプ : 2
参照NATディスクリプタ : 20000, 適用インタフェース : TUNNEL[1](1)
Masqueradeテーブル
    外側アドレス: map-e/XXX.XXX.XXX.XXX
    ポート範囲: 1280-1295, 2304-2319, 3328-3343, 4352-4367, 5376-5391, 6400-641
5, 7424-7439, 8448-8463, 9472-9487, 10496-10511, 11520-11535, 12544-12559, 1356
8-13583, 14592-14607, 15616-15631, 16640-16655, 17664-17679, 18688-18703, 19712
-19727, 20736-20751, 21760-21775, 22784-22799, 23808-23823, 24832-24847, 25856-
25871, 26880-26895, 27904-27919, 28928-28943, 29952-29967, 30976-30991, 32000-3
2015, 33024-33039, 34048-34063, 35072-35087, 36096-36111, 37120-37135, 38144-38
159, 39168-39183, 40192-40207, 41216-41231, 42240-42255, 43264-43279, 44288-443
03, 45312-45327, 46336-46351, 47360-47375, 48384-48399, 49408-49423, 50432-5044
7, 51456-51471, 52480-52495, 53504-53519, 54528-54543, 55552-55567, 56576-56591
, 57600-57615, 58624-58639, 59648-59663, 60672-60687, 61696-61711, 62720-62735,
 63744-63759, 64768-64783   67 セッション
プロトコル      内側アドレス                  宛先   マスカレード    種別
   TCP       192.168.X.11.22             *.*.*.*.*         12**       static
   TCP      192.168.X.2.8080             *.*.*.*.*         12**       static
  -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-    -*-

そこでVPN接続のためだけにPPPoEのセッションを張ることにする。かんたん設定でOK。

# show status pp 1
PP[01]:
説明: PPPoE
PPPoEセッションは接続されています
接続相手: BAS
通信時間: 2日11時間50分4秒
受信: 41781 パケット [3957142 オクテット]  負荷: 0.0%
送信: 27096 パケット [5798334 オクテット]  負荷: 0.0%
累積時間: 2日11時間50分4秒
PPPオプション
    LCP Local: Magic-Number MRU, Remote: CHAP Magic-Number MRU
    IPCP Local: IP-Address Primary-DNS(210.145.254.125) Secondary-DNS(221.113.1
39.245), Remote: IP-Address
    PP IP Address Local: YYY.YYY.YYY.YYY, Remote: ZZZ.ZZZ.ZZZ.ZZZ
    CCP: None

L2TP/IPsecについてかんたん設定でOK。認証に何を使うのか(PAP/CHAP/MS-CHAP)覚えておくこと。この設定をクライアント側にも反映しないと接続できなくなる。

次に、VPNだけPPPoE側を通るような設定を入れる。ゲートウェイを追加し、フィルター型のルーティングを追加する(参考サイト)。L2TP/IPsecを通すために以下のようにする。この設定をしても最初は接続できず試行錯誤した。もしかしたらフィルターの評価順がクリティカルなのかもしれない。

ip route default gateway tunnel 1 gateway pp 1 filter 500001 500002 500004 5000
03
ip filter 500001 pass * * udp 500 *
ip filter 500002 pass * * udp 4500 *
ip filter 500003 pass * * udp 1701 *
ip filter 500004 pass * * esp

クライアント側の設定。事前共有鍵を用いたL2TP/IPsecを指定すればAndroidでは特に何も設定しなくてもよかった。Windowsではデフォルトの設定ではNGで、オプションで「暗号化必須」「CHAPまたはPAP」を指定する必要があった。

トラブルシュートはYAMAHAのサイトが詳しい。