两端的IPSec VPN正常建立后,桐乡的电脑(192.168.200.X)无法通过IPSec VPN访问上海的NAS服务器(192.168.100.X:5001)。
在上海和桐乡的UR/ERG3路由器上同时抓包,使用解密工具,对抓取的报文进行解密,原因分析如下:
(1)桐乡的电脑向上海的NAS服务器发送了TCP数据长度为1460的数据包,该数据包在桐乡的路由器LAN口能抓到,在WAN口抓不到。原因是该数据包经过IPSec VPN封装之前,网络层数据包长度为1500【1460+20(TCP head)+20(IP head)】,经过IPSec VPN封装后,网络层数据包长度需要加上esp和外层IP head,已超过1500,大于UR/ERG3可配置的WAN口MTU值(1500),由于桐乡的电脑发送的原始报文的IP层携带了Don‘t Fragment标记,即禁止路由器分片,所以桐乡的路由器会丢弃该报文。此非路由器设备问题,属于正常行为。
(2)桐乡的电脑向上海的NAS服务器发送了TCP数据长度为1389的数据包,该数据包在桐乡的路由器LAN口能抓到,在WAN口也能抓到。原因是该数据包经过IPSec VPN封装之前,网络层数据包长度为1429【1398+20(TCP head)+20(IP head)】,经过IPSec VPN封装后,网络层数据包长度需要加上esp和外层IP head,没有超过1500,小于MTU值(1500),数据包在桐乡路由器上被正常转发出去,但是在上海的路由器上没有收到,初步分析该数据包在运营商侧被丢弃。
将桐乡和上海两端UR/ERG3路由器的WAN口和vlan的TCP MSS值由1460/1398统一修改为1280,即可恢复正常访问。