Responda o pedido no gateway correto

1

Eu tenho um cenário bastante simples. Infelizmente não encontrei resposta correspondente a este problema. Eu tenho dois roteadores Linux (= gateways) para diferentes WANs (192.168.0.70 e 192.168.0.80). Ambos estão encaminhando a porta 50000 para um servidor Linux 192.168.0.60. O servidor possui apenas uma interface com o gateway padrão 192.168.0.70. Sem configuração adicional, você tem esse comportamento:

solicitação incomming sobre 192.168.0.70 - > resposta funcionando (por causa do gateway padrão)

solicitação incomming sobre 192.168.0.80 - > não funciona porque a resposta demora 192.168.0.70

Como posso gerenciar que as solicitações através de 192.168.0.80 sejam enviadas de volta através de 192.168.0.80?

    
por Billylo 30.09.2015 / 01:46

1 resposta

0

Teremos que marcar NOVAS conexões com um marcador, então distinguir os pacotes de saída com base no marcador e usar qualquer uma das duas tabelas de roteamento para rotea-las para o gateway apropriado. É possível que você tenha que carregar o módulo CONNTRACK,

          modprobe ip_conntrack

Vamos chamar o MAC70 do endereço MAC do gateway 192.168.0.70, e o MAC80 do endereço MAC do 192.168.0.80. Então

       iptables -A INPUT -m state --state NEW -m mac --mac-source MAC70 -p tcp --dport 50000 -j CONNMARK --set-mark 1
       iptables -A INPUT -m state --state NEW -m mac --mac-source MAC80 -p tcp --dport 50000 -j CONNMARK --set-mark 2

Estas duas regras marcam as novas conexões recebidas (para o protocolo TCP, modifique se você precisar) com dois marcadores simples. Os marcadores são para todas as conexões, ie todos os seguintes pacotes do tipo ESTABELECIDO, RELACIONADO pertencendo a este pacote inicial terá a mesma marca.

A distinção só pode ser feita com base no endereço MAC do gateway, porque o endereço IP de origem de cada pacote é o do cliente que inicia a conexão, não o do gateway . Portanto, isso se aplica somente a conexões ethernet, porque os quadros wi-fi não possuem endereços MAC.

Agora

       ip rule add fwmark 1 table router70
       ip rule add fwmark 2 table router80

esses dois comandos especificam qual tabela de roteamento (de dois) usar, dependendo da marca de conexão / pacote.

Agora, configuramos duas tabelas de roteamento:

        echo 200 router70 >> /etc/iproute2/rt_tables
        echo 201 router80 >> /etc/iproute2/rt_tables
        ip route add 192.168.0.0/24 dev eth0 table router70
        ip route add 192.168.0.0/24 dev eth0 table router80
        ip route add default via 192.168.0.70 table router70
        ip route add default via 192.168.0.80 table router80

Isto assume que seu NIC ethernet é chamado eth0, caso contrário, mudar de acordo. O roteamento para todas as outras portas e / ou protocolos continua sendo o que você já tem, seja lá qual for.

Você terminou.

    
por 30.09.2015 / 11:20