久しぶりにGNS3(その4:トンネリング:IPsec)


IPsecにトライ

今回はGNS3にて、トンネリングで頻繁に使われるIPsec環境を構築する。

参考サイト

  1. 【わかりやすい】 【図解】IPSecの仕組みとは?IPSec-VPN とSSL-VPNの違い
  2. IPSec サイト間VPNの設定例
  3. GNS3:VPNの設定(GRE, IPsec)

1では、VPNでよく利用される、IPSec-VPNとSSL-VPNとの違いが、ネットワークレイヤをもとに説明されており、2および3では、GNS3での設定方法が記載されている。

構築したネットワーク

ルーターR1とルーターR2とを間をIPsec化(トンネリング)する。また、R1およびR2には、それぞれ、ローカルネットワーク10.1.1.0/24および10.2.2.0/24が接続されている。

各ルーターの設定およびルーティング情報

(PC1およびPC2の設定は自明のため省略。)

R1

IKE(鍵交換プロトコル)の設定。

crypto isakmp policy 11
 encr aes
 authentication pre-share
 group 2
crypto isakmp key testpwd address 192.168.20.22
  • Priority:11(1:High-65534:Low)
  • 暗号化アルゴリズム:AES
  • 事前鍵交換方式(パスワード:testpwd)
  • Diffie-Hellman交換:グループ2
  • 相手先IPアドレス:192.168.20.22(対向ルーターR2)

IPsecの設定。

crypto ipsec transform-set IPSEC-TEST esp-aes esp-sha-hmac 
  • transform-set名称:IPSEC-TEST
  • 暗号化アルゴリズム:AES
  • ハッシュアルゴリズム:SHA

暗号マップ設定。

crypto map To_R2 11 ipsec-isakmp 
 set peer 192.168.20.22
 set transform-set IPSEC-TEST 
 match address 100

access-list 100 permit ip any any
  • マップ名称:To_R2
  • シーケンス番号:11(正直よくわからず)
  • 相手先IPアドレス:192.168.20.22(対向ルーターR2)
  • 適用するIPSec transform-set名称
  • アクセスリスト番号100の適用
  • アクセスリスト100:すべてのIPアドレスを対象

物理I/FおよびStaticルート設定。

interface FastEthernet0/0
 ip address 192.168.10.11 255.255.255.0
 crypto map To_R2

interface FastEthernet0/1
 ip address 10.1.1.254 255.255.255.0

ip route 0.0.0.0 0.0.0.0 FastEthernet0/0
  • IPアドレス設定
  • FastEthernet0/0の暗号マップTo_R2を適用
  • StaticルートとしてFastEthernet0/0を選択

設定されたルーティング情報は下記のとおり。

R1#show ip route
(略)

C    192.168.10.0/24 is directly connected, FastEthernet0/0
     10.0.0.0/24 is subnetted, 1 subnets
C       10.1.1.0 is directly connected, FastEthernet0/1
S*   0.0.0.0/0 is directly connected, FastEthernet0/0

R2

R1とほぼ同じのため、説明省略。

crypto isakmp policy 11
 encr aes
 authentication pre-share
 group 2
crypto isakmp key testpwd address 192.168.10.11

crypto ipsec transform-set IPSEC-TEST esp-aes esp-sha-hmac 

crypto map To_R1 11 ipsec-isakmp 
 set peer 192.168.10.11
 set transform-set IPSEC-TEST 
 match address 100

interface FastEthernet0/0
 ip address 192.168.20.22 255.255.255.0
 crypto map To_R1

interface FastEthernet0/1
 ip address 10.2.2.254 255.255.255.0

ip route 0.0.0.0 0.0.0.0 FastEthernet0/0

access-list 100 permit ip any any
R2#show ip route
(略)

C    192.168.20.0/24 is directly connected, FastEthernet0/0
     10.0.0.0/24 is subnetted, 1 subnets
C       10.2.2.0 is directly connected, FastEthernet0/1
S*   0.0.0.0/0 is directly connected, FastEthernet0/0

ISP

interface FastEthernet0/0
 ip address 192.168.10.1 255.255.255.0

interface FastEthernet0/1
 ip address 192.168.20.1 255.255.255.0
ISP#show ip route
(略)

C    192.168.10.0/24 is directly connected, FastEthernet0/0
C    192.168.20.0/24 is directly connected, FastEthernet0/1

ここはほぼ自明。説明略。

実験

R1からPC2(R2のローカルネットワーク上のPC)へのping

R1#ping 10.2.2.2 repeat 30 

Type escape sequence to abort.
Sending 30, 100-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds:
.................!!!!!!!!!!!!!
Success rate is 43 percent (13/30), round-trip min/avg/max = 32/45/68 ms

この時のR1-ISP間のWiresharkデータはこちら。

IPsecでトンネリング(かつ暗号化:ESP)されているため、宛先IPアドレスである「10.2.2.2」を見ることはできない。

また、ping自体は成功しているが、IKEのネゴシエーションに時間がかかっていることがわかる(赤枠部分)。一度成功すれば、その後のpingは問題ないようだ。ただし、IKEのKeepAliveやSAのLifetimeは別の話であろう。(専門家ではないので、これらの詳細説明は勘弁。)

PC1(R1のローカルネットワーク上のPC)からPC2(R2のローカルネットワーク上のPC)へのping

PC1> ping 10.2.2.2 -c 10
84 bytes from 10.2.2.2 icmp_seq=1 ttl=62 time=82.148 ms
10.2.2.2 icmp_seq=2 timeout
10.2.2.2 icmp_seq=3 timeout
10.2.2.2 icmp_seq=4 timeout
84 bytes from 10.2.2.2 icmp_seq=5 ttl=62 time=89.729 ms
10.2.2.2 icmp_seq=6 timeout
10.2.2.2 icmp_seq=7 timeout
84 bytes from 10.2.2.2 icmp_seq=8 ttl=62 time=67.324 ms
10.2.2.2 icmp_seq=9 timeout
84 bytes from 10.2.2.2 icmp_seq=10 ttl=62 time=62.365 ms

この時のPC1-R1間のWiresharkデータはこちら。

この時のR1-ISP間のWiresharkデータはこちら。

GNS3上のルーターの能力の問題なのか、すべてのICMPパケットがR1から創出されていない。GNS3の設定を色々試してみたが、よくわからず。高スペックのマシンを用いれば状況は変わるのかもしれない(真偽不明)。

ISPからPC2へのping

ISP#ping 10.2.2.2 repeat 10

Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds:
..........
Success rate is 0 percent (0/10)

前述のとおり、ISPにはIPアドレス10.2.2.2(PC2)へのルーティング情報が存在しないので、当然応答なし。

終わりに(EIGRPを無理やり設定しても不可)

IPsecではマルチキャストを使うことはできない。なので、ここでは、上述のとおりStaticルートを用いているが、マルチキャストパケットを使うルーティングプロトコルであるEIGRPを設定してみたが、やはりNG。次のようなメッセージが表示された。

R1(config)#no ip route 0.0.0.0 0.0.0.0 fastEthernet 0/0
R1(config)#router eigrp 11
R1(config-router)#network 192.168.10.0

*Mar  1 01:11:26.251: %CRYPTO-4-RECVD_PKT_NOT_IPSEC: Rec'd packet not an IPSEC packet. (ip) vrf/dest_addr= /224.0.0.10, src_addr= 192.168.10.1, prot= 88

IPsec上でマルチキャストパケットを扱うには、「GRE over IPSec」を使うらしい。なので、次回はこれを試してみる。