Alors, tu t’en sors ?
De mon côté, j’ai pu me monter une machine avec 3 interfaces et 2 accès wan, et je te propose le script suivant :
#!/bin/bash
# Prérequis :
# les interfaces eth0, eth1 et eth2 sont correctement configurées (ip, masque et passerelle) dans le fichier /etc/network/interfaces
# les accès internet sont OK sur les réseaux 192.168.1.0 et 192.168.200.0
# je suis parti du postulat que ton dns était hébergé à l'extérieur (ex:opendns)
#activation du partage de connexion
echo 1 > /proc/sys/net/ipv4/ip_forward
# Initialisation de la table FILTER
iptables -t filter -F
iptables -t filter -X
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
# Initialisation de la table NAT
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
# Initialisation de la table MANGLE
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
##### On laisse passer le trafic retour des connexions déjà établies sur les 2 interfaces de sortie
iptables -t filter -A FORWARD -i eth1 -o eth0 -s 0.0.0.0/0 -d 192.168.0.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A FORWARD -i eth2 -o eth0 -s 0.0.0.0/0 -d 192.168.0.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
##### Trafic vers ETH1 (Mails)
#smtp-25 et smpts-465
iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 25 -j MARK --set-mark 25
iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -p tcp --dport 25 -m state ! --state INVALID -j ACCEPT
iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 465 -j MARK --set-mark 465
iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -p tcp --dport 465 -m state ! --state INVALID -j ACCEPT
#pop-110 et pops-995
iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 110 -j MARK --set-mark 110
iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -p tcp --dport 110 -m state ! --state INVALID -j ACCEPT
iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 995 -j MARK --set-mark 995
iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -p tcp --dport 995 -m state ! --state INVALID -j ACCEPT
##### Trafic vers ETH2 (surf)
#web-80 et webs-443
iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 80 -j MARK --set-mark 80
iptables -A FORWARD -i eth0 -o eth2 -s 192.168.0.0/24 -p tcp --dport 80 -m state ! --state INVALID -j ACCEPT
iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 443 -j MARK --set-mark 443
iptables -A FORWARD -i eth0 -o eth2 -s 192.168.0.0/24 -p tcp --dport 443 -m state ! --state INVALID -j ACCEPT
#dns-53udp
iptables -A PREROUTING -i eth0 -t mangle -p udp --dport 53 -j MARK --set-mark 53
iptables -t filter -A FORWARD -i eth0 -o eth2 -s 192.168.0.0/24 -p udp --dport 53 -m state ! --state INVALID -j ACCEPT
##### Masquerading (substitution de l'adresse source par l'adresse de l'interface de sortie)
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.0/24 -j MASQUERADE
Ensuite, y a des commandes à rentrer depuis un terminal en root :
Déclaration des tables de routage alternatives :
echo 210 mail >> /etc/iproute2/rt_tables
echo 220 surf >> /etc/iproute2/rt_tables
Mise en place des règles de routage des paquets pop/pops/smtp/smtps via la table “mail”
debianfw:/home/ced# ip rule add fwmark 25 table mail
debianfw:/home/ced# ip rule add fwmark 110 table mail
debianfw:/home/ced# ip rule add fwmark 465 table mail
debianfw:/home/ced# ip rule add fwmark 995 table mail
Mise en place des règles de routage des paquets http, https et dns via la table “surf” :
debianfw:/home/ced# ip rule add fwmark 80 table surf
debianfw:/home/ced# ip rule add fwmark 443 table surf
debianfw:/home/ced# ip rule add fwmark 53 table surf
Création des tables “mail” et “surf” avec leurs routes par défaut respectives :
debianfw:/home/ced# ip route add default via 192.168.1.1 dev eth1 table mail
debianfw:/home/ced# ip route add default via 192.168.200.1 dev eth2 table surf
Je n’ai pas pu tout tester (infrastructure assez hermétique dans ma boite, pour l’un des 2 wan…) alors si des pro (fran.b ou pascalhambourg?
) y jettent un coup d’oeil et corrigent/critiquent, ca sera avec grand plaisir 
Mes remarques :
-
en l’état, le serveur ne peut rien faire en terme de connexion (toutes les chaines de la table “filter” son à DROP), donc il ne fera que du routage (on pourra pas le pinguer, il ne pourra pas pinguer, il n’accèdera pas à internet,… bref RIEN
) - il faudra rajouter des règles si tu veux pouvoir le pinguer, le contrôler via ssh par exemple (ca peut servir)
-
Je ne sais pas si la résolution dns va fonctionner pour le trafic mail (car elle se fait via l’autre chemin)
-
Je crois que je confond masquerade et snat… 