Pourriez-vous apporter votre expertise pour comprendre comment configurer la séparation du trafic réseau sur deux interfaces réseau?
Si je comprends bien jusqu'à présent, les routes statiques sont utilisées pour le trafic réseau qui n'est pas conçu pour utiliser une passerelle par défaut. La passerelle par défaut est utilisée pour tout le trafic qui n'est pas destiné au réseau local et pour lequel aucun itinéraire préféré n'a été spécifié dans une table de routage.
Le scénario est le suivant.
- Chaque ordinateur du réseau possède deux cartes réseau.
- L'interface de production pour chacun est
eth0
(GW = 10.10.10.1). - L'interface de gestion pour chacun est
eth1
(GW = 192.168.100.1). - Le trafic de production et de gestion doit être totalement séparé.
J'ai posté ci-dessous ce que j'ai essayé avec Debian Wheezy. Et, mon problème est que, bien que j'ai des hôtes configurés de telle manière qu'ils communiquent sur les deux interfaces, les hôtes individuels semblent "entendre" le trafic sur la mauvaise interface. Par exemple:
Hôte 140
eth0 Link encap:Ethernet HWaddr 08:00:27:d1:b6:8f
inet addr:10.10.10.140 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fed1:b68f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1341 errors:0 dropped:0 overruns:0 frame:0
TX packets:2530 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:641481 (626.4 KiB) TX bytes:241124 (235.4 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:ad:14:b6
inet addr:192.168.100.140 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fead:14b6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7220 errors:0 dropped:0 overruns:0 frame:0
TX packets:5257 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:602485 (588.3 KiB) TX bytes:1022906 (998.9 KiB)
A partir de l' hôte 140, j'exécute cette commande: tcpdump -i eth0
. Dans une session distincte sur l'hôte 140, j'exécute ping 192.168.100.50
.
19:17:29.301565 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 10, length 64
19:17:30.301561 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 11, length 64
19:17:31.301570 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 12, length 64
19:17:32.301580 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 13, length 64
Pourquoi la sortie ci-dessus est-elle activée eth0
? Je pense que je ne devrais voir le trafic que pour le 10.10.10.140. Je le vois aussi eth1
, comme prévu:
19:18:47.805408 IP 192.168.100.50 > 192.168.100.140: ICMP echo request, id 1605, seq 247, length 64
Si je cingle de l'hôte 50 (mêmes ifconfig
résultats - juste un dernier quadruple), puis eth0
est silencieux, et je vois les échos ICMP dessus eth1
, comme prévu.
Je voudrais comprendre comment configurer chaque interface pour gérer uniquement le trafic dont elle est responsable dans deux principales variétés Linux. Je pense que j'y suis presque, mais il me manque quelque chose que je n'arrive pas à trouver.
- Debian Wheezy (7.x) ou Debian Jessie (8.x)
- Enterprise Linux (6.x) (RedHat / CentOS / Scientific / Oracle).
Je sais qu'une solution pour Debian devrait être bonne à la fois pour Wheezy et Jessie, et qu'une solution pour un EL devrait être la même pour toutes les versions EL 6.x. Je voudrais éviter d'utiliser un script RC pour exécuter des commandes, optant plutôt pour l'utilisation des fichiers de configuration.
Dans Debian, les fichiers de configuration pertinents que je connais sont:
/etc/network/interfaces
Dans EL 6.x, les fichiers de configuration pertinents que je connais sont:
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/route-eth0
/etc/sysconfig/network-scripts/route-eth1
/etc/sysconfig/network-scripts/rule-eth0
/etc/sysconfig/network-scripts/rule-eth1
Mon /etc/network/interfaces
fichier "Jessie" Debian 8 :
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# Production interface
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.10.10.140
netmask 255.255.255.0
gateway 10.10.10.1
# Management interface
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.100.140
netmask 255.255.255.0
Je pense que cela netstat -anr
pourrait illustrer le problème:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.10.10.1 0.0.0.0 UG 0 0 0 eth0
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
iptabels -L -t nat
Réponses:
J'aimerais en savoir plus sur ce sujet pour affiner la configuration afin qu'elle soit la meilleure possible, mais voici ce que j'ai jusqu'à présent. Même sans activer le filtrage ARP sur toutes les interfaces réseau (
net.ipv4.conf.all.arp_filter = 0
), comme mentionné par @spuk, le trafic semble être complètement séparé dans cette configuration.Le fichier,,
/etc/iproute2/rt_tables
est le même dans EL 6.x et DEB 7/8, au moins. Il s'agit du fichier qui crée une table de routage nommée pour les itinéraires statiques.Ci-dessus, le numéro de la route statique nommée, 1, est essentiellement arbitraire; ou, chaque route statique obtient son propre numéro unique entre 1 et 252.
Le fichier,
/etc/network/interfaces
en DEB 7/8, au moins:Le résultat de
ip route show
sur Debian:Le
/etc/sysconfig/network
fichier EL 6.x :Ci-dessus, GATEWAY est l'itinéraire par défaut. Ci-dessous, si BOOTPROTOCOL était réglé sur DHCP, la route par défaut serait acquise auprès de DHCP.
LE
/etc/sysconfig/network-scripts/ifcfg-eth0
fichier EL 6.x , sans "HWADDR" et "UUID":LE
/etc/sysconfig/network-scripts/ifcfg-eth1
fichier EL 6.x , sans "HWADDR" et "UUID":Le
/etc/sysconfig/network-scripts/route-eth1
fichier EL 6.x :Le
/etc/sysconfig/network-scripts/rule-eth1
fichier EL 6.x :Le résultat
ip route show
sur EL 6.x:la source
Je n'ai pas lu l'intégralité de votre message (désolé, je ne peux pas vraiment passer du temps en ce moment), mais je pense que cela peut être lié à la façon dont Linux implémente le modèle d'hôte IP :
De cette même page:
C'est-à-dire que sous Linux, par défaut, les adresses IP "appartiennent à l'hôte", pas strictement "à l'interface". Vous pouvez modifier ce comportement via
arp_filter
,rp_filter
,arp_announce
,arp_ignore
sysctls (obtenu à partir LVS: L'ARP Problème , vu ici ). Voir également ip-sysctl.txt .la source