Mike_Ro
@Mike_Ro
$ run войтивайти

Как выйти в интернет по определенному интернет-соединению, если имеется несколько интернет-соединений?

Приветствую!

Имеется: комп (windows/linux на выбор) с несколькими usb входами, в каждом по usb/sim модему. Соответственно, единовременно на компе имеется несколько интернет-соединений.

Вопрос: как выйти в интернет программе на C# по определенному интернет-соединению. При этом, другие программы, которые используют другие интернет-соединения не должны лишиться доступа к интернету.

Несколько виртуалок: создать несколько виртуалок, в каждую завести по 1 интернет-соединению, и в каждой запускать необходимый софт - не подходит. Ибо периодически, необходимо выйти в интернет с другого интернет-соединения...

В какую сторону копать, что почитать?
  • Вопрос задан
  • 613 просмотров
Решения вопроса 5
SignFinder
@SignFinder
Wintel\Unix Engineer
В Linux есть возможность оперировать маршрутизацией для маркированного трафика через пакет iproute2.
Если вы сможете промаркировать трафик от конкретного приложения, например через iptables -j MARK, то потом его можно будет "перемаршрутизировать" на любой исходящий интерфейс.
Ответ написан
ValdikSS
@ValdikSS
Если вам нужно только подключаться к удалённым хостам из программы (а не принимать входящие соединения), и если программа использует только TCP (а не UDP или другие протоколы), то достаточно соединение (сокет) за-bind-ить к конкретному сетевому интерфейсу или конкретному IP-адресу.
Этот способ универсален и прост, работает в Windows и Linux, не требует дополнительных настроек, помимо наличия маршрутов по умолчанию для всех интерфейсов (метрика значения не имеет).

То, что вам пишут выше, про маркировку пакетов и назначения конкретных маршрутов — альтернативные, более «правильные» способы, подходящие для более общих случаев, но сложные в настройке.
Ответ написан
Jump
@Jump Куратор тега Windows
Системный администратор со стажем.
Можете указать конкретный шлюз и трафик пойдет через него.
Можете указать маршрут на конкретный адрес - через нужный интерфейс.
Можете использовать файервол, маркировать нужные пакеты и отправлять через нужный интерфейс.
Ответ написан
@mprog54
Кокон тыжпрограммиста
ForceBindIP (https://soft.mydiv.net/win/download-ForceBindIP.html)
Консольная утилита под Windows для принудительного назначения сетевого интерфейса приложению.

Варианты использования:
1. По умолчанию
Создать ярлык к вашей программе со строкой запуска:
ForceBindIP 192.168.1.1 c:\Program.exe
Где 192.168.1.1 - локальный IP нужного интерфейса а c:\Program.exe - путь к папке с программой.
Вместо IP можно указать GUID сетевого интерфейса: прим. {E9DE0D15-CA8D-4E41-8F37-79461FCA515C}
2. Через код
Создать функцию на C#, которая выведет список сетевых интерфейсов с их IP адресами. После чего, перезапустить своё приложение через команду запуска (пример в п.1). ForceBindIP.exe положить в папку со своей программой.
3. GUI интерфейс на Java (https://sourceforge.net/projects/forcebindip-gui/)
Открываете GUI и щелкаете мышкой :)

P.S Если вы хотите сделать свои домашние мобильные "носки" под SMM, директ и т.п, при больших объемах советую всё-же воспользоваться известными сервисами (если интересно, пишите в личку).

Reference:
https://soft.mydiv.net/win/download-ForceBindIP.html
https://translate.google.com/translate?hl=ru&sl=zh...
forum.oszone.net/post-2830221-36.html
https://sourceforge.net/projects/forcebindip-gui/
https://qastack.ru/superuser/410483/can-i-route-pr...
https://forum.ixbt.com/topic.cgi?id=14:30017:926#926
Ответ написан
@vabka Куратор тега C#
Токсичный
Как вариант - взять докер и с его помощью дать доступ каждому приложению к определённому интерфейсу.
Но у меня есть ощущение, что можно как-то иначе сделать. Так что я подпишусь на вопрос.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы