Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Сетевые технологии (http://forum.oszone.net/forumdisplay.php?f=31)
-   -   [решено] Windows Vista, 7, 2008: Обход системой статического маршрута при недоступности шлюза (http://forum.oszone.net/showthread.php?t=201105)

Dystopian 04-03-2011 13:53 1627124

Windows Vista, 7, 2008: Обход системой статического маршрута при недоступности шлюза
 
Windows 7 Профессиональная. 2 сетевухи:
1: 172.16.1.10/24, осн. шлюз 172.16.1.1
2: 192.168.168.1/30
Добавлен статический маршрут
Код:

route add 192.168.168.6 192.168.168.2
В таблице маршрутизации маршрут появился
Код:

192.168.168.6  255.255.255.255    192.168.168.2    192.168.168.1    21
Начинаю пинговать 192.168.168.6.
Если шлюз 192.168.168.2 доступен, проблем нет: пакеты ходят через нужную сетевуху.
Если же шлюз 192.168.168.2 не доступен (не отвечает на ARP-запросы), возникает проблема: система отправляет 3 ARP-запроса на 192.168.168.2 и, не получив ответа, начинает посылать пакеты через другую сетевуху на шлюз 172.16.1.1 (он всегда доступен). Вне зависимости от того, доступен ли 192.168.168.6 через шлюз 172.16.1.1, пакеты пытыются ходить через неправильную сетевуху.
ping при этом демонстрирует следуюущее:
Код:

Обмен пакетами с 192.168.168.6 по с 32 байтами данных:
Ответ от 192.168.168.1: Заданный узел недоступен.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.

3 ARP-запроса (снифил Wireshark-ом) отправляются в течение 1-2 секунд, т.е. во время посылки первого ICMP-пакета. После них на правильной сетевухе каждые 60 секунд проскакивает 1 ARP-запрос, и, когда 192.168.168.2 ответит на него, пакеты начинают ходить правильно. Но пока 192.168.168.2 молчит, в arp-таблице вот что:
Код:

arp -a -v

Интерфейс: 172.16.1.10 --- 0x10
  адрес в Интернете      Физический адрес      Тип
  172.16.1.1            00-15-17-53-67-89    динамический

Интерфейс: 192.168.168.1 --- 0x11
  адрес в Интернете      Физический адрес      Тип
  192.168.168.2        00-00-00-00-00-00    недопустимый

Без ключа -v вторая часть таблицы не отображается.

При удалении из arp-таблицы 192.168.168.2 система опять начинает с 3х запросов и далее по той же схеме. При добавлении статической arp-записи пакеты всегда ходят правильно.
Вопрос: как заставить систему не переходить на другой интерфейс, если шлюз не доступен, а зажимать статический мак для 192.168.168.2 нельзя?

Также важно:
  • Поведение системы, на мой взгляд, очень похоже на Dead Gateway Detection, поэтому первое, что было сделано, это установка в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters параметра DeadGWDetectDefault и в разделах Parameters\Interfaces для каждой сетевухи параметра EnableDeadGWDetect = 0. Естественно, с перезагрузкой. Не помогло:(
  • Протокол не имеет значения (тестил ICMP, TCP, UDP).
  • Игры с метрикой маршрута не помогают.
  • В XP такой проблемы нет; в ней, также как и на *NIX-системах, на правильной сетевухе продолжают отправляться arp-запросы на 192.168.168.2.
  • Проблема, предположительно, проявляется в Vista, 7, 2008 (исходя из нескольких прочтенных мною документов Microsoft).
  • Отключение обоих топологов в компонентах подключений не помогает.
  • Игры с добавлением маршрутов на 127.0.0.1 и создание loopback-адаптера с добавлением маршрутов на него тоже не помогают.

Dystopian 10-03-2011 10:48 1631357

Подобная ситуация описана также здесь и здесь. Судя по ответу во второй теме, microsoft считает, что подобное поведение системы нормальное.

QRS 10-03-2011 21:54 1631878

Dystopian, в качестве обхода можно предложить добавить на 172.16.1.1 запрет прохождения пакетов от 192.168.168.1 на 192.168.168.6.

Dystopian 11-03-2011 12:59 1632313

QRS, к сожалению,
Цитата:

Вне зависимости от того, доступен ли 192.168.168.6 через шлюз 172.16.1.1, пакеты пытыются ходить через неправильную сетевуху.
К тому же, система вернется на правильную сетевуху только в течение 60 секунд, что в моем случае слишком долго.


Время: 17:40.

Время: 17:40.
© OSzone.net 2001-