пятница, 17 мая 2013 г.

TCP/UDP checksum error при работе с tcpdump


В tcpdump для всех исходящих пакетов выдается сообщение вида:


# tcpdump -i eth0 -vvv -nn udp dst port 53
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
21:15:01.729683 IP (tos 0x0, ttl 127, id 1809, offset 0, flags [none], proto UDP (17), length 74)
    192.168.1.58.51030 > 172.16.1.20.53: [udp sum ok] 28658+% [1au] A? dsn14.d.skype.net. ar: . OPT UDPsize=4000 OK (46)
21:15:01.730013 IP (tos 0x0, ttl 64, id 52620, offset 0, flags [none], proto UDP (17), length 74)
    172.16.1.20.2649 > 212.8.163.98.53: [bad udp cksum a59a!] 35085% [1au] A? dsn14.d.skype.net. ar: . OPT UDPsize=4096 OK (46)

21:15:01.845489 IP (tos 0x0, ttl 64, id 18689, offset 0, flags [none], proto UDP (17), length 83)
    172.16.1.20.12824 > 213.155.153.131.53: [bad udp cksum 13e!] 53472% [1au] A? dsn14.skype-dsn.akadns.net. ar: . OPT UDPsize=4096 OK (55)

 

Контрольные суммы расчитываются сетевой картой, тогда как tcpdump перехватывает пакеты на уровне ядра, до того как они будут вычисленны.

Можно посмотреть и отключить offload утилитой ethtool:

# ethtool -k eth0 | grep checksumming
rx-checksumming: on
tx-checksumming: on


#ethtool -K eth0 tx off rx off

Комментариев нет: