Routage deux ip publique

Bonjour,

Je viens de monter mon serveur minimal qui va servir de routeur.
J’ai déjà un routeur qui tourne très bien sous Debian Lenny, mais je vais changer mon installation, et des changements s’imposent.

Je dispose d’une machine (pas bien puissante, mais c’est pas grave :smiley:) qui dispose de 4 cartes réseaux: eth0, eth1, eth2, eth3.
Deux de ces cartes ont une ip publique, et les deux autres vont les redispatcher.

Le serveur DHCP tourne très bien. Les ip sont bien alloués, etc.

J’ai deux problème en revanche:

  • Comment forwarder les connexions internet, sans utiliser ipmasq ?
    -> Je voudrais pouvoir faire tourner le routeur avec le moins de règles iptables, surtout pas avec un ipmasq qui gère 36 trucs, que je vais pas utiliser.

  • Comment faire pour forwarder l’ip de eth0 avec UNIQUEMENT eth1, et eth2 avec eth3 (et surtout, qu’il n’y ai aucun mélange).

Je ne suis pas un grand expert d’iptables, donc si quelqu’un de doué pouvais m’aider à rédiger ces règles, ça serait sympa :slightly_smiling:

ipmasq est essentiellement une surcouche d’iptables|ipchains|ipfwadm, et notamment du masquerading (NAT source dynamique). Ce ne sont pas eux qui réalisent ce qu’on appelle le “forwarding” en anglais, c’est la fonction de routage du noyau (net.ipv4.ip_forward=1).

Dans ton cas, il faudra un peu plus que du masquerading et du routage simple ; il faudra utiliser la fonction de routage avancé de Linux (Linux Advanced Routing and Traffic Control ou LARTC). Y a un howto à lire impérativement (pas tout heureusement). Une possibilité est d’appliquer une table de routage différente en fonction de l’adresse source ou de l’interface d’entrée du paquet à router. Voici le principe dans les grandes lignes.

# definitions
lan1=interface LAN 1
lan2=interface LAN 2
wan1=interface WAN 1
wan2=interface WAN 2
adresse_wan1=adresse interface wan1
adresse_wan2=adresse interface wan2
gateway_wan1=adresse passerelle wan1
gateway_wan2=adresse passerelle wan2
subnet_lan1=prefixe sous-reseau lan1
subnet_lan2=prefixe sous-reseau lan2
subnet_wan1=prefixe sous-reseau wan1
subnet_wan2=prefixe sous-reseau wan2

# les paquets destines aux 4 sous-reseaux suivent la table de routage normale quelle que soit l'interface d'entree
ip rule add to $subnet_lan1 table main prio 10000
ip rule add to $subnet_lan2 table main prio 10001
ip rule add to $subnet_wan1 table main prio 10002
ip rule add to $subnet_wan2 table main prio 10003

# les autres paquets entrant par $lan1 suivent la table de routage 101
ip rule add iif $lan1 table 101 prio 10010

# les autres paquets entrant par $lan2 suivent la table de routage 102
ip rule add iif $lan2 table 102 prio 10011

# table de routage 101 avec la passerelle par defaut de $wan1
ip route add default via $gateway_wan1 dev $wan1 table 101

# table de routage 102 avec la passerelle par defaut de $wan2
ip route add default via $gateway_wan2 dev $wan2 table 102

# desactivation de la validation d'adresse source par "reverse path filtering" sur $wan1 et $wan2 au cas ou elle aurait ete activee par un script de demarrage
sysctl -w net.ipv4.conf.$wan1.rp_filter=0
sysctl -w net.ipv4.conf.$wan2.rp_filter=0

# activation du routage IP
sysctl -w net.ipv4.ip_forward=1

# NAT source en sortie sur $wan1 et $wan2
iptables -t nat -A POSTROUTING -o $wan1 -j SNAT --to $addresse_wan1
iptables -t nat -A POSTROUTING -o $wan2 -j SNAT --to $addresse_wan2

C’est la base. Pour les règles de filtrage, c’est toi qui vois.

Oui oui, en effet, quand je parlais de ipmasq, je parlais de masquerading, j’ai mal formulé :slightly_smiling:

Merci merci, je vais analyser un peu tout ça, et lire la doc dont tu parles :slightly_smiling:
Je vous tiendrai au courant :stuck_out_tongue: