Können Sie Ihr Fachwissen einbringen, um zu verstehen, wie die Trennung des Netzwerkverkehrs auf zwei Netzwerkschnittstellen konfiguriert wird?
Soweit ich weiß, werden statische Routen für Netzwerkverkehr verwendet, der nicht für die Verwendung eines Standard-Gateways ausgelegt ist. Das Standard-Gateway wird für den gesamten Datenverkehr verwendet, der nicht für das lokale Netzwerk bestimmt ist und für den in einer Routing-Tabelle keine bevorzugte Route angegeben wurde.
Das Szenario ist wie folgt.
- Jeder Computer im Netzwerk verfügt über zwei Netzwerkkarten.
- Die Produktionsschnittstelle für jede ist
eth0
(GW = 10.10.10.1). - Die Verwaltungsschnittstelle für jede ist
eth1
(GW = 192.168.100.1). - Produktions- und Managementverkehr sollten vollständig getrennt sein.
Ich habe unten gepostet, was ich mit Debian Wheezy versucht habe. Mein Problem ist, dass, obwohl ich Hosts so eingerichtet habe, dass sie auf beiden Schnittstellen kommunizieren, einzelne Hosts den Datenverkehr auf der falschen Schnittstelle zu "hören" scheinen. Beispielsweise:
Host 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)
Von Host 140 aus führe ich diesen Befehl aus : tcpdump -i eth0
. In einer separaten Sitzung auf Host 140 führe ich aus 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
Warum sehe ich die obige Ausgabe an eth0
? Ich denke, ich sollte nur Verkehr für 10.10.10.140 sehen. Ich sehe das eth1
auch wie erwartet:
19:18:47.805408 IP 192.168.100.50 > 192.168.100.140: ICMP echo request, id 1605, seq 247, length 64
Wenn ich von Host 50 aus pinge (gleiche ifconfig
Ergebnisse - nur ein anderes letztes Quad), eth0
ist es still und ich sehe die ICMP-Echos eth1
wie erwartet.
Ich möchte verstehen, wie jede Schnittstelle so konfiguriert wird, dass sie nur den Datenverkehr verarbeitet, für den sie in zwei großen Linux-Varianten verantwortlich ist. Ich glaube, ich bin fast da, aber mir fehlt etwas, das ich einfach nicht zu finden scheine.
- Debian Wheezy (7.x) oder Debian Jessie (8.x)
- Enterprise Linux (6.x) (RedHat / CentOS / Scientific / Oracle).
Ich weiß, dass eine Lösung für Debian sowohl für Wheezy als auch für Jessie gut sein sollte und dass eine Lösung für eine EL für alle EL 6.x-Versionen gleich sein sollte. Ich möchte vermeiden, ein RC-Skript zum Ausführen von Befehlen zu verwenden, und stattdessen die Konfigurationsdateien verwenden.
In Debian sind die relevanten Konfigurationsdateien, die ich kenne ,:
/etc/network/interfaces
In EL 6.x sind die relevanten Konfigurationsdateien, die mir bekannt sind:
/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
Meine Debian 8 "Jessie" /etc/network/interfaces
Datei:
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
Ich denke, netstat -anr
könnte das Problem veranschaulichen:
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