Neben der Standardroute können Sie auch weitere Routen konfigurieren.
Beispielsweise könnte Ihr Server zwei Schnittstellen haben (eth0 und eth1). Standardmäßig wird der gesamte Datenverkehr über die Schnittstelle eth0 geleitet, unabhängig davon, welche IP-Adresse Sie auf eth1 konfiguriert haben.
Um den eingehenden und ausgehenden Datenverkehr über eth1 zu leiten, müssen Sie neben der Standardroute (eth0) auch zusätzliche Routen für eth1 hinzufügen.
In diesem Tutorial verwenden wir das folgende Beispiel:
- eth0 wurde mit der IP-Adresse 19.86.101.54 mit der Netzmaske 255.255.255.0 und dem Standardgateway 19.86.101.1 konfiguriert
- eth1 wurde mit der IP-Adresse 19.86.100.176 mit der Netzmaske 255.255.255.0 konfiguriert und die Gateway-IP-Adresse ist 19.86.100.1
Sie können Ihre aktuelle IP-Adresse Ihrer Schnittstellenkarten mit dem Befehl ifconfig wie unten gezeigt anzeigen.
# ifconfig -a eth0 Link encap:Ethernet HWaddr 00:50:56:8E:0B:EC inet addr:19.86.101.54 Bcast:19.86.101.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3735 errors:0 dropped:0 overruns:0 frame:0 TX packets:336 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:295679 (288.7 Kb) TX bytes:50312 (49.1 Kb) eth1 Link encap:Ethernet HWaddr 00:50:56:8E:27:0D inet addr:19.86.100.176 Bcast:19.86.100.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:840 (840.0 b) TX bytes:0 (0.0 b)
Außerdem zeigt die Ausgabe des netstat-Befehls an, dass das Standard-Gateway auf eth0 zeigt,
# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 19.86.101.1 0.0.0.0 UG 0 0 0 eth0 19.86.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 19.86.101.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
Mit den obigen Einstellungen können Sie möglicherweise beide Gateways pingen und problemlos mit anderen Geräten kommunizieren. Denken Sie jedoch daran, dass der gesamte Datenverkehr standardmäßig über eth0 geleitet wird.
Wenn Sie die IP-Adresse 19.86.100.176 von außerhalb Ihres Netzwerks anpingen, stellen Sie möglicherweise fest, dass sie nicht angepingt werden kann.
Um dies zu implementieren, müssen Sie eine neue Richtlinie in der Routing-Tabelle erstellen. Die Routing-Tabelle befindet sich unter /etc/iproute2/rt_tables. Die anfängliche Regeldatei vor der Konfiguration kann wie unten gezeigt aussehen.
# cat /etc/iproute2/rt_tables # # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep #
Um alle aktuellen Regeln anzuzeigen, verwenden Sie den ip-Befehl wie unten gezeigt:
# ip rule show 0: from all lookup local 32766: from all lookup main 32767: from all lookup default
Erstellen Sie zuerst eine Sicherungskopie der rt_Tables, bevor Sie Änderungen vornehmen.
cd /etc/iproute2 cp rt_tables rt_tables.orig
Erstellen Sie als Nächstes einen neuen Richtlinien-Routing-Tabelleneintrag in der Datei /etc/iproute2/rt_tables:
echo "1 admin" >> /etc/iproute2/rt_tables
Fügen Sie nun die Routing-Einträge in der Admin-Tabelle hinzu.
ip route add 19.86.100.0/24 dev eth1 src 19.86.100.176 table admin ip route add default via 19.86.100.1 dev eth1 table admin
Im obigen Beispiel:
- Im ersten ip-Befehl fügen wir das Subnetz 19.86.100.0 mit einer Netzmaske 255.255.255.0 mit der Quell-IP-Adresse 19.86.100.176 und dem Gerät eth1 zur Admin-Tabelle hinzu.
- Im zweiten ip-Befehl fügen wir die Route 19.86.100.1 zur Admin-Tabelle hinzu. Auf diese Weise leiten alle in der Admin-Tabelle definierten Regeln den Datenverkehr über das Gerät eth1.
Sobald die obigen Befehle erfolgreich ausgeführt wurden, müssen Sie dem Betriebssystem mitteilen, wie es diese Tabelle verwenden soll.
In der „ip rule show“ ist Ihnen vielleicht die Zeile „32766:from all lookup main“ aufgefallen. Dies ist die Zeile, die das Betriebssystem anweist, den gesamten Datenverkehr weiterzuleiten, der in der „Haupt“-Tabelle definiert ist, die das Standard-Gateway ist.
Alle Regeln werden in aufsteigender Reihenfolge ausgeführt. Also fügen wir Regeleinträge über der „Haupt“-Tabelle hinzu.
ip rule add from 19.86.100.176/24 table admin ip rule add to 19.86.100.176/24 table admin ip route flush cache
Im obigen Beispiel:
- Der erste Befehl fügt die Regel hinzu, dass der gesamte Datenverkehr zur IP von eth1 die „admin“-Routingtabelle anstelle der „main“-Routingtabelle verwenden muss.
- Der zweite Befehl fügt die Regel hinzu, dass der gesamte ausgehende Datenverkehr von der IP von eth1 die „admin“-Routingtabelle anstelle der „main“-Routingtabelle verwenden muss.
- Der dritte Befehl wird verwendet, um all diese Änderungen in den vorherigen Befehlen zu übernehmen
Überprüfen Sie abschließend mit dem folgenden Befehl, ob Ihre Änderungen ordnungsgemäß vorgenommen wurden:
# ip rule show 0: from all lookup local 32764: from all to 19.86.100.176/24 lookup admin 32765: from 19.86.100.176/24 lookup admin 32766: from all lookup main 32767: from all lookup default
An diesem Punkt sollten Sie in der Lage sein, die IP-Adresse 19.86.100.176 vom externen Netzwerk zu pingen und den gesamten Datenverkehr anzuzeigen, der eth1 verwenden soll, funktioniert wie erwartet.
Um diese Änderungen über einen Neustart hinweg dauerhaft zu machen, können Sie diese Befehle zu /etc/init.d/boot.local (für SUSE Linux) oder /etc/rc.d/rc.local (für Redhat, CentOS) hinzufügen.
Wenn Sie eine weitere IP-Adresse in einem anderen Subnetz konfigurieren möchten, wiederholen Sie alle obigen Schritte, aber verwenden Sie einen anderen Tabellennamen. Verwenden Sie anstelle der „admin“-Tabelle die „admin-new“-Tabelle.