J'ai fait des tests avec un vieux PC équipé de deux cartes réseaux. Je n'arrive pas à faire marcher la configuration.
Environnement de test : deux box qui ont chacune une IP publique et une DMZ vers l'IP 192.168.x.100. Tous les masques sont des /24
=> Box N°1 connecté sur Eth0 : IP box 192.168.1.254 et DMZ vers 192.168.1.100
=> Box N°2 connecté sur Eth1 : IP box 192.168.0.254 et DMZ vers 192.168.0.100
Configuration réseau du PC :
# Box N°1
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.254
metric 10
dns-nameservers 192.168.1.254
# Box N°2
auto eth1
iface eth1 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.254
metric 100
J'ai rajouté les lignes qui vont bien à la fin du fichier /etc/iproute2/rt_tables
nano -w /etc/iproute2/rt_tables1 route_to_eth0
2 route_to_eth1
Passage de eth0 et eth1 en fonctionnement de type routeur (je en sais pas si c'est nécessaire) :
sysctl -w net.ipv4.conf.eth0.rp_filter=0
sysctl -w net.ipv4.conf.eth1.rp_filter=0Créer les routes par défaut dans des tables spécifiques :
ip route add to default table route_to_eth0 dev eth0
ip route add to default table route_to_eth1 dev eth1Créer les sélecteurs de tables de routage :
ip rule add from 192.168.1.254 table route_to_eth0
ip rule add from 192.168.0.254 table route_to_eth1Ce que cela donne :
ip rule show0: from all lookup local
32764: from 192.168.0.254 lookup route_to_eth1
32765: from 192.168.1.254 lookup route_to_eth0
32766: from all lookup main
32767: from all lookup default
ip route show table alldefault via 192.168.1.254 dev eth0 metric 10
default via 192.168.0.254 dev eth1 metric 100
192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
broadcast 127.0.0.0 dev lo table local proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1
broadcast 192.168.0.0 dev eth1 table local proto kernel scope link src 192.168.0.100
local 192.168.0.100 dev eth1 table local proto kernel scope host src 192.168.0.100
broadcast 192.168.0.255 dev eth1 table local proto kernel scope link src 192.168.0.100
broadcast 192.168.1.0 dev eth0 table local proto kernel scope link src 192.168.1.100
local 192.168.1.100 dev eth0 table local proto kernel scope host src 192.168.1.100
broadcast 192.168.1.255 dev eth0 table local proto kernel scope link src 192.168.1.100
fe80::/64 dev eth1 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
unreachable default dev lo table unspec proto kernel metric 4294967295 error -101 hoplimit 255
local ::1 via :: dev lo table local proto none metric 0
local fe80::215:e9ff:fe3d:b12b via :: dev lo table local proto none metric 0
local fe80::215:f2ff:fe94:3244 via :: dev lo table local proto none metric 0
ff00::/8 dev eth1 table local metric 256
ff00::/8 dev eth0 table local metric 256
unreachable default dev lo table unspec proto kernel metric 4294967295 error -101 hoplimit 255
Depuis internet, j'arrive à me connecter en ssh sur la machine via la box N°1 (eth0) mais pas celle sur eth1.
Une analyse avec tcpdump montre que les paquets [SYN] arrivent sur eth1 mais partent via eth0. Quand je rajoute la commande suivante, je perds l’accès internet :
ip route add to default table main src 192.168.1.100 dev eth0