Eu tenho um sistema que possui duas interfaces de rede com endereços IP diferentes, ambos no intervalo de endereços públicos (embora via NAT no caso do primeiro) e ambos com gateways diferentes. (Longa história, é para fins de teste)
O problema é que, no momento, se eu tentar executar o ping no endereço na segunda interface, a rota padrão será exibida através da primeira interface - e nunca chegará corretamente.
É possível garantir que as respostas sempre saiam pela mesma interface de rede (e com o mesmo IP de origem) em que foram inseridas? E se sim, como?
debian
networking
ipv4
Shadur
fonte
fonte
Respostas:
Você está entendendo mal o problema. Nem todo pacote é uma resposta e nem todo pacote pode ser correspondido a outro pacote, de modo que "a mesma interface de rede em que eles entraram" faz sentido. O que você deseja fazer é selecionar o gateway para um pacote com base em seu endereço IP de origem.
Isso é chamado de roteamento baseado em origem ou roteamento de política. Você pode fazer isso com uma regra simples
iptables
, mas a melhor maneira é configurar duas tabelas de roteamento, uma para cada endereço de origem público:Primeiro, crie duas tabelas (Substitua <NAME1> e <NAME2> por nomes sensíveis para seus dois provedores, o mesmo com IP1, DEV1 e assim por diante):
Adicione um gateway a cada tabela de roteamento (se necessário):
Em seguida, uma rota padrão:
Em seguida, as regras para selecionar a tabela de rotas com base no endereço de origem:
Consulte Roteamento para vários uplinks / provedores para obter mais detalhes.
fonte
A resposta de David Schwartz é excelente, mas você pode simplificar um pouco as regras de roteamento tendo apenas uma tabela extra e usando sua rota padrão para a outra. Eu tenho um servidor que está por trás de dois gateways NAT e recentemente passei pelo processo de recriar esse cenário entre várias VMs. Minha
/etc/network/interfaces
aparência é assim:(isto é para uma configuração em que os dois ISPs são Optus e iiNet, daí o nome da tabela 'optus')
Isso, mais a linha
/etc/iproute2/rt_tables
criação da tabela, deve ser tudo o que você precisa. Você terá dois endereços IP; o tráfego de 192.168.13.13 será eliminado por meio de 192.168.13.11 e o tráfego de 192.168.13.213 será eliminado por meio de 192.168.13.10. Configure esses dois gateways para fazer o encaminhamento de porta adequadamente (192.168.13.11 encaminha as coisas para 192.168.13.13 e 192.168.13.10 encaminha as coisas para 192.168.13.213), e o restante deve cuidar de si.Pode ser necessário ajustar um pouco as coisas para sua situação, pois você está usando IPs públicos diretamente, mas algo assim ainda deve funcionar. Além disso, é muito mais fácil fazer essas coisas
/etc/network/interfaces
e gerenciar o arquivo com o git, em vez de tentar lembrar como você o configurou, dois anos depois, quando o sistema precisa ser reiniciado!fonte
Exemplo de rede dupla
Este exemplo está mostrando como um adicional
eth1
com10.130.0.2
máscara de rede255.255.255.255
e gateway10.130.0.1
pode ser disponibilizado para serviços vinculados a ele, comoping -I eth1 8.8.8.8
Tecnicamente, somos:
fonte