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
[^] # Re: De tête
Posté par petit_bibi . 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, @+