Направить определенную программу на определенную сетевую карту

Направить определенную программу на определенную сетевую карту

У меня два интернет-подключения. У одного интернет-подключения очень высокая задержка, соединение нестабильно (между вышкой и точкой доступа Wi-Fi есть дерево, поэтому сигнал то усиливается, то ослабевает), но загрузка идет нормально, так как соединение никогда не обрывается до нуля. Другое подключение — стационарное, у него высокие лимиты на загрузку.

Итак, я хочу использовать wlan0 для нескольких конкретных программ, таких как Steam, загрузка и т. д., в основном для программ, которые потребляют много данных.

И я хочу использовать wlan1 для просмотра веб-страниц и других задач, с меньшим объемом данных.

Короче говоря, я хочу направить определенные программы через определенную сетевую карту, у меня нет определенного диапазона IP-адресов.

Я могу подключить их оба через Wi-Fi, так как у меня есть 1 дополнительный Wi-Fi-адаптер (wlan0,wlan1), как вариант я могу подключить один через Ethernet (wlan0,eth0)

решение1

Это может быть возможно, если в вашем процессе есть что-тоiptablesможет сопоставляться с, например, определенной группой. Например, если задана группа to-wifi, вы можете иметь такие правила iptables:

iptables -A FORWARD --in-interface wlan0 -j ACCEPT
iptables -t nat -A OUTPUT -m owner --gid-owner to-wifi --out-interface wlan0 -j MASQUERADE  

(И с включенной пересылкой: sysctl -w net.ipv4.conf.all.forwarding=1.)

Тогда, если запустить, например, Steam таким образом:

sg to-wifi steam

Любой трафик от этого процесса Steam (+ любые дочерние процессы) будет перенаправлен с любого интерфейса, через который он проходил, на беспроводной интерфейс.

Я никогда не пробовал перенаправление между интерфейсами, но я использовал iptablesперенаправление всего TCP-трафика из Steam на прокси-сервер путем сопоставления с группами, поэтому этих правил может быть недостаточно.


Это можно сделать, создав группы для каждого интерфейса и добавив себя в них. Например, используяaddgroupиadduserкоманды:

sudo addgroup to-wifi
sudo adduser $USER to-wifi
sudo addgroup for-eth0
sudo adduser $USER for-eth0

Чтобы новое членство в группе вступило в силу, вам необходимо повторно войти в систему.

Связанный:

решение2

Насколько мне известно, сделать это невозможно.

Это можно сделать с помощью правил iptables для конкретногопорты+ пункты назначения, которые они используют для своих стыковок, но я не знаю, как это сделать на местном уровне.

Связанный контент