NATありL2TPv3 over IPsecをヤマハルーターで実現
前回の予告どおり、途中経路にNATがある環境下での、L2TPv3 over IPsecをヤマハルーターで実現した。参考サイトは同じ。
ネットワークトポロジー
Router 1は、NATルーターからDHCPによりWAN側IPアドレスを取得する。Router 2のWAN側は固定のグローバルIPアドレスを持つ。Router 2は、接続されるまで相手がわからない。
設定
今回は非対称のため、両ルーターの設定情報について、関連するところのみ記載することとした。
Router 1(DHCPによりWAN IPアドレス取得)
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 # L2TPv3/IPsecトンネル
tunnel endpoint address 192.168.2.10 60.xxx.yyy.zz2 # トンネル始点(ブリッジIPアドレス)と終点(対向ルーターのWAN IPアドレス)
ipsec tunnel 101 # IPsecトンネルポリシー
ipsec sa policy 101 1 esp aes-cbc sha-hmac # ESP及びアルゴリズム
ipsec ike keepalive log 1 on # IKEキープアライブSyslog化
ipsec ike keepalive use 1 on # IKEキープアライブ有効化
ipsec ike local address 1 192.168.2.10 # IKEローカルIPアドレス
ipsec ike local name 1 l2tpv3 key-id # IPsecで使用するローカル名の指定(WAN(LAN2)側IPアドレス不定のため、IPアドレスの代わりに使用。対向ルーターのremote nameで同じ名称を用いる(らしい))
ipsec ike nat-traversal 1 on # IPsecでNATトラバーサル有効化
ipsec ike pre-shared-key 1 text yamaha # IKE事前共有鍵
ipsec ike remote address 1 60.xxx.yyy.zz2 # IPsecリモート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 # トンネルキープアライブ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)
nat descriptor address inner 1 auto # NAT内側IPアドレス(自動)
nat descriptor masquerade static 1 1 192.168.2.10 udp 1701 # L2TPポート番号(1701)をブリッジIPアドレスへ転送
nat descriptor masquerade static 1 2 192.168.2.10 udp 500 # ISAKMPポート番号(500)を同様に転送
nat descriptor masquerade static 1 3 192.168.2.10 udp 4500 # IPsec NAT-Traversalポート番号(4500)を同様に転送
nat descriptor masquerade static 1 4 192.168.2.10 esp # ESPパケットを同様に転送
ipsec auto refresh on # IKE鍵交換有効化
ipsec transport 1 101 udp 1701 # IPsecトランスポートモードでL2TP(1701)利用
l2tp service on l2tpv3 # L2TPv3有効化
Router 1では、WAN側IPアドレスが不定となるため、IDとして、IPアドレスではなく、名称を使う。次のサイトの説明参照。
Router 2(WAN側、固定グローバルIPアドレス)
ip route default gateway 60.xxx.jjj.kkk # デフォルトゲートウェイ
bridge member bridge1 lan1 tunnel1 # LAN側とトンネルとをブリッジ化
ip bridge1 address 192.168.2.20/24 # ブリッジにIPアドレスアサイン
ip lan2 address 60.xxx.jjj.mmm/2z # WAN側IPアドレス(固定)
ip lan2 nat descriptor 1 # 適用するNATディスクリプタ
tunnel select 1 # トンネル設定
tunnel encapsulation l2tpv3 # L2TPv3/IPsecトンネル
ipsec tunnel 101 # IPsecトンネルポリシー
ipsec sa policy 101 1 esp aes-cbc sha-hmac # ESP及びアルゴリズム
ipsec ike keepalive log 1 on # IKEキープアライブSyslog化
ipsec ike keepalive use 1 on # IKEキープアライブ有効化
ipsec ike local address 1 192.168.2.20 # IKEローカルIPアドレス
ipsec ike nat-traversal 1 on # IPsecでNATトラバーサル有効化
ipsec ike pre-shared-key 1 text yamaha # IKE事前共有鍵
ipsec ike remote address 1 any # IPsec対向アドレス
ipsec ike remote name 1 l2tpv3 key-id # IPsecで使用するリモート名の指定(対向ルーターのlocal nameで同じ名称を用いる(らしい))
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 # トンネルキープアライブ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)
nat descriptor address inner 1 auto # NAT内側IPアドレス(自動)
nat descriptor masquerade static 1 1 192.168.2.20 udp 1701 # L2TPポート番号(1701)をブリッジIPアドレスへ転送
nat descriptor masquerade static 1 2 192.168.2.20 udp 500 # ISAKMPポート番号(500)を同様に転送
nat descriptor masquerade static 1 3 192.168.2.20 udp 4500 # IPsec NAT-Traversalポート番号(4500)を同様に転送
nat descriptor masquerade static 1 4 192.168.2.20 esp # ESPパケットを同様に転送
ipsec auto refresh on # IKE鍵交換有効化
ipsec transport 1 101 udp 1701 # IPsecトランスポートモードでL2TP(1701)利用
l2tp service on l2tpv3 # L2TPv3有効化
ルーター間のネットワークキャプチャデータ
Router 1とNAT Routerとの間のデータである。UDPポート番号4500のヘッダにESPデータが続いており、NATトラバーサルが機能していることがわかる。
クライアントPCでのネットワークキャプチャデータ
IPアドレス172.16.0.1をPCで取得したデータである。pingを実施した結果であり、ARPのブロードキャストおよびそのリプライ後にICMPパケットが見える(末端が同一ネットワークセグメント)。
L2TPおよびIPsec状況
# show status l2tp
------------------- L2TP INFORMATION -------------------
L2TP情報テーブル
L2TPトンネル数: 1, L2TPセッション数: 1
TUNNEL[1]:
トンネルの状態: established
バージョン: L2TPv3
自機側トンネルID: 39738
相手側トンネルID: 47634
自機側IPアドレス: 192.168.2.10
相手側IPアドレス: 60.xxx.yyy.zz2
自機側送信元ポート: 1701
相手側送信元ポート: 1701
ベンダ名: YAMAHA Corporation
ホスト名: RT2
Next Transmit sequence(Ns): 39
Next Receive sequence(Nr) : 37
トンネル内のセッション数: 1 session
セッション情報:
セッションの状態: established
自機側セッションID: 12771
相手側セッションID: 17492
Circuit Status 自機側:UP 相手側:UP
通信時間: 35分50秒
受信: 484 パケット [205813 オクテット]
送信: 158 パケット [17058 オクテット]
#
# show ipsec sa
Total: isakmp:1 send:1 recv:1
sa sgw isakmp connection dir life[s] remote-id
----------------------------------------------------------------------------
1 1 - isakmp - 26640 60.xxx.yyy.zz2
2 1 1 tra[0001]esp send 26642 60.xxx.yyy.zz2
3 1 1 tra[0001]esp recv 26642 60.xxx.yyy.zz2
終わりに
以前、「久しぶりにGNS3(その11:セキュアL2トンネリング/ブリッジ:NAT)」にて、Ciscoルーターで類似の内容を行ったが、NAT Traversalを明示的に指定でき、途中経路を意識せずに実現できるヤマハルーターの方が、扱いやすいと感じる。