GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Centos – Separater Netzwerkverkehr auf zwei Netzwerkschnittstellen?

Könnten Sie uns Ihr Fachwissen zur Verfügung stellen, um zu verstehen, wie man
die Trennung des Netzwerkverkehrs auf zwei Netzwerkschnittstellen konfiguriert?

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 Verkehr verwendet, der nicht für das lokale Netzwerk bestimmt ist und für den keine
bevorzugte Route in einer Routing-Tabelle angegeben wurde.

Das Szenario ist wie folgt.

  • Jeder Computer im Netzwerk hat zwei Netzwerkkarten.
  • Die Produktionsschnittstelle für jeden ist eth0 (GW =10.10.10.1).
  • Die Verwaltungsschnittstelle für jeden ist eth1 (GW =192.168.100.1).
  • Produktions- und Verwaltungsdatenverkehr sollten vollständig getrennt werden.

Ich habe unten gepostet, was ich mit Debian Wheezy ausprobiert habe.
Und mein Problem ist, dass, obwohl ich Hosts so eingerichtet habe, dass sie
auf beiden Schnittstellen kommunizieren, einzelne Hosts scheinen Verkehr auf der falschen Schnittstelle zu „hören“.
Zum Beispiel:

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 ping 192.168.100.50 aus .

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 auf eth0 ? Ich denke, ich sollte nur Verkehr für 10.10.10.140 sehen.
Ich sehe dies auch auf eth1 , 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 pinge (gleicher ifconfig Ergebnisse – nur ein anderes letztes Quad),
dann eth0 ist still, und ich sehe die ICMP-Echos auf eth1 , wie erwartet.

Ich würde gerne verstehen, wie man jede Schnittstelle so konfiguriert, dass sie nur
den Datenverkehr handhabt, für den sie in zwei großen Linux-Varianten verantwortlich ist.
Ich glaube, ich bin fast am Ziel, aber mir fehlt etwas, was ich einfach kann. Scheinbar nicht zu finden.

  • 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 EL für alle EL 6.x-Versionen gleich sein sollte.
Ich möchte die Verwendung vermeiden ein RC-Skript zum Ausführen von Befehlen, das sich stattdessen
für die Verwendung der Konfigurationsdateien entscheidet.

In Debian sind die mir bekannten relevanten Konfigurationsdateien:

  • /etc/network/interfaces

In EL 6.x sind die mir bekannten relevanten Konfigurationsdateien:

  • /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

Mein 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

Akzeptierte Antwort:

Ich würde gerne mehr über dieses Thema erfahren, um die Konfiguration so zu verfeinern, dass sie so gut wie möglich ist, aber hier ist, was ich bisher habe. Auch ohne Aktivierung der ARP-Filterung auf allen Netzwerkschnittstellen (net.ipv4.conf.all.arp_filter = 0 ), wie von @spuk erwähnt,
scheint der Datenverkehr in dieser Konfiguration vollständig getrennt zu sein.

Verwandte:Sed Zeichen aus neuer Zeile entfernen?

Die Datei /etc/iproute2/rt_tables , ist zumindest in EL 6.x und DEB 7/8 gleich. Dies ist die Datei, die eine benannte Routing-Tabelle für statische Routen erstellt.

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
252 mgmt

Oben ist die Nummer der benannten, statischen Route, 252, im Wesentlichen willkürlich; oder jede statische Route erhält ihre eigene eindeutige Nummer zwischen 1 und 252.

Die Datei /etc/network/interfaces in DEB 7/8 zumindest:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
  iface lo inet loopback

# The production network interface
# The 'gateway' directive is the default route.
# Were eth0 configured via DHCP, the default route would also be here.
auto eth0
allow-hotplug eth0
iface eth0 inet static
  address 10.10.10.140
  netmask 255.255.255.0
  gateway 10.10.10.1

# The management network interface
# The 'gateway' directive cannot be used again because there can be
# one, and only one, default route. Instead, the 'post-up' directives
# use the `mgmt` static route.
auto eth1
allow-hotplug eth1
iface eth1 inet static
  address 192.168.100.140
  netmask 255.255.255.0
  post-up ip route add 192.168.100.0/24 dev eth1 src 192.168.100.140 table mgmt
  post-up ip route add default via 192.168.100.1 dev eth1 table mgmt
  post-up ip rule add from 192.168.100.140/32 table mgmt
  post-up ip rule add to 192.168.100.140/32 table mgmt

