Como configurar o roteamento do Linux para enviar pacotes pela mesma interface em que foram recebidos?

Como configurar o roteamento do Linux para enviar pacotes pela mesma interface em que foram recebidos?

Eu tenho a seguinte tabela de roteamento

10.0.1.0/24 dev eth0  proto kernel  scope link  src 10.0.1.151
10.0.10.0/24 dev eth1  proto kernel  scope link  src 10.0.10.151
default via 10.0.1.1 dev eth0

Tenho dois links, um passa por uma LAN e, pelo 10.0.1.1 sai para a Internet. O outro é um roteador ADSL (10.0.10.1) conectado diretamente à eth1.

Se eu conectar de fora ao endereço IP externo 10.0.10.1, recebo um tempo limite. Se eu alterar a rota padrão para 10.0.10.1, a conexão externa ao endereço IP externo 10.0.10.1 funcionará. Então isso parece um problema de roteamento (os pacotes vêm de 10.0.10.1, mas saem de 10.0.1.1, sendo a rota padrão), mas não tenho certeza de como resolver isso.

Na verdade, quero que a rota padrão seja 10.0.1.1, só quero responder às solicitações para o IP externo de 10.0.10.1 através da mesma interface.

Responder1

você precisa usar tabelas de roteamento avançadas oferecidas pelo iproute2. Você configura 2 tabelas e envia todo o tráfego vindo de um ip para uma tabela específica, nesta tabela você pode definir um gateway padrão. Para definir a rota padrão global, basta preferir uma interface à outra por meio de métricas.

um exemplo:

  • adicionando os gateways padrão às tabelas:

ip route add default via 10.0.1.1 tabela 101

ip route add default via 10.0.10.1 tabela 102

  • adicione uma regra para que todo tráfego proveniente de um IP específico seja enviado para a tabela:

adição de regra de ip de 10.0.1.151 pesquisa 101

adição de regra de ip de 10.0.10.151 pesquisa 102

  • adicione a métrica qual gateway preferir:

rota ip adicionar padrão via 10.0.1.151 métrica 1000

rota ip adicionar padrão via 10.0.10.151 métrica 2000

espero que isso ajude você a começar :)

informação relacionada