Асимметричный пинг между двумя хостами Windows 7

429
Dave

Windows 7 Host A имеет два физических адаптера, каждый с одним IP: 10.20.157.10/24 10.20.159.10/24

Windows 7 Host B имеет два физических адаптера, каждый с одним IP: 10.20.156.10/24 10.20.158.10/24

Windows 7 Host A имеет два статических маршрута: 10.20.156.0/24 через 10.20.157.1, 10.20.158.0/24 через 10.20.157.1

Windows 7 Host B имеет два статических маршрута: 10.20.157.0/24 через 10.20.156.1, 10.20.159.0/24 через 10.20.156.1

На хосте А я пинг 10.20.158.10. Эхо-запрос отправляется на адаптер с IP 10.20.157.10 и отправляется на шлюз 10.20.157.1 для маршрутизации. Захват пакета показывает, что эхо-запрос успешно поступает на интерфейс хоста B 10.20.158.10.

Эхо-ответ должен быть сгенерирован с IP-адресом получателя 10.20.157.10 (откуда пришел эхо-запрос). Это приведет к выходу на интерфейс с IP-адресом 10.20.156.10 и переходу на шлюз 10.20.156.1 для маршрутизации. Захват пакета показывает, что такой эхо-ответ не генерируется.

Отличительной особенностью этой ситуации является то, что входной и выходной интерфейсы на хосте B различны.

Я не смог найти ничего, что говорит, что эхо-ответ не должен генерироваться в этом случае.

Является ли это поведение запрета эхо-ответа на выход на интерфейсе, отличном от того, на который эхо-запрос поступил корректно или некорректно по RFC, или RFC оставляют решение до реализации?

Если решение оставлено на усмотрение реализации, есть ли способ заставить Windows 7 разрешить вывод эхо-ответа?

0

1 ответ на вопрос

0
Dave

Модель "слабого хоста" должна использоваться на рассматриваемых интерфейсах.

Во-первых, получите индекс ваших красных интерфейсов:

netsh interface ipv4 show interface 

Затем выполните эти команды (используя индексы интерфейса 13 и 15 в качестве примера):

netsh interface ipv4 set interface 13 weakhostsend=enabled netsh interface ipv4 set interface 15 weakhostsend=enabled netsh interface ipv4 set interface 13 weakhostreceive=enabled netsh interface ipv4 set interface 15 weakhostreceive=enabled 

Чтобы проверить этот параметр, выполните эту команду (используя в качестве примера индекс интерфейса 13):

netsh interface ipv4 show interface 13