Roteie um programa específico para uma NIC específica

Roteie um programa específico para uma NIC específica

Eu tenho duas conexões de internet, uma conexão de internet tem latência muito alta, tem flutuação na conexão (há uma árvore entre a torre e o CPE Wifi, então o sinal sobe e desce), mas é bom para download, pois a conexão nunca vai para 0. Outro uma é a conexão fixa, eles têm um forte limite de download.

Então, o que eu quero é usar o wlan0 para alguns programas específicos, como Steam e download, etc., basicamente programas que consomem muitos dados.

E eu quero usar o wlan1 para navegar e outras coisas, menos dados.

Resumindo, quero rotear programas específicos através de uma NIC específica, não tenho um intervalo específico de IPs.

Posso conectar os dois através de wifi, pois tenho 1 adaptador wifi extra (wlan0,wlan1), como outra opção posso conectar um com ethernet (wlan0,eth0)

Responder1

Poderia ser possível se o seu processo tivesse algoiptablespode corresponder, como um grupo específico. Por exemplo, dado um group to-wifi, você poderia ter regras de iptables como estas:

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

(E com o encaminhamento ativado: sysctl -w net.ipv4.conf.all.forwarding=1.)

Então, se você executar, por exemplo, o Steam assim:

sg to-wifi steam

Qualquer tráfego desse processo Steam (+ quaisquer processos filhos) será encaminhado de qualquer interface pela qual ele estava passando para a interface sem fio.

Nunca tentei o redirecionamento de interface para interface, mas costumava iptablesredirecionar todo o tráfego TCP do Steam para um proxy combinando grupos, portanto, essas regras podem não ser suficientes por si só.


Isso pode ser feito criando grupos para cada interface e adicionando-se a eles. Por exemplo, usando oaddgroupeaddusercomandos:

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

Você precisa fazer login novamente para que suas novas associações ao grupo tenham efeito.

Relacionado:

Responder2

Pelo que eu sei, não há como fazer isso.

Isso pode ser feito com regras de iptables específicasportos+ destinos que eles usam para fazer suas conexões, mas não conheço uma forma local de fazer isso.

informação relacionada