liga o software a diferentes interfaces de rede

36

Eu tenho duas interfaces de rede diferentes, conectadas a duas redes. Um é um eth0 e o outro um wlan0. Como posso dizer a um software para usar apenas uma interface específica?

Basicamente, quero que o Firefox use eth0 porque é a rede lan da universidade e preciso acessar sites de intranet, a outra é uma rede wifi aberta à Internet e quero ligá-la ao Chrome.

Estou trabalhando e preciso usar a intranet. Então eth0 é minha escolha, mas eth0 é uma intranet sem acesso à internet (obviamente). Desde que eu quero acesso à internet estou conectado a wlan0 (universidade wifi para estudantes).

O problema é que, se eu conectei as duas vezes, o navegador procura www.stackoverflow.com usando eth0. Então, eu queria atribuir um navegador para usar apenas uma interface específica.

    
por dierre 29.09.2010 / 00:00

2 respostas

23

Você não pode vincular o software cliente a interfaces de rede específicas, mas você pode dizer ao kernel que você só quer usar uma rede interface para alguns endereços IP e outro para todo o resto. Isso é chamado de "roteamento" e pode ser configurado usando os comandos /sbin/route e /sbin/ip .

Se eu ler sua pergunta corretamente, você deseja se conectar ao IP da intranet endereços usando interface eth0 e para a Internet usando interface wlan0 .

Se você executar o comando ip route list , deverá ver uma saída como o seguinte (os números serão diferentes, e você também pode ter mais linhas nele):

$ ip route list
10.60.44.0/25 dev eth0  proto kernel  scope link  src 10.60.44.39  metric 1 
192.168.80.0/21 dev wlan0  proto kernel  scope link  src 192.168.84.122  metric 2 
[...]
default via 10.60.44.1 dev eth0  proto static 

As duas primeiras linhas informam sobre as redes conectadas interfaces eth0 e wlan0 : tráfego de rede direcionado para computadores nessas redes será enviado diretamente para eles através do interface correspondente.

A última linha informa qual é a "rota padrão": se o seu computador quer falar com um computador em uma rede a qual não está conectado (por exemplo, o servidor stackoverflow.com), ele roteará o tráfego via eth0 , realing através do host 10.60.44.1 (chamado de "gateway padrão").

Portanto, para encaminhar o tráfego da Internet com wlan0 você deve garantir que a última linha na saída ip route list diz algo como:

default via A.B.C.D dev wlan0 proto static

em que A.B.C.D é o endereço IP do gateway na LAN sem fio. Se a saída não contém "dev wlan0", você pode alterá-lo com o comando:

sudo ip route change to default dev wlan0 via A.B.C.D

Você pode descobrir o A.B.C.D correto para wlan0 de duas maneiras:

  1. Procure no diretório /var/lib/dhcp3/ : você deve encontrar dhclient-...-wlan0.lease arquivos. Abra o mais recente e procure por uma linha com a string option router nela: o resto da linha informa o endereço IP A.B.C.D .

  2. Pergunte aos seus administradores de rede locais. (Provavelmente a melhor coisa a de qualquer forma.)

Com esta configuração, você deve ser capaz de:

  • navegue na Internet por meio de wlan0
  • navegue na sua intranet através de eth0 , desde que esteja em uma única rede .

Se a sua intranet ocupar várias redes, você precisará adicionar rotas para eles - e isso é definitivamente algo que requer que você para interagir com os administradores da rede local. : -)

    
por Riccardo Murri 29.09.2010 / 10:56
1

"ip netns" cria namespaces de rede. Você pode criar interfaces virtuais (ip link add ... veth) e associá-las aos namespaces.

Os namespaces podem ser configurados para usar rotas diferentes, por exemplo (usando interfaces diferentes)

Em seguida, você pode executar comandos nesse namespace, que usarão o namespace criado. "ip netns exec NAME cmd ..."

Fonte: link

    
por olivervbk 06.05.2014 / 17:03