![Как направить определенный трафик через определенное сетевое соединение?](https://rvso.com/image/1502884/%D0%9A%D0%B0%D0%BA%20%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%20%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B5%20%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%3F.png)
надеюсь, я правильно выразился!
Использование Windows 7 Pro SP1
На моем ноутбуке мне приходится использовать как проводное, так и беспроводное соединение — к некоторому трафику (например, доступ к определенным системам) я могу получить доступ только через проводное соединение, а к другому — только через беспроводное соединение.
Оба являются локальными связями компании — просто они не очень-то связаны между собой.
В данный момент мне приходится переключаться между ними в течение дня — если я оставлю оба включенными, то будет неясно, какое соединение Windows попытается использовать (обычно это проводное), поэтому я отключаю/отключаю то, которое мне не нужно, а затем возвращаюсь к предыдущему, когда оно мне понадобится.
Существует ли лучший способ направить определенные приложения/протоколы на определенное соединение?
Или, если это невозможно, можно ли вместо этого перенаправить определенные URL-адреса (это, по крайней мере, сократит частоту переключений!)
Редактироватьдля добавления информации IPCONFIG, которая показывает, что оба соединения используют одну и ту же подсеть
Wireless LAN adapter Wireless Network Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::f1ff:5ffe:6093:ebf%13
IPv4 Address. . . . . . . . . . . : 10.240.54.12
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.240.54.254
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : domain.local
Link-local IPv6 Address . . . . . : fe80::9088:177:1936:10ac%11
IPv4 Address. . . . . . . . . . . : 172.31.161.83
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.31.161.1
решение1
Конфигурация приоритета сетевого адаптера Windows 7
Все современные выпуски Windows предоставляют возможность назначать приоритеты сетевым интерфейсам с помощью несколько запутанно названного Network Interface Metric
. Для большинства домашних / простых сетей этот параметр принимает окончательное решение о том, какой сетевой адаптер использовать, когда никакие другие критерии явно не вынуждают к такому решению; в основном, когда оба сетевых адаптера выглядят одинаково жизнеспособными с точки зрения сетевого стека, например, когда пункт назначения доступен на обоих сетевых адаптерах, оба сетевых адаптера имеют допустимый настроенный шлюз по умолчанию, оба сетевых адаптера находятся в одной подсети и т. д.
Метрика интерфейса
Настройка метрики интерфейса «1» имеет наивысший приоритет (в первую очередь используется NIC). Автоматические настройки, предоставляемые Windows по умолчанию, в общих чертах основаны на скорости соединения; с намерением отдать приоритет высокоскоростным соединениям над низкоскоростными. Это несовершенный способ обработки различий в производительности между WiFi и проводным Ethernet, поскольку пропускная способность может быть очень хорошей в сети WiFi, но почти всегда менее надежна и последовательна.
Другими словами, как вы отметили, проводное LAN-подключение должно иметь приоритет над Wi-Fi почти в каждом сценарии, но по умолчанию (по крайней мере, в Win 7) это не так.
Избегайте сложных конфигураций, по крайней мере на начальном этапе.
Вы можете настроить эти параметры, чтобы настроить очень тонкий контроль над тем, какой сетевой адаптер используется для какого трафика, но я думаю, что это выходит за рамки того, что вы ищете. Вы бы настроили все таким образом, например, если к определенному серверу / веб-сайту / диапазону IP-адресов должен быть доступ с использованием сетевого адаптера, которому обычно не дается приоритет, и этот хост / диапазон IP-адресов доступен для обоих сетевых адаптеров. Внесите минимальные изменения, оцените результаты и внесите дополнительные, незначительные изменения снова, если необходимо. Если, как упоминалось выше, маршруты жестко заданы интерфейсом, у вас почти наверняка возникнут проблемы, когда доступен только один из двух сетевых адаптеров.
Связанные параметры конфигурации
Кроме того, вы можете настроить связанный параметр «Метрика шлюза», который определяет приоритет используемой сетевой карты, когда 2 или более сетевых карт имеют один и тот же шлюз. Есть некоторые свидетельства того, что существуют случаи, когда изменение метрики интерфейса недостаточно, и метрику шлюза также необходимо настроить. Если вы не видите никаких изменений после внесения изменений в метрику интерфейса, посмотрите на шаг 3 ниже, а также на ссылку внизу для получения подробной информации об изменении метрики шлюза (та же команда, другой параметр).
Сначала оценивается метрика интерфейса, поэтому вам не придется копаться в этой настройке, но она доступна, если вам это нужно. Чтобы прояснить комментарий выше — с подходом, который я описываю, вам не нужно менять/удалять шлюзы ни с одного из интерфейсов; что в лучшем случае заставит вас использовать статический IP, в худшем — вызовет проблемы с подключением, когда проводная локальная сеть недоступна.
Как изменить параметры метрики сетевого интерфейса
- Откройте командную строку администратора и введите следующую команду:
netstat -rn
или для более подробной информацииnetsh int ip show config
Это выведет список всех сетевых карт в системе. Число в самом левом столбце (netstat) — это метрика интерфейса сетевой карты (она же приоритет).
Вы хотите установить для проводной сетевой карты более низкую метрику, чем для беспроводной сетевой карты. После того, как вы увидите, какие значения установлены, настройте проводную сетевую карту на очень низкое число (например, 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-адресу локальной сети, с намерением, чтобы этот трафик никогда не покидал ПК, и в этой ситуации снижение производительности будет нетривиальным.
Больше информации:
Вот несколько ссылок по этой теме;этот показываеткак настроить эти параметры с помощью графического интерфейса, иВот этотпредоставляет анекдотические свидетельства о необходимости время от времени изменять как метрики интерфейса, так и шлюза. Мне раньше не приходилось настраивать параметры метрики шлюза, но я достаточно часто сталкивался с этой темой за пару минут поиска в Google, поэтому мне захотелось убедиться, что она освещена в этом ответе.
Оценка эффективности изменений настроек:
- Простой способ узнать, какая сетевая карта используется, — воспользоваться командой traceroute и посмотреть, с какой сетевой карты она выходит (выберите локальные хосты LAN, а также различные интернет-хосты, чтобы убедиться, что распределение использования сетевых карт одинаково между LAN и WAN).
- В зависимости от того, насколько глубоко вы хотите в это погрузиться, идеальным способом получить реальную статистическую информацию об использовании сетевой карты является использование программы захвата пакетов, такой как Wireshark.
- Самый простой способ — просмотреть количество переданных пакетов по каждому статусу сетевого интерфейса и сравнить относительные скорости между двумя сетевыми картами.
Если дела обстоят совсем плохо, динамически корректируйте настройки показателей.
В худшем случае, если качество соединения действительно меняется с проводного на беспроводное и обратно в течение дня, не составит труда составить небольшой скрипт для корректировки значений метрик сетевой карты на основе текущей производительности сети. Вкратце, вы можете написать скрипт powershell или пакетный файл, который запустит быстрый тест вашего сетевого подключения, оценит результаты каждой сетевой карты и изменит значение метрики, чтобы назначить приоритет сетевой карте с текущей «лучшей» производительностью. Я не уверен, насколько плохи соединения — если они настолько плохи, что вы теряете пакеты, вы можете проверить сетевые карты с помощью простого ping-теста. В противном случае вам может потребоваться провести тест скорости загрузки и задержки (например, speedtest.net).
Обновлять
Я немного неправильно понял ваш вопрос.
Если вы можете предоставить подробную информацию о том, что вам нужно сделать, я смогу предоставить вам подробную информацию о том, как это сделать.
Если вам нужна помощь, постарайтесь предоставить как можно больше подробностей, поскольку здесь существует множество возможностей, а вопросы направлены на то, чтобы свести их к самому простому подходу.
Если это можно обработать на уровне IP-адреса, то есть весь трафик на заданный IP-адрес должен выходить через определенный интерфейс, то это будет легко сделать. Если это зависит от протокола/приложения/порта и/или хоста, то это сложнее.
Дополнительный вопрос:
- Можно ли фильтровать это на уровне IP-адреса или это зависит от приложения?
Какой IP-адрес или диапазон IP-адресов должен использовать определенный интерфейс? Если критерий (вопрос 1) не IP-адрес, то предоставьте сведения о приложении, которому необходимо использовать определенный интерфейс.
Проблема в том, что если "выбран" не тот интерфейс, то связь полностью прерывается? То есть удаленный хост фактически не может быть достигнут через этот интерфейс? Или использование неправильного интерфейса просто ухудшает производительность?
Пожалуйста, запустите следующие 2 быстрых теста, чтобы мы могли получить представление о скрытой конфигурации маршрутизации в локальной сети. Мне не ясно, существуют ли маршруты между этими сетями, так что это проверит это.
а. Сначала определите, какой шлюз по умолчанию используется для интерфейса проводного Ethernet (в вашем примере его нет). Для согласованности используйте шлюз IPv4, если у вас есть и ipv4, и ipv6.
б. Отключите проводной интерфейс Ethernet (оставив только Wi-Fi) и попробуйте выполнить ping на шлюз по умолчанию проводного интерфейса Ethernet. Что происходит?
в) Теперь снова подключите проводной Ethernet и отключите адаптер Wi-Fi.
г. Проверьте связь со шлюзом по умолчанию интерфейса Wi-Fi (в вашем вопросе 10.240.54.254) и сообщите мне, что произойдет.
Решение этой проблемы может быть таким же простым, как добавление статического маршрута (одной командой), но я предоставлю подробную информацию на основе вашего ответа.