PDA

Показать полную графическую версию : [решено] Windows Vista, 7, 2008: Обход системой статического маршрута при недоступности шлюза


Dystopian
04-03-2011, 13:53
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
Подобная ситуация описана также здесь (http://social.technet.microsoft.com/Forums/en-US/itprovistanetworking/thread/b90be4fb-2403-4649-9295-6b615307181d) и здесь (http://social.technet.microsoft.com/Forums/ru-RU/ws2008ru/thread/d473a243-3bbe-4452-b862-5c565086ddf0). Судя по ответу во второй теме, microsoft считает, что подобное поведение системы нормальное.

QRS
10-03-2011, 21:54
Dystopian, в качестве обхода можно предложить добавить на 172.16.1.1 запрет прохождения пакетов от 192.168.168.1 на 192.168.168.6.

Dystopian
11-03-2011, 12:59
QRS, к сожалению, Вне зависимости от того, доступен ли 192.168.168.6 через шлюз 172.16.1.1, пакеты пытыются ходить через неправильную сетевуху.К тому же, система вернется на правильную сетевуху только в течение 60 секунд, что в моем случае слишком долго.




© OSzone.net 2001-2012