Vernetzung mit mehreren Nics

16

Ich habe einen Ubuntu 12.04 Server mit 4 Netzwerkadaptern. Ich muss jede Netzwerkkarte für eine separate Funktion verwenden. Hier ist eine Beschreibung meines Setups:

etho = 10.234.0.2 netmask = 255.255.255.252 gw = 10.234.0.1 This is on vlan 234
eth1 = 10.235.0.2 netmask = 255.255.255.252 gw = 10.235.0.1 This is on vlan 235
eth2 = 10.236.0.2 netmask = 255.255.255.252 gw = 10.236.0.1 This is on vlan 236
eth3 = 10.237.0.2 netmask = 255.255.255.252 gw = 10.237.0.1 This is on vlan 237

Ich muss in der Lage sein, Datenverkehr von und zu den einzelnen IP-Adressen für separate Webdienste zu leiten. Das heißt, 10.235.0.2 ist eine Website, 10.236.0.2 ist eine andere Website und 10.237.0.2 ist eine dritte Website. Die 1. IP dient zur Verwaltung des Servers.

Ich denke, das Problem ist ein Routing-Problem, aber ich bin neu genug für Linux, um die Vor- und Nachteile der Routing-Funktionen nicht vollständig zu verstehen.

Folgendes ist in meiner /etc/network/interfacesDatei enthalten:

auto lo
iface lo inet loopback

# WWW Management
auto eth0
iface eth0 inet static
address 10.234.0.2
netmask 255.255.255.252
gateway 10.234.0.1
nameseervers 10.230.1.103, 10.230.70.70

# WWW
auto eth1
iface eth1 inet static
address 10.235.0.2
netmask 255.255.255.252
gateway 10.235.0.1

# WTB
#auto eth2
#iface eth2 inet static
#address 10.236.0.2
#netmask 255.255.255.252
#gateway 10.236.0.1

# Moodle
#auto eth3
#iface eth3 inet static
#address 10.237.0.2
#netmask 255.255.255.252
#gateway 10.237.0.1

Ich habe die letzten beiden Netzwerke deaktiviert, um Verwirrung zu lindern.

Vielen Dank im Voraus für all die Hilfe und Kommentare und Vorschläge.

user168645
quelle

Antworten:

15

Nachdem ich eine normale Konfiguration von nur eth0 durchgeführt hatte, kam ich zurück und fügte config für eth1 hinzu. Mit nur eth0 war die Routentabelle:

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

Aber nachdem ich eth1 aufgerufen hatte, bestimmte die Reihenfolge der Standard-Routenanweisungen, welche Schnittstelle immer verwendet wurde. Wie unten gezeigt, wird zufällig die eth1-Route zum 192.168.1.65-Gateway ausgewählt.

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.1.65 dev eth1 metric 100
default via 192.168.0.97 dev eth0 metric 100

Nur eine Gateway-Anweisung

Das erste Problem kann die zusätzliche Standardroute 'via 192.168.1.65' sein. Es erscheint dort, wenn die eth1-Definition in / etc / network / interfaces eine "gateway 192.168.1.65" -Anweisung enthält. Entfernen Sie daher alle zusätzlichen Gateway-Anweisungen und bouncen Sie die Schnittstelle:

# ifdown eth1
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

Richten Sie eine neue Routing-Tabelle ein

Erstellen Sie eine neue, separate Routingtabelle mit einer Standardroute, die für den gesamten aus eth1 stammenden Datenverkehr geeignet ist. Die Tischnummer ist hier nicht wichtig; 101 ist einfach nicht die Hauptroutingtabelle. Führen Sie dazu einen 'post-up'-Befehl in der eth1-Konfiguration in / etc / network / interfaces aus. Addiere nur ein Post-Up auf eth1; Fügen Sie es keiner der eth1: -Unterschnittstellen hinzu.

post-up ip route add default via 192.168.1.65 dev eth1 table 101

Bounce eth1. Die Hauptroutingtabelle bleibt unverändert, und Tabelle 101 enthält die Standardroute via 192.168.1.65, wenn eth1 aktiv ist.

# ifdown eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101   (ie, table is empty, no output)
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101
default via 192.168.1.65 dev eth1

neue Weiterleitungsregel

Fügen Sie eine Routing-Regel hinzu, um mithilfe von Tabelle 101 eine Standardroute für Pakete auszuwählen, die nach eth1 gesendet werden sollen.

# ip rule add from 192.168.1.64/27 lookup 101
# ip rule show
0:     from all lookup local
32765: from 192.168.1.64/27 lookup 101
32766: from all lookup main
32767: from all lookup default

Fügen Sie die Regel auch der /etc/network/interfacesDatei hinzu:

post-up ip rule add from 192.168.1.64/27 lookup 101

Stellen Sie nun sicher, dass Sie eine Bereinigung hinzufügen, um die Route und Regel zu entfernen, wenn die Schnittstelle ausfällt:

post-down ip rule del from 192.168.1.64/27
post-down ip route del default via 192.168.1.65 table 101

[BEARBEITEN für Ubuntu 16.04+] Wie hier angegeben und aus Tests, die ich anhand dieser Hilfe durchgeführt habe, hat ip route2 seine Befehlsstruktur geändert. Um Arbeit zu machen, müssen Sie nur ein wenig anpassen, um in der Reihenfolge zu tun, wie die man ip Punkte .

up ip route add default table 101 dev eth1 via 192.168.1.65
up ip rule add from 192.168.1.64/27 lookup 101
down ip rule del from 192.168.1.64/27
down ip route del default table 101 via 192.168.1.65

Oder Sie erhalten nach einem ifdown-ifup-Befehl die Fehlermeldung @ifdown (Standardmeldung, dass die Peripheriegeräte nicht richtig konfiguriert sind) und @ifup, dass in Tabelle 101 keine Route angegeben ist.

Craig Constantine
quelle
Schön, aber ich verwende nicht gerne rc.local .. auf der Suche nach einem eleganteren letzten Schritt ..
drAlberT
Es wurde bearbeitet, nehme ich an :) ..
drAlberT
Gibt es tatsächlich eine / etc / interfaces-Datei oder ist das ein Tippfehler?
user100464
@ user100464/etc/network/interfaces
Zenexer
Die Antwort enthält einen Verweis auf den ersteren. Ich kann es nicht bearbeiten.
user100464