Como um aplicativo (como o Firefox) pode ser forçado a usar uma determinada interface de rede?


20

Eu tenho duas interfaces: eth0 e wlan0 em um notebook.

Possíveis casos de uso:

  • eth0 me concede acesso à Internet e o wlan0 está atualmente conectado a um roteador que não possui conectividade com a Internet. Para fins de desenvolvimento, eu preciso me conectar à wlan0 por padrão, mas use eth0 para navegar
  • eth0 e wlan0 estão conectados à Internet. Para um aplicativo de torrent, eth0 deve ser usado para velocidade, mas para portabilidade do notebook, o SSH deve ter uma conexão através de wlan0
  • eth0 é uma conexão de fio, wlan0 é uma conexão sem fio. Dados sensíveis devem ser transferidos por eth0, mas outro tráfego também pode passar por wlan0.

Existe uma maneira de forçar aplicativos (como nc.traditionalou firefox) a usar uma determinada interface de rede? Um invólucro semelhante também example-wrapper eth0 programé bom se esse programa existir. Seria bom se ele pudesse ser configurado no Firefox (em tempo de execução). Eu gostaria de evitar soluções IPTables, se possível.


4
isso também é útil para várias conexões à Internet, com uma fazendo torrent enquanto outra sendo usada para navegar.
Iamgopal

Você deseja usar rotas diferentes com base no protocolo / aplicativo, precisará de tabelas de ip para isso.
João Pinto

11
Não sei como você pode fazer isso sem algo que mapeie o tráfego da camada7 (aplicativo) para uma porta específica ou filtre de outra forma com base em informações de aplicativos de nível superior (o que exigiria inspeção do tráfego). Portanto, embora o iptables especificamente não seja necessário, qualquer solução que envolva um wrapper precisaria interagir de alguma forma com a política tcp ou ip. Não sei como fazer isso sem uma rede layer2 ou layer3 que direcione o tráfego para outro lugar.
22411 belacqua

Respostas:



1

Você pode usar uma abordagem mais complexa de marcação de conexões e política de rotas.
Funcionará bem se você tiver um usuário que execute um software e outra.
Dessa forma, você pode marcar as conexões de um usuário e usar uma tabela de roteamento específica, enquanto todos os outros usarão o padrão.
O documento básico para entender tudo está em: http://www.lartc.org/lartc.html
Também um exemplo para duas conexões que você pode ver aqui: /unix/58635/iptables- set-mark-route-diferent-portas-através-diferentes-interfaces
Você pode usar o "dono" iptables módulo que marcará as conexões para permitir que a política de roteamento.


O roteamento de políticas funciona para usuários diferentes, mas não para um aplicativo em execução sob um usuário (conforme descrito no OP). LD_PRELOADparece o caminho a seguir (não por programas maliciosos / por razões de segurança), talvez alguém possa elaborar uma publicação de Bob Lebins?
Lekensteyn

0

Aqui está uma solução de amostra. Ele usa o servidor SOCKS, configurado na máquina atual para rotear as conecções. Cada aplicativo deve ser configurado para usar cada servidor.


3
Parece um proxy HTTP, funciona com outros protocolos, como uma conexão entre duas instâncias do netcat?
precisa saber é o seguinte

0

Você também pode usar uma máquina de estação de trabalho VMware para compartilhar diferentes interfaces de rede, que eu faço muito para baixar de uma interface e deixar a outra para o meu Netflix.

Você precisa configurar o ethX e o wlanX no VMware, mas depois de configurá-lo, estará pronto para fazer o download ou navegar.

É bem suave. Você também pode usar um firewall para vincular interfaces, o que também funciona muito bem.


Embora funcione para esse aplicativo específico, infelizmente não é utilizável com outros aplicativos fora da VM, como o Firefox.
Lekensteyn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.