Soweit ich weiß, wird die grundlegende Netzwerkkonfiguration in eingegeben /etc/network/interfaces
und das System generiert die Routing-Tabelle aus diesen Informationen. Mir wurde auch beigebracht, dass im Allgemeinen /etc/network/interfaces
der Ort ist, an dem dauerhaft benutzerdefinierte Befehle hinzugefügt werden können, um die Routing-Tabelle zu manipulieren (manchmal wird auch vorgeschlagen, dass /etc/rc.local
oder ein benutzerdefiniertes Skript in ist /etc/network/if-up.d/
). Darüber hinaus kann man benutzerdefinierte Routing-Tabellen in angeben /etc/iproute2/rt_tables
.
- Gibt es andere Stellen, die die (Haupt-)Routingtabelle beeinflussen?
- Gibt es insbesondere noch andere Möglichkeiten, als
/etc/network/interfaces
manuell hinzugefügte/gelöschte Routen dauerhaft zu machen?
- Gibt es insbesondere noch andere Möglichkeiten, als
- Verfügt ein System mit mehreren Netzwerkkarten über ein Konzept fürprimärUndsekundäre Netzwerkschnittstellenoder sind das nur Formulierungen, die dem Benutzer helfen sollen? (Beim Setup muss man das primäre if auswählen und es
/etc/network/interfaces
wird einen entsprechenden Kommentar enthalten.) Wenn ein solches Konzept existiert, wo kann es konfiguriert werden? - Gibt es Unterschiede im Routingtabellenkonzept zwischen Debian Squeeze und Debian Jessie?
Hintergrund meiner Frage ist, dass ich ein älteres Debian Squeeze-System und ein neues Debian Jessie-System habe, die mit unterschiedlichen Routing-Tabellen booten, aber (soweit ich das beurteilen kann) identisch konfiguriert sind. Ich könnte die Routing-Tabelle manuell an meine Bedürfnisse anpassen und die Änderungen dauerhaft machen, /etc/network/interfaces
aber ich möchte verstehen, was vor sich geht.
BEARBEITEN
Hier sind die Konfigurationsdateien beider Maschinen. Ich habe aus Datenschutzgründen die ersten Teile jeder IP-Adresse geändert. Subnetze und die Adressteile der jeweiligen Netzwerke wurden jedoch nicht geändert. Das /etc/network/interfaces.d/
Verzeichnis auf der Jessie-Maschine ist leer.
/etc/iproute2/rt_tables
auf Jessie
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
/etc/iproute2/rt_tables
auf Squeeze
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
/etc/rc.local
auf Jessie
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
/etc/rc.local
auf Squeeze
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
/etc/network/interfaces
auf Jessie
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet static
address 143.103.155.254
netmask 255.255.255.0
network 143.103.155.0
gateway 143.103.155.254
# The primary network interface
auto eth2
iface eth2 inet static
address 27.126.19.194
netmask 255.255.255.248
network 27.126.19.192
broadcast 27.126.19.199
gateway 27.126.19.193
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 143.103.5.1
dns-search subdomain.domain.de
/etc/network/interfaces
auf Squeeze
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 143.103.155.254
netmask 255.255.255.0
network 143.103.155.0
gateway 143.103.155.254
auto eth2
iface eth2 inet static
address 27.126.19.194
netmask 255.255.255.248
network 27.126.19.192
broadcast 27.126.19.199
gateway 27.126.19.193
Ausgabe von ip route show table main
auf Jessie
default via 143.103.155.254 dev eth1
143.103.155.0/24 dev eth1 proto kernel scope link src 143.103.155.254
27.126.19.192/29 dev eth2 proto kernel scope link src 27.126.19.194
Ausgabe von ip route show table main
on Squeeze
27.126.19.192/29 dev eth2 proto kernel scope link src 27.126.19.194
143.103.155.0/24 dev eth0 proto kernel scope link src 143.103.155.254
default via 27.126.19.193 dev eth2
default via 143.103.155.254 dev eth0 scope link
Ausgabe von route -n
auf Jessie
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 143.103.155.254 0.0.0.0 UG 0 0 0 eth1
143.103.155.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
27.126.19.192 0.0.0.0 255.255.255.248 U 0 0 0 eth2
Ausgabe von route -n
on Squeeze
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
27.126.19.192 0.0.0.0 255.255.255.248 U 0 0 0 eth2
143.103.155.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 27.126.19.193 0.0.0.0 UG 0 0 0 eth2
0.0.0.0 143.103.155.254 0.0.0.0 UG 0 0 0 eth0
Antwort1
Ihre beiden/etc/Netzwerk/SchnittstellenDateien enthalten ein und denselben Fehler: Das Standard-Gateway ist zweimal angegeben.
Sie können mehrere Standard-Gateways nur unter ganz bestimmten Umständen haben (unter Vernachlässigung der Metriken): dass Sie mehrere Routing-Tabellen haben, die jeweils in der Datei angegeben sind/etc/iproute2/rt_tables, aber jede Routing-Tabelle muss eineeinzelStandard-Gateway.
Stattdessen geben Sie für jede Schnittstelle eine an, und zwar imderselbe Tisch hauptsächlich. Was wir hier sehen, ist ein kleiner Unterschied in der Umsetzung deriproute2Paket und wie es auf Fehler reagiert.
Im Fall vonJessie, wird das erstgenannte Gateway, 143.103.155.254, als das einzige Gateway festgelegt, einfach weil es zuerst erwähnt wird. Wenn die Deklaration des zweiten Gateways, 27.126.19.193, erfolgt, geschieht nichts, weil esnichtdavor
ip route del default
Squeeze hingegen geht mit dem Fehler anders um: Es begrenzt dieUmfangdes zweiten Tores zuLink lokal. Weitere Informationen zuUmfang, sehendas iproute2-Handbuch, welche Staaten:
Gültigkeitsbereichslink --- Die Adresse ist linklokal und nur auf diesem Gerät gültig.
Wikipediabesagt, dass:
In einem Computernetzwerk ist eine Link-Local-Adresse eine Netzwerkadresse, die nur für die Kommunikation innerhalb des Netzwerksegments (Link) oder der Broadcast-Domäne gültig ist, mit der der Host verbunden ist.
Somit ist der Bereich (unpräzises Synonym fürUmfang) des zweiten Gateways war weitgehend auf dessen Netzwerksegment beschränkt (dh, seine Broadcast-Domäne 143.103.155.0/24). Somit ist auch Jessie, wenn auch auf andere Weise, mit Ihrer falschen Deklaration mehrerer Gateways in derselben Routing-Tabelle zurechtgekommen.
Natürlich gibt es keineerwartetes Verhaltenwie Pakete mit Fehlern umgehen. Die richtige Art und Weise, wie Sie Ihre/etc/Netzwerk/SchnittstellenDatei ist die Anweisung wegzulassen
gateway 143.103.155.254
insgesamt (das ist auch seltsam, weil es heißt, dass das Gateway Ihres eigenen PCs ... er selbst ist!). Um eine gute Erklärung dazu zu sehen, lesen Sie dieErster Lösungsabschnitt hier; später wird auch erklärt, wie mehrere Gateways mit mehreren Routing-Tabellen hinzugefügt werden.
Wenn, wie Sie behaupten,
Ich kann es zur Überprüfung noch einmal versuchen, aber ich bin ziemlich sicher, dass ich das bereits versucht habe und trotzdem keine externe IP erreichen konnte.
es liegt höchstwahrscheinlich daran, dass Sie die IPv4-Weiterleitung von einer Schnittstelle zur anderen nicht zugelassen haben (als sudo:
echo 1 > /proc/sys/net/ipv4/ip_forward
kümmert sich darum) oder weil Ihre iptables-Regeln die Weiterleitung blockiert haben.
Antwort2
Der Hauptunterschied zwischen Squeeze und Jessie besteht darin, dass für den Ersten und den Letzten ip
ein Befehl aufgerufen wird .ifconfig
iproute2
ifconfig kennt keine Mehrfach-Gateway-Konfigurationen, zumindest nicht ohne Metriken. Deshalb gibt es Unterschiede zwischen den beiden ip route
Befehlen (oder route -n
(veraltet))
iproute2 kann mehrere Routingtabellen verfolgen
ip route show all
Das Konzept der primären und sekundären Netzwerkschnittstellen dient lediglich der Unterscheidung. Normalerweise werden sie als eth0 (1.) und eth1 (2.) bezeichnet, die Reihenfolge kann jedoch variieren!
Und ja, Sie können eine permanente Route festlegen, indem Sie Folgendes /etc/network/interfaces
verwenden :up
up ip route add 1.2.3.4/24 via 1.2.3.1