tcpdump: неверная cksum от клиента к интерфейсу localhost даже после отключения разгрузки

У меня странная проблема. В Linux у меня открыты два окна. один работающий tcpdump и один работающий Curl. Я использовал Curl, чтобы попытаться установить соединение с локальным хостом, и tcpdump регистрирует неверные ошибки контрольной суммы. Это журнал из окна tcpdump:

      bash-4.2# tcpdump -evvvt -i lo
tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
00:00:00:00:00:00 (oui Ethernet) > 00:00:00:00:00:00 (oui Ethernet), ethertype
IPv4 (0x0800), length 74: (tos 0x0, ttl 64, id 18215, offset 0, flags [DF], 
proto TCP (6), length 60)
localhost.37550 > localhost.http: Flags [S], cksum 0xfe30 (incorrect -> 0x5d4b), 
seq 112438199, win 32792, options [mss 16396,sackOK,TS val 4648080 ecr 0,nop,wscale 9], length 0
00:00:00:00:00:00 (oui Ethernet) > 00:00:00:00:00:00 (oui Ethernet), ethertype 
IPv4 (0x0800), length 54: (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
localhost.http > localhost.37550: Flags [R.], cksum 0x6c64 (correct), seq 0, ack 112438200, win 0, length 0

И окно скручивания не предлагает ничего интересного. Если бы я использовал максимальную степень детализации, все, что я получу, это подключение к 127.0.0.1. затем он немедленно завершается сообщением о невозможности подключения к хосту.

Затем я использую ethtool -k, чтобы посмотреть, какие параметры я могу настроить, чтобы отключить разгрузку, поскольку многие люди утверждают, что моя проблема связана с разгрузкой. Вот параметры после корректировок, которые я мог внести:

      Offload parameters for lo:                                                                      
rx-checksumming: on                                                                             
tx-checksumming: on                                                                             
scatter-gather: on                                                                              
tcp-segmentation-offload: off                                                                   
udp-fragmentation-offload: off                                                                  
generic-segmentation-offload: off                                                               
generic-receive-offload: off                                                                    
large-receive-offload: off
rx-vlan-offload: off
tx-vlan-offload: off
ntuple-filters: off
receive-hashing: off

Я пытался отключить все настройки, но те, которые я не могу отключить, я получаю следующие ошибки:

      bash-4.2# ethtool -K lo rx off
Cannot set device rx csum settings: Operation not supported
bash-4.2# ethtool -K lo tx off
Cannot set device tx csum settings: Operation not supported
bash-4.2# ethtool -K lo sg off
Cannot set device scatter-gather settings: Operation not supported

А устройство lo — это интерфейс локального хоста.

Как это исправить, чтобы при использовании tcpdump или любого другого инструмента TCP-пакетов я никогда не получал ошибок контрольной суммы от утилит, которые успешно подключались к другим IP-адресам с помощью TCP?

0 ответов

Другие вопросы по тегам