查看RT1上IPsec SA的相关信息
display ipsec sa
查看RT1上IPsec安全提议的信息
display ipsec transform-set
查看RT1上IPsec隧道的信息
display ipsec tunnel
验证主机
从PC1向PC2发起ping从测试,可以连通。观察TTL值为253,表明中间经过了两跳设备,应该就是IPsec隧道两端的RT1和RT2,中间的互联网无感知。但是使用tracert探测路径,则无法看到网络转发路径。
通过抓包可以发现,RT2没有回应TTL超时的ICMP错误消息,应该是没有接口响应吧。
查看IPsec SA信息时,隧道下有一行Path MTU: 1428的信息,那就来验证一下MTU的大小吧。
测试发现实际最大能通过的报文大小为1400字节,1401字节及更大的报文无法通过。
抓包发现IPsec设备发出的报文大小为1510字节,其中包含14字节的以太网报文头封装,内部数据长度为1496字节。还可以看到DF标志、隧道的源目地址以及ESP SPI等信息。
安全协议数据封装格式如下表。我们采用的是ESP-Tunnel的方式,所以数据封装格式为:[OUTER-IP][ESP][INNER-IP][DATA][ESP-T]
再次对比数据包长度,减掉20字节的外部报文头,得到[ESP][INNER-IP][DATA][ESP-T]部分长度为1476字节。再减掉ESP封装的SPI和序列号的8字节,还有1468字节。
我们再反着考虑一下,这个1428字节是隧道的MTU,IPsec网关路由器接收到的报文是多大呢?
数据长度为1400字节,ICMP报文标志位长度为8字节,再加上IP报文头的20字节,长度正好是1428字节,也就是[INNER-IP][DATA]的长度为1428字节。外层的14字节的以太网封装,进入设备之后就脱掉了,但是依然可以看到最外层封装的源MAC地址为PCA的MAC地址,目的MAC地址为网关设备的MAC地址。
再计算一下,[ESP-T]这段的长度应该是40字节吧?
总结
1、IPsec网关设备应用NAT时,要将IPsec保护的数据流量排除掉。因为接口下NAT优先级高于IPsec,会导致互访流量的源地址被转换为无法进入IPsec隧道;
2、ESP + Tunnel模式下,数据的封装格式为:[OUTER-IP][ESP][INNER-IP][DATA][ESP-T]。其中[INNER-IP][DATA]长度受隧道MTU限制,报文的整体长度受IPsec网关设备出接口MTU限制。
3、ESP配置中的SPI和SA在两台IPsec网关设备的出入方向相反,需要注意。
4、如果感兴趣,可以看一下课后练习题巩固一下。