Configure o gateway para duas NICs através da rota estática

1

OK, eu tenho dois NICs eth0 e eth1 . Cada um sobre seu próprio gateway padrão. Só posso acessar a rede em eth0 , já que essa é a primeira NIC a ter uma rota padrão adicionada. Como posso configurar minhas rotas estáticas para permitir que ambas acessem suas sub-redes separadas?

eth0: 10.0.0.3 netmask 255.255.255.0 gw 10.0.0.254
eth1: 10.0.1.1 netmask 255.255.255.0 gw 10.0.1.26

EDITAR:

Question2

Se não houver rota na tabela de roteamento no Linux, ela usa eth0 por padrão?

    
por Blackninja543 15.08.2012 / 19:27

3 respostas

5

Você pode fazer política de roteamento , ou seja, ter várias tabelas de roteamento e selecionar a tabela de roteamento para usar com base em seu endereço de origem (em geral, outros campos, mas não relevante aqui). Observe que os números da tabela mostrados abaixo são arbitrariamente escolhidos.

Eu não sei como fazer o roteamento de políticas usando route do pacote net-tools . Está demorando muito de qualquer maneira. Use ip do pacote iproute2 .

Você também precisará ter o roteamento de políticas ativado em seu kernel. As principais distribuições fazem isso por padrão, se não me engano.

Comece de um estado limpo, se apropriado:

# Assumes that previous configuration properly set address and route scopes
ip route flush all proto static scope global

Em seguida, adicione as tabelas para cada interface.

ip route add 10.0.0.3/24 dev eth0 table 5000
ip route add default via 10.0.0.254 dev eth0 table 5000

ip route add 10.0.1.1/24 dev eth1 table 5001
ip route add default via 10.0.1.26 dev eth1 table 5001

Em seguida, define-se regras de encaminhamento :

ip rule add from 10.0.0.3 table 5000
ip rule add from 10.0.1.1 table 5001

O último passo é configurar o gateway padrão para quando você é o iniciador , por assim dizer.

Se você quiser usar somente eth0 como o gateway padrão, faça algo assim:

ip route add default via 10.0.0.254 dev eth0

Note que não existe tabela especificada , por isso, a predefinição é main. Usar eth1 é deixado como um exercício para o leitor.

Se você quiser balancear a carga entre os dois, pode fazer rotas de múltiplos caminhos usando nexthop .

ip route add default nexthop via 10.0.0.254 dev eth0 weight 1 nexthop via 10.0.1.26 dev eth1 weight 1

Quanto à questão dois, nenhum Linux cria automaticamente uma rota padrão. Se não houver nenhuma rota local para seu tráfego, você receberá um erro EHOSTUNREACH .

EDITAR: Note que nenhuma das opções acima deve ser tomada para indicar que o IP é stateful, que tem alguma coisa a ver com conexões, ou mesmo uma noção inerente de um fluxo. Significa meramente que assumimos que um fluxo tem sempre os mesmos pontos de extremidade e que ligamos um fluxo ao gateway, dependendo do nosso endereço de origem. Isso é simplesmente necessário porque muitos gateways (especialmente no contexto de ISPs residenciais) fazem a filtragem de caminhos reversos.

    
por 17.05.2013 / 18:30
2

Em circunstâncias normais, você só pode ter um gateway padrão . É o padrão depois de tudo. Todo o tráfego que não corresponder a uma rota estática mais específica será excluído do gateway padrão em eth0 .

Se você quiser que todo o tráfego apenas da sub-rede 10.0.1.0/24 fique fora de eth1 e o restante do tráfego use eth0 , faça o que @AlanCurry disse e faça algo como route add -net 10.0.1.0 netmask 255.255.255.0 dev eth1

    
por 15.08.2012 / 19:53
0

A maneira mais simples:

ip route flush all
ip route add 10.0.0.0/24 dev eth0
ip route add 10.0.3.0/24 dev eth1
ip route add default via 10.0.0.254

Isso lhe dará acesso a ambas as sub-redes nos dispositivos apropriados e rotear todo o tráfego da Internet através da eth0 no gateway 10.0.0.254.

Você pode configurá-los para persistir através de reinicializações / reinicializações com regras em versões baseadas em Red Hat em: /etc/sysconfig/network-scripts/route-ethX .

/etc/sysconfig/network-scripts/route-eth0 :

 10.0.0.0/24 dev eth0
 default via 10.0.0.254

/etc/sysconfig/network-scripts/route-eth1 :

10.0.3.0/24 dev eth1
    
por 06.07.2013 / 20:53