6 Apr 2011 04:13
4.0.1 NAT checksum failure?
der Mouse <mouse <at> Rodents-Montreal.ORG>
2011-04-06 02:13:43 GMT
2011-04-06 02:13:43 GMT
I'm seeing something which looks like failure to recompute the IP header checksum when NATting packets with 4.0.1. I can't believe this wouldn't've been noticed long ago if it were a generic problem (I'm even on i386), so there's obviously some respect in which I'm pushing an envelope here. For example, here's the post-NAT header of a NATted ping: 45 ip_hl=5 ip_v=4 00 ip_tos [Routine] 00 54 ip_len [84] (dropping 2 trailing bytes) 1a d8 ip_id 00 00 ip_off [0] fe ip_ttl [254] 01 ip_p [ICMP] 18 82 ip_sum 45 c4 b5 1d ip_src [69.196.181.29] d8 2e 05 0d ip_dst [216.46.5.13] ip_sum is definitely wrong. But the pre-nat source address was 172.16.0.3, and if I compute the checksum with 45 c4 b5 1d replaced with ac 10 00 03, I find that 18 82 is correct. There's another machine (also i386 4.0.1) which is set up to do NAT for two others, and it works for one of them and doesn't work for the other. The only thing that I can see that could be related is that in each of the failure cases, the failing address is an alias address on the interface in question rather than being the principal address.(Continue reading)
RSS Feed