+ Responder ao Tópico



  1. #1
    tomiz
    Visitante

    Padrão Roteamento baseado na conexão

    Tenho um servidor Linux (Conectiva 10) com três placas de rede da seguinte forma:
    eth0 - 10.0.0.1 - Rede Local
    eth1 - a.b.c.d - Link 1 de Internet
    eth2 - x.y.z.w - Link 2 de Internet

    O gateway padrão é pela eth1 (Link1 de Internet).

    Surgiu a necessidade de redirecionar uma porta para um computador interno. Foi usado o comando (iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT 10.0.0.5:3389).
    Isso funciona perfeitamente bem quando a conexão chega pelo Link1 (rota default).
    Porém, quando a conexão chega pelo Link2 não funciona. Identifiquei que o redirecionamento ocorre normalmente, mas as resposta do computador interno volta pelo Link1 (rota default).
    Já tentei usar marcação de pacotes (iptables e iproute), mas infelizmente não obtive êxito.
    Se souber algo, sou muito grato.

  2. #2

    Padrão Re: Roteamento baseado na conexão

    Cara vc pode tentar essa regra:

    iptables -t nat -A PREROUTING -i etho -p tcp --dport 8080 -j DNAT --to-dest 192.168.0.2
    iptables -A FORWARD -p tcp -i eth0 --dport 8080 -d 192.168.0.2 -j ACCEPT


    Se nao funcionar existe outra regra que vc coloca primeiro o ip real e depois o mascarado nao lembro agora como e mas vou procurar!!!

  3. #3
    tomiz
    Visitante

    Padrão Roteamento baseado na conexão

    Consegui resolver usando iptables e iproute2. A solução final ficou assim:

    iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 3389 -i eth2 -j MARK --set-mark 21

    iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 3389 -j DNAT --to-destination 10.0.0.5:3389

    iptables -t nat -A POSTROUTING -o eth0 -m mark --mark 21 -j SNAT --to-source x.y.z.w

    iptables -t mangle -A PREROUTING -p tcp -m tcp -d x.y.z.w -i eth0 -j MARK --set-mark 2

    ip rule add pref 21 fwmark 2 table 21
    ip route add default via <Gateway do x.y.z.w> table 21