Windows 7 NIC Priority Configuration
Все современные выпуски Windows предоставляют возможность расставлять приоритеты сетевых интерфейсов, используя несколько смущающе названную Network Interface Metric
. Для большинства домашних / простых сетей этот параметр принимает окончательное решение о том, какой сетевой адаптер использовать, когда никакие другие критерии явно не навязывают это решение; в основном, когда оба NIC выглядят одинаково жизнеспособными с точки зрения сетевого стека, например, когда место назначения доступно на обоих NIC, оба NIC имеют действительный настроенный шлюз по умолчанию, оба NIC находятся в одной подсети и т. д.
Метрика интерфейса
Параметр метрики интерфейса '1' является наивысшим приоритетом (NIC используется первым). Автоматические настройки, предоставляемые окнами по умолчанию, зависят от скорости соединения; с целью приоритезации высокоскоростных каналов связи по сравнению с более низкой скоростью. Это несовершенный способ обработки различий в производительности между Wi-Fi и проводным Ethernet, так как пропускная способность может быть очень хорошей в сети Wi-Fi, но почти всегда она менее надежна и непротиворечива.
Другими словами, как вы заметили, подключение к проводной локальной сети должно иметь приоритет над Wi-Fi почти в каждом сценарии, и по умолчанию (по крайней мере, в win 7) это не так.
Избегайте сложных конфигураций, по крайней мере, на начальном этапе
Вы можете настроить эти параметры, чтобы настроить очень точно настроенный контроль над тем, какой сетевой адаптер используется для какого трафика, но я думаю, что это выходит за рамки того, что вы ищете. Вы могли бы настроить все таким образом, например, если к определенному диапазону серверов / веб-сайтов / IP-адресов следует обращаться с помощью сетевой карты, которой обычно не был бы присвоен приоритет, и этот диапазон хоста / IP-адреса доступен для обеих сетевых карт. Внесите минимальные изменения, оцените результаты и внесите дополнительные, незначительные изменения еще раз, если это необходимо. Если, как упоминалось выше, маршруты жестко заданы интерфейсом, у вас почти наверняка возникнут проблемы, когда доступен только один из двух сетевых адаптеров.
Связанные настройки конфигурации
Кроме того, вы можете настроить связанный параметр "Метрика шлюза", который определяет приоритет того, какой сетевой адаптер используется, когда 2 или более сетевых карт имеют один и тот же шлюз. Есть некоторые свидетельства того, что в некоторых случаях изменение метрики интерфейса является недостаточным, и метрика шлюза также должна быть настроена. Если вы не видите изменений после внесения изменений в метрику интерфейса, посмотрите на шаг 3 ниже, а также ссылку внизу для подробностей об изменении метрики шлюза (та же команда, другой параметр).
Метрика интерфейса оценивается в первую очередь, поэтому вам не нужно углубляться в этот параметр, но он доступен, если вам нужно. Чтобы уточнить комментарий сверху - при подходе, который я описываю, вам не нужно менять / удалять шлюзы из любого интерфейса; в лучшем случае это заставит вас использовать статический IP, в худшем - вызвать проблемы с подключением, когда проводная локальная сеть недоступна.
Как изменить параметры метрики сетевого интерфейса
- Откройте командную строку администратора и введите следующую команду:
netstat -rn
или для более подробной информации netsh int ip show config
Это выведет список всех сетевых карт в системе. Число в крайнем левом столбце (netstat) является метрикой интерфейса NIC (или приоритет).
Вы хотите установить для проводного сетевого адаптера более низкий показатель, чем для беспроводного сетевого адаптера. Как только вы увидите, какие значения установлены, настройте проводной сетевой адаптер на очень низкое число (например, 2) и Wi-Fi на высокое (например, 64). Синтаксис для применения этих настроек следующий. Я использую названия "Wired" и "Wifi" для двух сетевых карт; используйте правильные значения из вашей системы (вывод шага 1 будет содержать правильные имена ".
set interface "Wired" metric=2
set interface "Wifi" metric=64
Если вы обнаружите, что вам нужно изменить метрику шлюза, синтаксис:
set interface "Wired" gwmetric=2
set interface "Wifi" gwmetric=64
Обратите внимание - выбранные мной значения метрик произвольны. Если у вас есть только две сетевые карты, то (теоретически) нет разницы между набором карт с метрикой 2 и 3 по сравнению с метрикой 2 и 64. Обычно интерфейс обратной связи установлен в метрику 1; если это так, не устанавливайте ни один из «настоящих» сетевых адаптеров на один - в некоторых случаях это может привести к отправке локального трафика на маршрутизатор (простой пример - пингование себя по IP-адресу вашей локальной сети), которое обычно направляется на интерфейс обратной связи - вы можете случайно это изменить). В случае пинга это почти не волнует, но многие приложения используют локальные сетевые сокеты, привязанные к IP-адресу локальной сети, с намерением, чтобы этот трафик фактически никогда не покидал ПК, и в этой ситуации снижение производительности было бы невысоким. тривиальный.
Дополнительная информация:
Вот пара ссылок на эту тему; это один показывает , как настроить эти параметры с помощью графического интерфейса, и это одна дает отрывочные данные о случайной необходимости изменять как интерфейс , так и метрику шлюза. Раньше мне не приходилось настраивать параметры метрики шлюза, но за пару минут поиска я натолкнулся на эту тему достаточно, чтобы убедиться, что она включена в этот ответ.
Оценка эффективности изменения настроек:
- Простой способ узнать, какой сетевой адаптер используется, - это использовать команду traceroute и посмотреть, из какого сетевого адаптера она выходит (целевые локальные хосты локальной сети, а также различные интернет-хосты, чтобы обеспечить согласованное распределение использования сетевых карт между LAN и WAN).
- В зависимости от того, насколько глубоко вы хотите погрузиться в это, идеальный способ получить реальную статистическую информацию об использовании сетевых карт - это использовать программу захвата пакетов, такую как wireshark.
- Самым простым способом было бы просмотреть количество передач пакетов по состоянию каждого сетевого интерфейса и увидеть относительные скорости между двумя сетевыми картами.
Если все действительно плохо, динамически настройте параметры метрики
В худшем случае, если качественное соединение действительно переключается с проводного на беспроводное и обратно в течение дня, нетрудно составить небольшой скрипт для настройки значений метрики сетевого адаптера на основе текущей производительности сети. Вкратце, вы должны написать сценарий PowerShell или пакетный файл, который провел быструю проверку подключения к сети, оценить результаты каждого сетевого адаптера и заставить сценарий изменить значение показателя, чтобы установить приоритет для сетевого адаптера с наилучшей на данный момент производительностью. Я не уверен, насколько плохими становятся соединения - если это так плохо, что вы отбрасываете пакеты, вы можете протестировать NIC с помощью простого теста ping. В противном случае вам может потребоваться выполнить тест скорости загрузки и задержки (например, speedtest.net).
Обновить
Я немного неверно истолковал ваш вопрос.
Если вы можете предоставить подробную информацию о том, что вам нужно сделать, я могу предоставить вам подробную информацию о том, как это сделать.
Если вы хотите помочь с этим, пожалуйста, постарайтесь предоставить как можно больше подробностей, так как здесь имеется большое количество возможностей, и вопросы предназначены для того, чтобы перейти к простейшему подходу.
Если это может быть выполнено на уровне IP-адреса - это означает, что весь трафик на данный IP-адрес должен выходить через определенный интерфейс - тогда это будет легко сделать. Если это зависит от протокола / приложения / порта и / или хоста, то это более сложно.
Дополнительный вопрос:
- Можем ли мы отфильтровать это на уровне IP-адреса или это зависит от приложения?
Что такое IP-адрес или диапазон IP-адресов, которые должны использовать определенный интерфейс. Если критерий (вопрос 1) не является IP-адресом, предоставьте подробную информацию о приложении, которому необходимо использовать определенный интерфейс.
Является ли проблема в том, что если «выбран» неправильный интерфейс, то коммуникация полностью завершается неудачей? Это означает, что удаленный хост не может быть доступен через этот интерфейс? Или использование неправильного интерфейса просто снижает производительность?
Пожалуйста, запустите следующие 2 быстрых теста, чтобы мы могли почувствовать закулисную конфигурацию маршрутизации на локальной сети. Мне не ясно, существуют ли маршруты между этими сетями, так что это проверит.
а. Сначала определите, какой шлюз по умолчанию используется для проводного интерфейса Ethernet (это не в вашем примере). Для согласованности используйте шлюз IPv4, если у вас есть ipv4 и ipv6.
б. Отключите проводной интерфейс Ethernet (оставив только Wi-Fi) и попытайтесь пропинговать шлюз по умолчанию для проводных интерфейсов Ethernet. Что просходит?
с. Теперь снова подключите проводной Ethernet и отсоедините адаптер Wi-Fi.
д. Пингуйте шлюз по умолчанию интерфейса Wi-Fi (в вашем вопросе 10.240.54.254), и дайте мне знать, что происходит.
Чтобы решить эту проблему, достаточно добавить статический маршрут (одиночная команда), но я предоставлю подробности на основе вашего ответа.