Use interface específica para conexões de saída (Ubuntu 9.04)

6

Eu tenho duas interfaces ethernet no meu computador, que está executando o Ubuntu 9.04. Ambas as interfaces usam IPs estáticos, mas usam gateways separados. Meu arquivo /etc/network/interfaces é parecido com isto:

auto eth0 eth1
iface eth0 inet static
  address 10.0.0.5
  netmask 255.255.255.0
  gateway 10.0.0.1

iface eth1 inet static
  address 192.168.2.5
  netmask 255.255.255.0
  gateway 192.168.2.1

Eu quero que todo o tráfego indo para a internet em geral seja executado por meio de eth0 , mas parece que deseja passar por eth1 . Existe uma maneira de canalizar meu tráfego de saída geral através de eth0 e usar apenas eth1 para o tráfego para sua sub-rede?

A resposta deve ser persistente; isto é, deve sobreviver à reinicialização sem um superusuário que precise executar um comando após a reinicialização.

EDIT : conforme solicitado, aqui está a saída do meu comando route -n :

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
0.0.0.0         192.168.2.1     0.0.0.0         UG    100    0        0 eth1
0.0.0.0         10.0.0.1        0.0.0.0         UG    100    0        0 eth0
    
por Marcus Griep 15.07.2009 / 16:40

5 respostas

12

Você deve ter apenas um gateway padrão. Se você remover a linha de gateway da eth1, tudo funcionará (depois que a rede for reiniciada).

    
por 15.07.2009 / 16:50
2

Modificar a tabela de roteamento com rota, conforme sugerido, corrigirá isso temporariamente, mas será revertido para o estado atual na próxima inicialização.

Seria possível definir regras de rota em /etc/rc.local ou algum tipo de script de init, mas, neste caso, a opção mais simples é remover o gateway da eth1 no arquivo de interfaces.

Ao remover esse gateway, esse sistema ainda usará automaticamente eth1 como a rota 192.168.2 / 24, mas roteará todo o outro tráfego por meio de eth0.

    
por 15.07.2009 / 16:59
2

Remova o gateway da eth1 em / etc / network / interfaces e adicione-o como uma rota estática:

route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1

Com isso, 10.0.0.1 será seu gateway padrão e eth1 será usado apenas para conectar-se à rede 192.168.2.0

    
por 15.07.2009 / 16:52
1

Veja sua tabela de roteamento atual digitando a rota. Sua máquina usará o primeiro gw padrão que ele vê na tabela de roteamento. Isso será indicado por padrão ou 0.0.0.0 como o destino. Se você quiser que apenas eth1 seja usado para a rede local 192.168.2.0/24, remova o comando do gateway. Isso deve tornar o default gt da eth1 o seu padrão.

    
por 15.07.2009 / 16:54
1

Estou usando essa solução há mais de 4 anos e tenho publicou no wiki do Linode , e tem funcionado perfeitamente. Edite /etc/network/interfaces e faça corresponder isso:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address <the outbound IP>
    netmask <the netmask for the outbound IP, usually 255.255.255.0>
    gateway <the gateway for the outbound IP>
    up /sbin/ip addr add <the primary IP>/24 dev eth0
    
por 09.03.2018 / 00:07