[gull] question NAT

Marc SCHAEFER schaefer at alphanet.ch
Fri Oct 1 17:31:03 CEST 2004


On Fri, Oct 01, 2004 at 04:21:10PM +0200, Leopoldo Ghielmetti wrote:
> Seulement que iptables fait le DNAT puis le routing et ensuite le SNAT
> et il n'y a pas moyen de faire l'inverse. Et qui plus est il n'y a pas

Si, c'est possible. Voir les commandes ip rule et ip route. On peut
créer plusieurs tables de routage, activées en fonction de règle de
marquage du firewall.

Par exemple (exemple compliqué, peut-être n'est-il pas nécessaire
d'aller jusque-là). Ce que ça fait: les paquets provenant de la machine
locale sont routées en fonction de l'adresse source. Les paquets
traversants sont marqués à l'entrée en fonction de leur adresse source,
puis à la sortie la marque est utilisée.

La seule particularité est qu'on utilise un patch à iptables qui permet
de rendre les marques *persistantes* sur un nexus (si tu veux une
`connexion' au sens du firewall stateful iptables: pas forcément du TCP).
Sans ce patch `--save-mark' est impossible.

Sans ce patch il est difficile de router correctement les paquets en
retour dans le cas général.

Je ne suis pas sûr que tu as besoin d'une solution si complexe, mais
peut-être que cela te mettra dans la bonne direction (tables de routage
multiples décidées en fonction d'une marque du firewall).

# New routing table
ip route add default via 192.168.2.1 table 4

# For local host both ways
ip rule add from 192.168.2.10/32 table 4

# No martians
echo 0 >  /proc/sys/net/ipv4/conf/eth1/rp_filter

iptables -t mangle -F

iptables -A PREROUTING \
         -i eth0 -s 192.168.3.0/24 -p tcp --sport 25 \
         -t mangle -j CONNMARK --restore-mark

iptables -A PREROUTING \
         -i eth0 -s 192.168.3.0/24 -p tcp --sport 25 \
         -m mark --mark 2 \
         -t mangle -j MARK --set-mark 4

iptables -A PREROUTING -t mangle -m mark ! --mark 0 -j ACCEPT

iptables -A PREROUTING \
         -i eth1 -d 192.168.2.10/32 -p tcp --dport 25 \
         -t mangle -j MARK --set-mark 2

iptables -A PREROUTING \
         -i eth1 -d 192.168.2.10/32 -p tcp --dport 25 \
         -t mangle -j CONNMARK --save-mark

# Special routing depending on mark
ip rule add fwmark 4 table 4




More information about the gull mailing list