Responder solicitação no gateway certo

Responder solicitação no gateway certo

Eu tenho um cenário bastante simples. Infelizmente não encontrei nenhuma resposta correspondente a esse problema. Eu tenho dois roteadores Linux (= gateways) para WANs diferentes (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 gateway padrão 192.168.0.70. Sem nenhuma configuração adicional você tem este comportamento:

solicitação recebida acima de 192.168.0.70 -> resposta funcionando (devido ao gateway padrão)

solicitação recebida acima de 192.168.0.80 -> não funciona porque a resposta leva 192.168.0.70

Como posso fazer com que as solicitações por meio de 192.168.0.80 sejam enviadas de volta por meio de 192.168.0.80?

Responder1

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 roteá-los para o gateway apropriado. É possível que você tenha que carregar o módulo CONNTRACK,

          modprobe ip_conntrack

Vamos chamar MAC70 de endereço MAC do gateway 192.168.0.70 e MAC80 de endereço MAC 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

Essas duas regras marcam as novas conexões de entrada (para o protocolo TCP, modifique se necessário) com dois marcadores simples.ou sejatodos os pacotes seguintes do tipo ESTABLISHED, RELATED pertencentes a este pacote inicial terão a mesma marca.

A distinção só pode ser feita com base no endereço MAC do gateway, pois o endereço IP de origem de cada pacote é o do cliente que inicia a conexão,nãoo do portal. Portanto, isso se aplica apenas a conexões Ethernet, porque os frames wifi não carregam 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 duas) 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

Isso pressupõe que sua NIC Ethernet seja chamada eth0, caso contrário, altere de acordo. O roteamento para todas as outras portas e/ou protocolos continua sendo o que você já possui, seja ele qual for.

Você terminou.

informação relacionada