• [^] # Re: De tête

    Posté par . En réponse au message Iptables et NAT. Évalué à 2.


    Effectivement, il est important de modifier la source des paquets forwardé, sinon la machine qui va les recevoir répondra directement à ton client. Ton client recevra (si le réseau et les routes le permettent) des paquets tel que les premiers ACK mais il les ignorera car ils ne viennent pas d'une connection qu'il a initié (response source IP != request destination IP).


    Si tu as deux cartes réseaux sur ton 'routeur':

    #!/bin/bash
    IN_DEVICE=eth0
    LOCAL_IP=192.168.0.250
    LOCAL_PORT=22

    OUT_DEVICE=eth1
    OUT_DEVICE_IP=192.168.2.250
    NEW_IP=192.168.2.105
    NEW_PORT=22
    echo 1 > /proc/sys/net/ipv4/ip_forward

    iptables -t nat -A PREROUTING -i ${IN_DEVICE} -p tcp -d ${LOCAL_IP} --dport ${LOCAL_PORT} -j DNAT --to-destination ${NEW_IP}:${NEW_PORT}
    iptables -t nat -A POSTROUTING -o ${OUT_DEVICE} -p tcp -d ${NEW_IP} --dport ${NEW_PORT} -j SNAT --to-source ${OUT_DEVICE_IP}


    Mais ça marche aussi si tu n'as qu'une seule carte et une seule adresse tel que:

    OUT_DEVICE=IN_DEVICE
    OUT_DEVICE_IP=LOCAL_IP

    INPUT et OUTPUT ne sont traversé que pour ce qui va a destination des processus locaux, seul FORWARD est traversé dans ton cas.

    ouch, it's openarena mumuse time, @+