ipsec and snat: mtu question
From: Marco Berizzi <hidden>
Date: 2012-06-28 13:08:02
Hello everybody. Kindly, I would like to ask for explanations about a linux ipsec gateway snatting packets. Here is the network schema. customer private network 10.16.0.0/16 | | +ipsec customer gateway (checkpoint) || ||---ipsec tunnel 10.16.0.0/16<->172.16.128.0/28 (des3/md5) || mtu=1446 || ++ linux_gw_snat ipsec gateway (SNAT all packets from 172.22.1.0/24 to 172.16.128.1) || ||---ipsec tunnel 10.16.0.0/16<->172.22.1.0/24 (aes/sha1/ipcomp) || mtu=1430 || +linux_final ipsec gateway | | client 172.22.1.50 SYN packet start behind the linux_final (172.22.1.50) for 10.16.237.66 customer network. MSS is 1460 byte. DF flag is set on outgoing packets. Packet travel inside the ipsec tunnel: tunnel mtu is 1430 At the linux_gw_snat, the packet get decryped, snatted (ip src change from 172.22.1.50 to 172.16.128.1) and encryped again. Packets are delivered to the checkpoint: tunnel mtu is 1446 Checkpoint deliver the decryped packet to 10.16.237.66 So far, so good. At some point, 10.16.237.66 will send a 1500 byte packet for 172.16.128.1: checkpoint will reply with an icmp packet too large need to frag: mtu is 1446 10.16.237.66 will send back a 1446 byte packet to the checkpoint which will encrypt and deliver to the linux_gw_snat which will decrypt and deSNAT. Now linux_gw_snat must send this 1446 byte packet to 172.22.1.50 but mtu is only 1430: packet will be dropped (DF is set). Now, IMHO, linux_gw_snat should send an imcp message to 10.16.237.66 telling that max mtu is 1430, but I don't see any icmp packet. Is this the expected behaviour? TIA PS: linux_gw_snat is 3.3.5