Das Ergebnis von ip route show auf Debian:

default via 10.10.10.1 dev eth0
10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.140
192.168.100.0/24 dev eth1  proto kernel  scope link  src 192.168.100.140

EL 6.x /etc/sysconfig/network Datei:

NETWORKING=yes
HOSTNAME=localhost.localdomain
GATEWAY=10.10.10.1

Oben ist GATEWAY die Standardroute. Wäre BOOTPROTOCOL unten auf DHCP eingestellt, würde die Standardroute von DHCP bezogen werden.

EL 6.x /etc/sysconfig/network-scripts/ifcfg-eth0 Datei, ohne „HWADDR“ und „UUID“:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=10.10.10.140
NETMASK=255.255.255.0
NETWORK=10.10.10.0
BROADCAST=10.10.10.255

EL 6.x /etc/sysconfig/network-scripts/ifcfg-eth1 Datei, ohne „HWADDR“ und „UUID“:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=192.168.100.140
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255

EL 6.x /etc/sysconfig/network-scripts/route-eth1 Datei:

192.168.100.0/24 dev eth1 table mgmt
default via 192.168.100.1 dev eth1 table mgmt

EL 6.x /etc/sysconfig/network-scripts/rule-eth1 Datei:

from 192.168.100.0/24 lookup mgmt

Das Ergebnis von ip route show auf EL 6.x:

192.168.100.0/24 dev eth1  proto kernel  scope link  src 192.168.100.160
10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.160
default via 10.10.10.1 dev eth0

Update für RHEL8

Diese oben beschriebene Methode funktioniert mit RHEL 6 &RHEL 7 sowie den Derivaten, aber für RHEL 8 und Derivate muss man zuerst network-scripts installieren um die oben beschriebene Methode zu verwenden.

dnf install network-scripts

Die Installation erzeugt eine Warnung, dass network-scripts in einer der nächsten Hauptversionen von RHEL entfernt wird und NetworkManager ifup bereitstellt /ifdown auch Skripte.

Update für Ubuntu 20.04 LTS

Das Erstellen einer benannten Routing-Tabelle ist in Ordnung, aber mit netplan nicht erforderlich , die den Namen sowieso nicht verwenden wird. Nichtsdestotrotz die Nummer der benannten Routing-Tabelle aus den rt_tables Datei kann für netplan verwendet werden . Entsprechende NICs sind enps03 (eth0 ) und enp0s8 (eth1 ).

network:
  version: 2
  ethernets:
    enp0s3:
      addresses:
      - 10.10.10.140/24
      dhcp4: false
      dhcp6: false
      gateway4: 10.10.10.1
      nameservers:
        addresses:
        - 1.2.3.4
        - 1.2.3.5
        search:
        - your-search-domain-name.com
    enp0s8:
      dhcp4: false
      dhcp6: false
      addresses:
      - 192.168.100.140/24
      routes:
      - to: 192.168.100.0/24
        via: 192.168.100.1
        table: 252
      routing-policy:
      - from: 192.168.100.0/24
        table: 252

Daraus ergeben sich folgende Routen von ip r s .

default via 10.10.10.1 dev enp0s3 proto static
10.10.10.0/24 dev enp0s3 proto kernel scope link src 10.10.10.140
192.168.100.0/24 dev enp0s8 proto kernel scope link src 192.168.100.140

Cent OS
  1. So deaktivieren Sie NetworkManager unter CentOS / RHEL 7

  2. CentOS / RHEL 7:So aktivieren Sie die alten Netzwerkschnittstellennamen im ethX-Stil

  3. So konfigurieren Sie das Netzwerk-Teaming in CentOS/RHEL 7

  4. „iscsiadm“ Discovery TimeOut mit zwei oder mehr Netzwerkschnittstellen in CentOS/RHEL

  5. So entfernen Sie den Netzwerkdrucker in CentOS/RHEL

So konfigurieren Sie CentOS-Netzwerkeinstellungen

So konfigurieren Sie eine virtuelle Netzwerkschnittstelle auf RHEL 8 / CentOS 8

So konfigurieren Sie Netzwerkschnittstellen mit NMCLI auf Centos 7.6

So installieren Sie Cacti Network Monitoring unter CentOS 8

3 Möglichkeiten zum Erstellen einer Netzwerkbrücke in RHEL/CentOS 8

Centos – Wireguard leitet den Datenverkehr nicht vom Client zu anderen Servern im Netzwerk?