На днях нужно было воспользоваться статической маршрутизацией на компьютере под Windows 7 с двумя сетевыми картами.

Первая сетевая карта получает IP настройки (IP адрес, шлюз по умолчанию, днс  и пр.) от DHCP сервера.

На второй сетевой карте IP задан вручную и шлюз по умолчанию не указан.

Мне необходимо было прописать на определенную сеть маршрут через вторую карту.

Однако, когда я прописал новый маршрут командой: «route add …», пакеты отправляемые в сеть назначения всё равно шли через основной шлюз (получаемый по DHCP), через первую сетевую карту, а не через вторую.

Посмотрев таблицу маршрутизации, командой «route print«, оказалось, что метрика у маршрута по умолчанию (основной шлюз) стоит меньше, чем у моего статического маршрута. Следовательно пакеты отправлялись на основной шлюз через первый интерфейс.

Я попытался, удалить статический маршрут, и прописать его заново с явным указанием метрики. Но посмотрев опять таблицу маршрутизации, выяснилось, что метрика у моего маршрута не та, что я указал, а больше указанного значения на 30.

Оказывается по умолчанию в Windows 7 (в XP и Vista не проверял, не знаю) метрика интерфейса назначается автоматически, и к указанной явно метрике, при создании маршрута (командой  «route add …») прибавляется это автоматическое число.

 

Что бы отключить автоматическое назначение метрики на интерфейсе, и задать своё значение, нужно:

— Зайти в свойства сетевого подключения (интерфейс на котором нужно отключить автоматическое назначение метрики)

Свойства сетевого подключения

— На вкладке «Сеть» выбрать «Протокол Интернета 4 (TCP/IPv4)» и нажать на кнопку «Свойства»

свойства ipv4

— В появившемся окне нажать кнопку «Дополнительно…»

Дополнительные свойства ipv4

 — Во вкладке «Параметры IP» снять галочку с «Автоматическое назначение метрики». А в поле «Метрика интерфейса» ввести своё число (например 2), тогда к заданной метрике в команде «route add…» прибавится только двойка.

Отключить автоматическое назначение метрики

 

После выполнения вышеописанных действий, станет возможным задать статический маршрут с метрикой ниже метрики основного шлюза (у меня метрика на основном шлюзе равна 10).

 

8 комментариев: Windows 7 и метрика маршрутов

  • Yanis говорит:

    Спасибо! то что нужно!

  • Алексей говорит:

    Вы должны были явно указать интерфейс при создании маршрута, а не извращаться с метриками. Как-то вот так route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1 if 0x20003

  • Артём говорит:

    ОГРОМНЕЙШЕЕ СПАСИБИЩЕ!!!
    Реально помогло когда всё сделал так как написано!!!

  • Aleksandr говорит:

    Увы, оперирование крыжиками в Windows 7 бесполезно в случае PPP соединений, например, если вы настраиваете VPN посредством L2TP. При этом винда тасует интерфейсы как хоет и присваивает эзернетовским интерфейсам гигатские метрики. Так что правильнее и надежнее делать ув написал Алексей — прописать маршрут в таблицу маршрутизации

  • RegBack говорит:

    Ну скажем так, в принципе понятно.

  • Михаил говорит:

    На интерфейсе поднято 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 в этом плане мне больше понравился. Там по умолчанию маршрут не становится главным, а спокойно добавляются нужные. И таких проблем нет.

    • Aleksandrm говорит:

      Не прописывай постоянный маршрут (не ставь ключ -p), а прописывай маршрут скриптом после установления связи. После отключения соединения маршрут будет пропадать. Маршрут прописывай через шлюз в удаленной сети (поэтому его адрес должен быть известен и постоянен), а не через интерфейс, так как его номер постоянно будет изменяться при каждом новом подключении. Что-то типа
      route add 192.168.0.0 mask 255.255.255.0 192.168.11.1
      Для добавления маршрута под простым пользователем создай задание в планировщике по событию подключения через туннель и с крыжиком «запускать с наивысшими правами». В задании поставь на выполнение свой скрипт с добавлением маршрута.
      Задание создавай в …/Microsoft/Windows/Ras

      Триггер :При событии
      Простое.
      Журнал: Приложение(или Application в ангельской версии)
      Источник: RasClient
      Код события: 20225 (Пользователь имярек успешно подключился к серверу удаленного доступа)
      Остальное можешь более тонко настроить как надо тебе. Например, на вкладке Условия выбрать «Запускать только при подключении к следующей сети» — может быть удобно, если у тебя несколько разных VPN подключений.
      Если надо убрать «мелькание» выполняющегося скрипта при установлении соединения, то в Действиях в дополнительные аргументы добавляй ключ /b

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *