NAT環境でL2TPv3
「ヤマハルーターでL2TPv3」の続編、NAT環境でL2TPv3を確認するとともに、少々深堀りを実施。今回は、「ヤマハルーターでL2TPv3 over IPsec(NATあり)」とは異なり、Non-IPsec環境での実践。
ネットワーク構成
Router1は、NATルーターからDHCPによりWAN側IPアドレスを取得する。Router2のWAN側は固定のグローバルIPアドレスを持つ。Router2は、接続されるまで相手がわからない。末端のPCが同一ネットワークに属し、192.168.10.xx/24の固定IPアドレスを持つ。
設定
主要部分を説明。
Router1(NAT内側)
administrator password *
bridge member bridge1 lan1 tunnel1 # LAN側とトンネルとをブリッジ化
ip bridge1 address 192.168.2.10/24 # ブリッジにIPアドレスアサイン
ip lan2 address dhcp # WAN側IPアドレスをDHCPにより取得
ip lan2 nat descriptor 1 # 適用するNATディスクリプタ
tunnel select 1 # トンネル設定
tunnel encapsulation l2tpv3-raw # L2TPv3トンネル
tunnel endpoint address 192.168.2.10 60.xxx.yyy.zz2 # トンネル始点(ブリッジIPアドレス)と終点(対向ルーターのWAN IPアドレス)
l2tp always-on on # L2TPv3の常時接続
l2tp hostname RT1 # ホスト名
l2tp tunnel auth on yamaha # トンネル認証ONおよびパスワード
l2tp tunnel disconnect time off # トンネル切断タイマーOFF
l2tp keepalive use on 60 3 # トンネルKeepAlive ON、インターバル(秒)、ダウン検出カウント
l2tp keepalive log on # トンネルキープアライブログON
l2tp syslog on # L2TPトンネル制御をSyslog化
l2tp local router-id 192.168.2.10 # ローカル(自分)ルーターID
l2tp remote router-id 192.168.2.20 # リモート(対向)ルーターID
l2tp remote end-id yamaha # リモートエンドID(ルーターどうしで同一)
ip tunnel tcp mss limit auto # TCP MSS自動制御
tunnel enable 1 # トンネル有効化
nat descriptor type 1 masquerade # NAT IPマスカレード
nat descriptor address outer 1 primary # NAT外側IPアドレス(LAN2=WAN側)
nat descriptor address inner 1 auto # NAT内側IPアドレス(自動)
nat descriptor masquerade static 1 1 192.168.2.10 udp 1701 # L2TPポート番号(1701)をブリッジIPアドレスへ転送
telnetd host lan
l2tp service on l2tpv3 # L2TPv3有効化
Router2(NAT外側)
administrator password *
ip route default gateway xxx.yyy.zzz.177 # デフォルトゲートウェイ
bridge member bridge1 lan1 tunnel1 # LAN側とトンネルとをブリッジ化
ip bridge1 address 192.168.2.20/24 # ブリッジにIPアドレスアサイン
ip lan2 address 60.jjk.mlj.xx2/29 # WAN側IPアドレス(固定)
ip lan2 nat descriptor 1 # 適用するNATディスクリプタ
tunnel select 1 # トンネル設定
tunnel encapsulation l2tpv3-raw # L2TPv3トンネル
l2tp always-on on # L2TPv3の常時接続
l2tp hostname RT2 # ホスト名
l2tp tunnel auth on yamaha # トンネル認証ONおよびパスワード
l2tp tunnel disconnect time off # トンネル切断タイマーOFF
l2tp keepalive use on 60 3 # トンネルKeepAlive ON、インターバル(秒)、ダウン検出カウント
l2tp keepalive log on # トンネルキープアライブログON
l2tp syslog on # L2TPトンネル制御をSyslog化
l2tp local router-id 192.168.2.20 # ローカル(自分)ルーターID
l2tp remote router-id 192.168.2.10 # リモート(対向)ルーターID
l2tp remote end-id yamaha # リモートエンドID(ルーターどうしで同一)
ip tunnel tcp mss limit auto # TCP MSS自動制御
tunnel enable 1 # トンネル有効化
nat descriptor type 1 masquerade # NAT IPマスカレード
nat descriptor address outer 1 primary # NAT外側IPアドレス(LAN2=WAN側)
nat descriptor address inner 1 auto # NAT内側IPアドレス(自動)
nat descriptor masquerade static 1 1 192.168.2.20 udp 1701 # L2TPポート番号(1701)をブリッジIPアドレスへ転送
telnetd host lan
dns server 8.8.8.8
l2tp service on l2tpv3 # L2TPv3有効化
NAT外側のルーターの設定には、「tunnel endpoint address」が存在しない(できない)。
検証
Router1コンソールでのL2TPv3ステータス
# show status l2tp
------------------- L2TP INFORMATION -------------------
L2TP情報テーブル
L2TPトンネル数: 1, L2TPセッション数: 1
TUNNEL[1]:
トンネルの状態: established
バージョン: L2TPv3
自機側トンネルID: 54524
相手側トンネルID: 50910
自機側IPアドレス: 192.168.2.10
相手側IPアドレス: 60.xxx.yyy.zz2
自機側送信元ポート: 1701
相手側送信元ポート: 1701
ベンダ名: YAMAHA Corporation
ホスト名: RT2
Next Transmit sequence(Ns): 10
Next Receive sequence(Nr) : 8
トンネル内のセッション数: 1 session
セッション情報:
セッションの状態: established
自機側セッションID: 14473
相手側セッションID: 54668
Circuit Status 自機側:UP 相手側:UP
通信時間: 6分16秒
受信: 81 パケット [16814 オクテット]
送信: 156234 パケット [86537568 オクテット]
#
Router2のWAN側に入る手前のネットワークキャプチャデータ
L2TPv3確立
確立までのシーケンスは、Cisco(「久しぶりにGNS3(その25:L2TPをWiresharkで確認)」)とは異なるようだ。
Cookieサイズ
Yamahaルーターでは、Cookieサイズが”0”となっている。(Ciscoでは”4”)
ping
「L2TPv3 over UDP」となっている。Cisco「久しぶりにGNS3(その25:L2TPをWiresharkで確認)」では、UDPが存在しない(下記)。
Keep Alive
「l2tp keepalive use on 60 3」にて設定したとおり、60秒ごとに、双方向のHello-ACKのやりとりが行われている。
深堀り
Router ID
Router IDは、L2TPv3の最初のネゴシエーション時のSCCRQ/SCCRPにてやり取りされている。
3232236042 = 192.168.2.10(Router1のRouter ID)
3232236052 = 192.168.2.20(Router2のRouter ID)
トンネルIDとセッションID
- Router1 Tunnel ID: 54524
- Router2 Tunnel ID: 50910
L2TPv3確立後に使われるセッションIDは、その次のネゴシエーションICRQ/ICRP/ICRNでやり取りされている。
- Router1 Session ID: 14473
- Router2 Session ID: 54668
上記の値は、さきほどの「show status l2tp」に表示されている。下記に再掲。
自機側トンネルID: 54524
相手側トンネルID: 50910
自機側セッションID: 14473
相手側セッションID: 54668
セッションIDが使われている様子
さきほどのセッションIDが見られる。相手のIDを指定するようだ。
Router ID(IPアドレス)、トンネルID、セッションIDをリンクさせて、通信を行っている。
その他
NAT
Router1の場合、Router IDであるブリッジIPアドレス(bridge1)192.168.2.10が内側、DHCPで取得したIPアドレス(lan2)が外側(WAN)となっている。Static NATにより、外側に来たUDP Port 1702を、すべてブリッジIPアドレスに転送すること、イコール、ブリッジ化されているLAN側(lan1)に転送することになる、、、と理解。
L2TPv3ヘッダ
Router ID(192.168.2.xxx)レイヤと捉えることができるかもしれない。
最後に
上述した、L2TPv3のクッキーサイズのこともあり、異なるメーカー間のSite間VPNは難しそう。
EOF