На днях нужно было воспользоваться статической маршрутизацией на компьютере под Windows 7 с двумя сетевыми картами.
Первая сетевая карта получает IP настройки (IP адрес, шлюз по умолчанию, днс и пр.) от DHCP сервера.
На второй сетевой карте IP задан вручную и шлюз по умолчанию не указан.
Мне необходимо было прописать на определенную сеть маршрут через вторую карту.
Однако, когда я прописал новый маршрут командой: «route add …», пакеты отправляемые в сеть назначения всё равно шли через основной шлюз (получаемый по DHCP), через первую сетевую карту, а не через вторую.
Посмотрев таблицу маршрутизации, командой «route print«, оказалось, что метрика у маршрута по умолчанию (основной шлюз) стоит меньше, чем у моего статического маршрута. Следовательно пакеты отправлялись на основной шлюз через первый интерфейс.
Я попытался, удалить статический маршрут, и прописать его заново с явным указанием метрики. Но посмотрев опять таблицу маршрутизации, выяснилось, что метрика у моего маршрута не та, что я указал, а больше указанного значения на 30.
Оказывается по умолчанию в Windows 7 (в XP и Vista не проверял, не знаю) метрика интерфейса назначается автоматически, и к указанной явно метрике, при создании маршрута (командой «route add …») прибавляется это автоматическое число.
Что бы отключить автоматическое назначение метрики на интерфейсе, и задать своё значение, нужно:
— Зайти в свойства сетевого подключения (интерфейс на котором нужно отключить автоматическое назначение метрики)
— На вкладке «Сеть» выбрать «Протокол Интернета 4 (TCP/IPv4)» и нажать на кнопку «Свойства»
— В появившемся окне нажать кнопку «Дополнительно…»
— Во вкладке «Параметры IP» снять галочку с «Автоматическое назначение метрики». А в поле «Метрика интерфейса» ввести своё число (например 2), тогда к заданной метрике в команде «route add…» прибавится только двойка.
После выполнения вышеописанных действий, станет возможным задать статический маршрут с метрикой ниже метрики основного шлюза (у меня метрика на основном шлюзе равна 10).
Спасибо! то что нужно!
Вы должны были явно указать интерфейс при создании маршрута, а не извращаться с метриками. Как-то вот так route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1 if 0x20003
ОГРОМНЕЙШЕЕ СПАСИБИЩЕ!!!
Реально помогло когда всё сделал так как написано!!!
Увы, оперирование крыжиками в Windows 7 бесполезно в случае PPP соединений, например, если вы настраиваете VPN посредством L2TP. При этом винда тасует интерфейсы как хоет и присваивает эзернетовским интерфейсам гигатские метрики. Так что правильнее и надежнее делать ув написал Алексей — прописать маршрут в таблицу маршрутизации
Ну скажем так, в принципе понятно.
На интерфейсе поднято 2 IP адреса
192.168.0.101 маска 255.255.255.0 шлюз 192.168.0.1
и через вкладку дополнительно 192.4.8.25 с маской 255.255.255.0
Windows упорно пытается разрешить сетевое имя удаленного компьютера через ip 192.4.8.25, т.к. этот адрес считает «первым» из-за меньшего адреса. Все компьютеры находятся в сети 192.168.0.0, а вторая сеть нужна для доступа к одному узлу по его IP.
Подскажите, можно ли настроить метрику не на весь интерфейс, а отдельно на каждый адрес прописанный статически. Т.е. 192.168.0.101 с метрикой 10, и 192.4.8.25 с метрикой 100
А с вот таким траблом что можно сделать?
У меня в Win7 (и 8 и 10) устанавливается PP2P VPN, не постоянный, а по требованию.
Скриптом или в CMD добавляю статический маршрут на интерфейс, всё отлично.
Разрываю соединение.
Подымаю его снова.
Маршрут на месте, он же статический, но в него пакеты не идут.
Тупо в консоли повторяю последнюю команду route -p add ……
Винда ругается что такой маршрут уже есть и пакеты преспокойно начинают туда идти.
Это одна беда. А вторая беда в том, что в Винде выше 7, route add выполняется только из под админских прав. Учить пользователей «запустить от имени администратора»?
Kerio VPN в этом плане мне больше понравился. Там по умолчанию маршрут не становится главным, а спокойно добавляются нужные. И таких проблем нет.
Не прописывай постоянный маршрут (не ставь ключ -p), а прописывай маршрут скриптом после установления связи. После отключения соединения маршрут будет пропадать. Маршрут прописывай через шлюз в удаленной сети (поэтому его адрес должен быть известен и постоянен), а не через интерфейс, так как его номер постоянно будет изменяться при каждом новом подключении. Что-то типа
route add 192.168.0.0 mask 255.255.255.0 192.168.11.1
Для добавления маршрута под простым пользователем создай задание в планировщике по событию подключения через туннель и с крыжиком «запускать с наивысшими правами». В задании поставь на выполнение свой скрипт с добавлением маршрута.
Задание создавай в …/Microsoft/Windows/Ras
Триггер :При событии
Простое.
Журнал: Приложение(или Application в ангельской версии)
Источник: RasClient
Код события: 20225 (Пользователь имярек успешно подключился к серверу удаленного доступа)
Остальное можешь более тонко настроить как надо тебе. Например, на вкладке Условия выбрать «Запускать только при подключении к следующей сети» — может быть удобно, если у тебя несколько разных VPN подключений.
Если надо убрать «мелькание» выполняющегося скрипта при установлении соединения, то в Действиях в дополнительные аргументы добавляй ключ /b