Задать вопрос

Как направить траффик разных приложений по разным шлюзам?

Всем доброго дня, как известно одной сетевой карте можно задать более одного IP адреса из разных сетей а также более одного шлюза, но вот как этим воспользоваться так чтобы траффик из одних приложений направить в одну из заданных сетей и соответственно по одному шлюза а траффик других приложений в другую сеть по другому шлюзу? Есть например прога Proxifier в ней можно задать подобное разделение траффика от разных приложений но там можно отправить траффик только по различным сетевым интерфейсам (если их более одного) но нельзя пределах одного интерфейса но по разным шлюзам, еще можно разделить траффик по разным прокси-серверам но не по шлюзам, интересует Windows
  • Вопрос задан
  • 959 просмотров
Подписаться 4 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 5
NeiroNx
@NeiroNx
Программист
Для этого проги должны связываться только с определенными адресами. Допустим яндекс диск обращается к облаку яндекса а это весьма конкретный перечень адресов, который можно указать в маршрутах статической маршрутизации.
Ответ написан
Комментировать
b1ora
@b1ora
Контакты в профиле
На MikroTik в Mangle можно выделить нужный трафик, например отдельно web, отдельно voip и направить их по разным маршрутам
Ответ написан
Комментировать
@dimone73
Устройство, которое анализирует трафик от приложений, называется Межсетевой экран. По протоколам, по портам, адресам и т.п. Программный, аппаратный.
Ответ написан
@LAG_LAGbI4
kerio control можно научить через разные шлюза отправлять разный тип трафика.

в винде можно маршруты прописать.

какую практическую задачу вы пытаетесь решить этими извращениями?
Ответ написан
@Belkogoth
Есть еще способ через QoS, но чутка костыльный.
Предисловие: у меня дома и на работе стоят микротики. Для доступа на забугорные закрытые сайты у меня поднят Mikrotik CHR на виртуальном сервере (VPS) в другой стране, а микроты дома и на работе подключены к нему по SSTP и гоняют туда траффик на списки адресов, указываемые вручную, я это сделал чтобы не ковыряться с VPN на каждом личном устройстве, то есть подключаюсь дома\на работе по вайфаю\проводу к роутеру, а если я вне дома - по мобильному интернету, к примеру, по Wireguard до самого VPN, и все нужные сайты прозрачно работают.
Потребовалось гонять весь траффик через VPN для отдельного приложения. На андроиде это делается просто, Wireguard, да и многие другие VPN-программы позволяют заворачивать траффик отдельных программ, но не в винде, там такого попросту нету (хотя может и есть, но скрыто или через цепочку приемов, я не разбирался еще).
И вот для этого можно использовать костыль - маркировать DSCP метками пакеты, которые отправляет приложение, это позволяет делать групповая политика QoS. Причем как отдельное приложение по указанному пути, так и любое с указанным именем. Но для реализации, сразу отмечу, снаружи должен быть роутер, который позволяет настраивать правила обработки таких пакетов, к примеру, Mikrotik, Openwrt-роутер, Zyxel, они тоже умеют. и т.п.
1. Включаем всю эту бадягу в реестре:<br />
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters, меняем (если нет - создаем) параметр DWORD с именем DisableUserTOSSetting и значением 0.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Qos. Если нет раздела QoS - создаем его,
внутри создаем строковый параметр с именем Do not use NLA и значением 1. перезагружаемся. Разумеется, должны быть включены в свойствах сетевого адаптера службы типа QoS и т.п., на современных машинах и на современной винде обычно там все стоит по умолчанию.

2. Создаем групповую политику на основе QoS
Открываем gpedit.msc (или ищем в пуске изменение групповой политики), там открываем Политика "Локальный компьютер"---Конфигурация компьютера---Конфигурация Windows, нажимаем правой кнопкой на пункт "QoS на основе политики.", выбираем создание новой политики. В окне заполняем поле "Имя политики" (как удобно, например, по имени программы и задаваемому DSCР), указываем значение DSCP. Лучше начинать "с конца" - 63.
Жмем "Далее", в след окне выбираем "только приложениям с именем исполняемого файла". Можно указать конкретный путь к программе, можно просто указать имя приложения, например, opera.exe. В случае имени винда будет назначать DSCP метку всем процессам с этим именем, то есть обновления программы не повлияют.
В следующих окнах можно оставлять как есть, но в последнем окне в пункте "Выберите протокол, в которм применяется политика QoS" выбираем TCP и UDP. Все, жмем "готово".

Теперь самая соль. В десятке и 11-й (как в других хз) это правило обычно не работает (проверено Wireshark и Torch на микротике), потому что система по какой-то балде решает по умолчанию применять правило к доменному сетевому профилю. Ща исправим.
Правим политику через Powershell
Открываем Powershell от имени администратора, набираем
NetQosPolicy.
Должно выдать наше правило с его именем и параметрами, что-то вроде такого:
Name : Opera DSCP
Owner : Group Policy (Machine)
NetworkProfile : domain
Precedence : 127
AppPathName : opera.exe
JobObject :
IPProtocol : Both
DSCPValue : 63
Запоминаем имя в строке "Name"Теперь вводим:
set-NetQosPolicy "Opera DSCP" -NetworkProfile "All". Если не выдал ничего красным, а просто молча проглотил команду - все хорошо, теперь IP-пакеты приложения будут отправляться в маршрут по умолчанию на роутер с DSCP-меткой.

Собсно, всё, теперь траффик приложения будет метиться DSCP-меткой, можно создать несколько правил, которые будут разные приложения метить одной, либо разными метками. На роутере, или через что там ПК выходит в интернет, можно создать правило, отправляющее все пакеты с этими метками по нужному маршруту. Лично у меня на микротике просто в Mangle создано правило:
/ip/firewall/mangle/ add chain=prerouting in-interface=(порт, куда воткнут ПК, либо вместо этого src-address=адрес пк\ноутбука с Windows в сети) dscp=63 action=route dst-address=(внутренний адрес VPN сервера в той подсети, которую сервер выдал роутеру) comment="комментарий"

Я вот хз, может в самом Windows через политики как-то можно этот траффик отправлять по какому-либо маршруту так же?*) Если знает кто - поделитесь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы