J'ai eu de grosses difficultés à mettre en place un serveur avec 3 interfaces, les paquets arrivants d'une interface qui n'était pas sur le même réseau que les interfaces non gateway étaient droppés.
J'ai donc 3 reseaux A, B et C.
A est mon default gateway et B/C des réseaux différents.
Tout paquet arrivant sur B ou C et qui ne sont pas originaire du même réseau que B ou C doivent etre re-retouter par A qui envoi le paquet vers le default router. Cependant avec tcpdump on voyait le paquet arriver mais rien ne sortait même par celle du default router.
14:14:10.624791 IP 172.26.44.80 > server2.domain.com : ICMP echo request, id 21539, seq 8, length 64
Pour pouvoir router des reseaux en IPV4, il suffit normalement de définir un "default router".
Les paquets reçus sur une interface consultent leur table de routage et si ils ne connaissent pas la route vers la destination, envoi le paquet vers l'interface default router.
Exemple :
server2 /root # netstat -rn 
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
171.25.202.0    0.0.0.0         255.255.255.0   U         0 0          0 eth2
171.32.24.0     0.0.0.0         255.255.252.0   U         0 0          0 eth1
171.27.192.0    0.0.0.0         255.255.248.0   U         0 0          0 eth0
0.0.0.0         171.27.193.4    0.0.0.0         UG        0 0          0 eth0
On a 3 interfaces et0, eth1 et eth2.
L'interface avec le flag UG est la gateway vers toutes les destinations (0.0.0.0).
Ce setting qui devrait fonctionner est inopérant par default sous RHEL 6.x.
Après maintes recherches j'ai decouvert un parametre de la pile tcpip qui permet de controler le routage des paquets qui vérifie la source avant de permettre le routage, c'est rp_filter (reverse path filter).
Il faut donc uniquement renseigner le default gateway dans /etc/sysconfig/network
server2 /root # cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=server2
NOZEROCONF=yes
GATEWAY=171.27.193.4
GATEWAYDEV=eth0
Puis mettre le parametre rt_filter à 2 (0 doit aussi fonctionner).
server2 /root # grep rp_filter /etc/sysctl.conf 
net.ipv4.conf.default.rp_filter = 2
On peut activer les logs de ces problemes de routage en changeant les flags des "log_martian" :
echo 1 > /proc/sys/net/ipv4/conf/eth1/log_martians
On voit alors des logs "martian source" dans /var/log/messages.