IPsecを伴ったL2トンネリング/ブリッジ(経路内にNATがあるケース)
その10の続き。トンネリング(IPsec)内にNAT(NAPT)がある場合の検証。NATトラバーサルを用いる。(今回は、L2トンネリングというよりIPsecの話になってしまっている。)
NATトラバーサル
NAPTは、ルーターにて、ポート番号のマッピングを行い、「複数」のローカルIPアドレスを1つのグローバルIPアドレスに割り当てるもの。今回のケース(L2TP over IPsec)では、NAPTを通過するとポート番号こと暗号化されてしまう。こで、NATトラバーサル機能を用いて、これを解決する。簡潔に言うと、IPsecによって暗号化されたパケット(ESP)にUDPヘッダを付加する。詳細については、次のサイトを参考にされたい。
トポロジー
末端のPCは同一セグメント(10.0.0.0/24)、固定IPアドレスがアサインされており、JPN-RouterとEU-Routerとの通信がIPsec化される。この経路の途中にNAT-Routerが存在するものとする。
設定
Ciscoサイト「PAT を実行し LAN 間 IPSec トンネルを通す IOS ルータの設定例」を参考に設定。
NAT-Router
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
ip nat inside
interface FastEthernet0/1
ip address 172.16.1.1 255.255.255.0
ip nat outside
ip nat inside source list 1 interface FastEthernet0/1 overload
NAPT(シスコ用語ではPAT)の設定。192.168.1.0/24ネットワークが内側、172.16.1.0/24ネットワークが外側である。
JPN-Router
pseudowire-class test
encapsulation l2tpv3
ip local interface FastEthernet0/0
crypto isakmp policy 1
encr 3des
authentication pre-share
group 2
crypto isakmp key testpwd address 172.16.1.2
crypto isakmp keepalive 60 periodic
crypto ipsec transform-set ABC esp-3des esp-sha-hmac
crypto map To_R3 1 ipsec-isakmp
set peer 172.16.1.2
set transform-set ABC
match address DEF
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
crypto map To_R3
interface FastEthernet0/1
no ip address
xconnect 172.16.1.2 1 encapsulation l2tpv3 manual pw-class test
l2tp id 1 2
ip route 0.0.0.0 0.0.0.0 FastEthernet0/0
ip access-list extended DEF
permit 115 any any
こちらは、その10と同じ(3DES以外)。
EU-Router
pseudowire-class test
encapsulation l2tpv3
ip local interface FastEthernet0/0
crypto isakmp policy 1
encr 3des
authentication pre-share
group 2
crypto isakmp key testpwd address 172.16.1.1
crypto isakmp keepalive 60 periodic
!
!
crypto ipsec transform-set ABC esp-3des esp-sha-hmac
!
crypto map To_R2 1 ipsec-isakmp
set peer 172.16.1.1
set transform-set ABC
match address DEF
interface FastEthernet0/0
ip address 172.16.1.2 255.255.255.0
crypto map To_R2
interface FastEthernet0/1
no ip address
xconnect 192.168.1.2 1 encapsulation l2tpv3 manual pw-class test
l2tp id 2 1
ip route 0.0.0.0 0.0.0.0 FastEthernet0/0
ip access-list extended DEF
permit 115 any any
ここ(NAT外側)でのポイントは、IPsecの対向先に、NAT-Routerの外側のIPアドレスを指定することである。JPN-RouterのIPアドレスを指定しても動作しない。IKE/IPsec通信経路にNATが存在すると、自動的にNATトラバーサルを行うシスコルーターの仕様のような気がする。これについては、記事「IPSec VPN」に「NOTE R3 has to use the translated IP address because, from its perspective, it’s establishing an IPSec tunnel with 23.1.1.1:」と、類似の説明が見つかった。
検証
PC1からPC2へのping実施時のWiresharkデータ。
Switch1とNAT-Router間
IKE初期時。IKEのポート番号500が見える。
その次。「Malformed Packet」とあることから、おそらく各ルーターにて経路内にNATがあることを把握したのか?
で、「UDP Encapsulation...」とUDPパケットが追加され、NATトラバーサルが始まる。ポート番号も4500に変更されている。
暗号化されたパケットにも、UDPパケットが追加されている。
NAT-RouterとSwitch2間
終わりに
NAT外側から起動(PC2からping)するには、、
NAT-Routerにて下記設定が必要(さきほどのCiscoサイト情報より)。
ip nat inside source static udp inside_ip 4500 interface interface 4500
ip nat inside source static udp inside_ip 500 interface interface 500
NATルーターのIPアドレス指定
末端のルーターでは対向ルーターまでの経路が通常わからないため、IPsecの対抗先として、NATを行うルーターのIPアドレスを末端のルーターで指定するのはいかがなものかと考える。最初からNATトラバーサル前提で両端ルーターの設定ができればよいと思うのだが、、、。これについて少々調べたが、Ciscoルーター以外では情報が見つかるが、Ciscoルーターでは見つからず。時間があるときに調べてみたい。同時に情報ありませんか、、、> 有識者のみなさま。