Назад | Перейти на главную страницу

Linux debian как отключить проверку контрольной суммы TCP?

Пытаясь открыть TCP-порт для хоста B из A, я обнаружил проблему в трехстороннем TCP-рукопожатии между двумя хостами.

Клиент / хост A отправляет SYN хосту B, хост B отправляет SYN / ACK, затем хост A отправляет пакет RST.

Я проанализировал пакеты в wirehark и обнаружил, что пакет SYN / ACK не имеет той же контрольной суммы TCP после того, как он был отправлен A и получен B. В остальном это тот же самый пакет. Wireshark помечает пакет как «ACKed невидимый сегмент».

У меня нет прыжков между двумя машинами. Эти два хоста - это виртуальные машины в хостах VMware ESXi. Виртуальные машины находятся на разных хостах. Они напрямую подключены к одной и той же VLAN в ESXi. Клиентские виртуальные машины находятся на ESXi v4.1.0. Я открыл весь брандмауэр для своих тестов. И, наконец, я полностью отключил разгрузку контрольной суммы TCP. Я провел такой же тест с виртуальной машиной, которая находится на том же хосте, и результат тот же. Клиентская виртуальная машина работает под управлением debian Jessie 8.8, а другие виртуальные машины - debian wheezy.

Я подозреваю, что ESXi изменяет контрольную сумму между двумя машинами.

Поскольку у меня нет большого опыта работы с VMware ESXi и ее отладки, я хотел бы знать, как «отключить» контрольную сумму TCP? На данный момент это будет обходной путь и проверка того, что проблема действительно связана с контрольной суммой.

Я попытался добавить такое правило исключения iptables на хосте A: iptables -t mangle -A PREROUTING -s #IP_HOST_B# -o eth0 -j CHECKSUM --checksum-fill

Но ничего не меняет.