IPsecにトライ
今回はGNS3にて、トンネリングで頻繁に使われる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
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
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」を使うらしい。なので、次回はこれを試してみる。