Routing-Funktion
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Ein Router ist eine netzwerktechnische Funktion (Routing-Funktion), welche Netzwerkpakete auf Ebene 3 (L3, layer 3, Schicht 3, Vermittlungsschicht, auch Netzwerkschicht) im Netzwerkschichtenmodell zwischen Netzwerken vermittelt. Diese Funktion kann als Hardware-Gerät, aber auch per Software realisiert werden.
Unter Ubuntu lässt sich diese Aufgabe ebenfalls lösen und auf einem Rechner umsetzen. Man benötigt lediglich das Paket iproute2, welches bei jedem Ubuntu-System installiert ist.
Ein Router bearbeitet Netzwerkpakete nur eines bestimmten Protokolls auf L3, also z.B. nur IPv4, nur IPv6, nur CAN. Dabei vermittelt er nicht zwischen den verschiedenen Protokollen auf L3. In der Regel bearbeitet ein IP-Router zwar beide Protokolle IPv4 und IPv6, jedoch sind das bei strenger Betrachtung zwei voneinander unabhängige Funktionen, welche auf gemeinsamer Hardware realisiert sind.
Dagegen ist die Umsetzung verschiedener L2-Übertragungstechniken eine typische Aufgabe für Hardware-Router, also beispielsweise das Auspacken eines IP-Paketes aus einem per WiFi/WLAN empfangenen Nachricht, das Verpacken dieses Paketes in eine Ethernet-Nachricht und Aussenden über eine geeignete Schnittstelle. In diesem Artikel wird vorausgesetzt, dass der Rechner über mehrere (Hardware- oder Software-) Schnittstellen verfügt, die IP-Pakete empfangen und aussenden können. Die Betriebsbereitstellung dieser Schnittstellen ist nicht Gegenstand dieses Artikels, siehe dazu:
In diesem Artikel wird der Begriff "Router" eingegrenzt auf die Aufgabe der Weitergabe von IP-Paketen. In den Artikeln
findet man Informationen zu als "Router" bezeichneten Geräten mit zusätzlichen Funktionen und wie man diese mit Linux realisieren kann.
Hinweis:
In diesem Artikel beschränken sich die Beispiele auf einen IPv4-Router. Zur Übertragung auf einen IPv6-Router müssen nur diese Hinweise beachtet werden:
Schreibweise von IP Adressen
Angabe des Protokolls: Statt "
ip route
" bzw. "ip -4 route
" ist für IPv6 "ip -6 route
" anzuwenden.
In diesem Artikel wird ein isolierter Router vorausgesetzt, der ausschließlich lokal statisch konfiguriert wird und nicht mit seinen Nachbarn über Routing-Protokolle Informationen über Leitwege austauscht. Dies ist eigentlich im Internet ein ungewöhnliches Szenario, aber die Behandlung von Routing-Protokollen kann hier nicht erfolgen.
Praktisches Beispiel¶
Die Arbeitsweise soll zuerst an einem praktischen Beispiel dargestellt werden:
Der Rechner verfügt über mehrere Netzwerkschnittstellen NET1
, NET2
, Paris
, Moskau
. Man mag sich vorstellen, dass NET1
eine Ethernet-Schnittstelle ist und NET2
ein bereits funktionierender WLAN-Zugangspunkt, sowie die Schnittstellen Paris
und Moskau
funktionierende VPN-Verbindungen zu Außenstellen der Firma darstellen. Tatsächlich ist aber für das Routing völlig nebensächlich, welche Übertragungstechnik die einzelnen Schnittstellen verwenden.
Aufgabe¶
Es sollen folgende Vorgaben erfüllt werden:
Die Firma verwendet als IP-Netz den Bereich 10.10.0.0/16 (65536 Adressen).
Die Außenstellen verwenden den Teilbereich 10.10.252.0/22 (1024 Adressen).
Die große Außenstelle Paris benötigt viele Adressen und verwendet daher den Teilbereich 10.10.255.0/24 (256 Adressen).
Die kleine Außenstelle Moskau benötigt nur 8 Adressen und verwendet 10.10.254.248/29.
Im Grunde darf jeder mit jedem sprechen, bis auf diese Ausnahmen:
Die Rechner der Personalabteilung (10.10.0.0/24, 256 Adressen) dürfen nicht ins WLAN (= 10.10.254.0/24).
Der Rechner der Entwicklungsabteilung 10.10.1.42 darf nicht mit Russland verkehren.
Lösung mit klassischem Routing¶
Zur Lösung der Aufgabe mittels klassischem Routing gibt der Administrator diese Befehle ein:
Auf dem als Router vorgesehenen Rechner:
ip route add blackhole 0.0.0.0/0 ip link set NET1 up ; ip route add 10.10.0.0/16 dev NET1 ip link set NET2 up ; ip route add 10.10.254/24 dev NET2 ip route add prohibit 10.10.252/22 ip link set Paris up ; ip route add 10.10.255/24 dev Paris ip link set Moskau up ; ip route add 10.10.254.248/29 dev Moskau
Auf dem Rechner der Entwicklungsabteilung:
ip route add prohibit 10.10.254.248/29
Auf jedem Rechner der Personalabteilung oder auf dem nachgeschalteten Router für die Personalabteilung:
ip route add prohibit 10.10.254/24
An dieser Lösung ist natürlich unschön, dass die Verkehrsverbote nicht auf dem Router, sondern auf den Zielrechnern konfiguriert werden müssen. Alternativ kann man diese Methoden verwenden:
Man verwendet zusätzlich zum klassischen Routing auf dem Router noch Netfilter und konfiguriert eine Firewall.
Man verwendet Advanced Routing.
Das allgemeine Schema zur Definition eines Leitwegs (engl. route) lautet:
ip route add TYP-DER-ROUTE ZIELBEREICH-DER-ROUTE WEG-DER-ROUTE
Im Beispiel werden als Typ für den Leitweg blackhole
, prohibit
und unicast
verwendet. blackhole
und prohibit
machen genau das, was ihr Name verspricht; der Typ unicast
ist der Normalfall und muss deshalb nicht (kann aber) angegeben werden. Die Reihenfolge, in der man die Definitionen eingibt, ist weitgehend gleichgültig.
Für jedes auf dem Router eintreffende IP-Paket wird bei der Routing-Entscheidung geprüft, welcher Leitweg am besten mit der Zieladresse des IP-Pakets übereinstimmt. Man kann sich vorstellen, dass die Übereinstimmung zwischen Leitweg und Zieladresse in absteigender Reihenfolge der Länge der Netzmasken geprüft wird. Wenn für jedes in der Netzmaske gesetzte Bit Zieladresse und Leitweg gleich sind, dann wird dieser Leitweg benutzt und mit dem Paket wird wie unter WEG-DER-ROUTE angegeben verfahren.
Konkret wird mit einem IP-Paket für 10.10.253.137
so geprüft:
Passt auf
10.10.254.248/29
(Moskau)? NeinPasst auf
10.10.254/24
(WLAN)? NeinPasst auf
10.10.255/24
(Paris)? NeinPasst auf
10.10.252/22
? Ja, es ist für eine Außenstelle bestimmt, aber für keine bekannte. Damit hat es aber in der Zentrale kein gültiges Ziel. Also wirf das Paket weg und benachrichtige den Absender.
Wie man im Beispiel sieht, darf man die IPv4-Bereiche in einer abkürzenden Schreibweise angeben, indem man ganze Byte mit dem Wert 0
weg lässt. Alternativ darf man auch die Netzmaske ausschreiben, also z.B. /255.255.252.0
statt /22
.
Nach einiger Zeit wird sich die Personalabteilung beim Administrator beschweren, weil sie „Moskau nicht erreichen kann“. Das liegt an der Überlappung der Adressenbereiche für WLAN und Moskau und ist theoretisch leicht zu korrigieren. Man muss nur für die Sperre des WLANs in der Personalabteilung diese Ausnahme für Moskau hinzufügen:
ip route add 10.10.254.248/29 dev eth0
Allerdings bei jedem Rechner in der Personalabteilung. Möglicherweise gibt es unterschiedliche Hardware in dieser Abteilung und manche Rechner verwenden statt eth0
einen anderen Schnittstellennamen wie z.B. emp0s24
oder enp23s0
oder … (Zur Vermeidung solcher Alpträume lese Advanced Routing.)
Klassisches Routing¶
Hierbei basiert die Entscheidung über das Schicksal eines IP-Pakets ausschließlich auf seiner Zieladresse und einigen wenigen Datenfeldern im Header des IP-Paketes: (Das folgende ist eine stark vereinfachende Darstellung des komplexen Verhaltens nach RFC 1812!)
Version (Bits 1-4 im Header)
TTL
Dienstleistungsfeld (engl. Differentiated Services Field, DS field), bei IPv4 Bits 9-14, bei IPv6 Bits 5-10 im Header. Früher wurden diese Stellen für IP Precedence, TOS (type of service) bzw. TC (traffic class) verwendet. (Für alle diese Funktionalitäten wird verbreitet (so auch hier, und eigentlich veraltet) die Bezeichnung "TOS" verwendet.)
Zieladresse
Im Netzwerk-Subsystem im Linux-Kernel wird zuerst neben formalen Anforderungen wie z.B. Paketlänge der Wert im Feld Version im Netzwerkpaket geprüft. Wenn hier der Wert für IPv4 bzw. IPv6 steht, werden später entsprechend die konfigurierten Routen für IPv4 bzw. IPv6 untersucht, sonst wird das Netzwerkpaket vernichtet.
Die Bearbeitung eines IP-Pakets beginnt mit einer Entscheidung, ob das Paket (nur/auch) lokal zugestellt oder (nur/auch) weitergesendet werden soll.
Für weiter zu sendende Pakete (und nur für solche) wird der TTL-Wert im Header dekrementiert. Wenn sich dabei der Wert 0 ergibt, wird das Paket vernichtet.
Ein Router muss das Dienstleistungsfeld nicht beachten. Wenn es mit zur Entscheidung verwendet wird, dann wird
zuerst die beste Route für die Zieladresse gesucht, bei der der TOS-Wert der Route exakt mit dem TOS-Wert des Netzwerkpakets übereinstimmt,
und wenn dies nicht gelingt, wird die beste Route mit dem TOS-Wert 0 für die Zieladresse gesucht.
Moderne Linux-Kernel beherrschen das TOS-Routing und ab Version 2.6.X ist es auch unveränderlich aktiviert. Wer es nicht benötigt, ignoriert es einfach. In diesem Artikel wird TOS nicht weiter behandelt, d.h. alle Routen haben den TOS-Wert 0.
Wenn das Paket die Bearbeitung beim Routing überlebt, kennt der Kernel des Routers nun als Ergebnis eine Schnittstelle, an die das Paket ausgegeben werden soll und ggf. auch das aus seiner Sicht nächste Ziel für das IP-Paket. Wenn er selbst kein nächstes Ziel ermittelt hat, nimmt er als nächstes Ziel die Zieladresse aus dem Paket.
Linux benutzt für Routing mehrere Routing-Tabellen, in denen die Leitwege vermerkt werden. Wenn man klassisches Routing verwenden will, muss man sich damit nicht beschäftigen, da automatisch alle zur Beurteilung des klassischen Routing wichtigen Leitwege in die Haupttabelle (table main) geschrieben werden und einige im Hintergrund arbeitende Leitwege in eine lokale Tabelle (table local), um die man sich fast nie kümmern muss. Die Angabe einer Routing-Tabelle ist dagegen erforderlich für Advanced Routing.
Weiterleitung von IP-Paketen¶
Das IP-Routing (auch: IP-Forwarding) muss über Kernel-Variablen explizit eingeschaltet werden:
sysctl -w net.ipv4.ip_forward=1 # für IPv4, alte Methode sysctl -w net.ipv4.conf.all.forwarding=1 # für IPv4, moderne Variante sysctl -w net.ipv6.conf.all.forwarding=1 # für IPv6
Man kann dies über entsprechende Einträge der Datei /etc/sysctl.conf oder besser in einer Datei unter /etc/sysctl.d/ dauerhaft beim Hochlauf des Rechners erledigen:
cat /etc/sysctl.d/20-router.conf
net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1
Diese Variablen machen mehr als nur die Weiterleitung ein-/auszuschalten. Sie ändern das generelle Verhalten des Rechners zwischen Host-Modus nach RFC 1122 und Router-Modus nach RFC 1812. Details können in der Kernel-Dokumentation nachgelesen werden.
Route anlegen¶
Wie im Beispiel gezeigt, benötigt man nur das Programm ip mit dem Befehl route
zur Konfiguration der Leitwege. Das Schema
ip route add TYP-DER-ROUTE ZIELBEREICH-DER-ROUTE WEG-DER-ROUTE
reicht für die meisten Fälle aus.
Für TYP-DER-ROUTE sind die im Abschnitt Leitwege erklärten Varianten möglich. Meistens lässt man diese Angabe weg und meint dann den Standardtyp
unicast
.
Für ZIELBEREICH-DER-ROUTE muss als Adressbereich eine IP-Adresse und eine Netzmaske angegeben werden.
Möglich sind bei IPv4 diese Schreibweisen am Beispiel „Adresse ist 192.0.2.0, Netzmaske beginnt mit 24 Bits mit dem Wert 1 und wird mit 8 Bits mit dem Wer 0 auf 32 Bit aufgefüllt“:
192.0.2.0/24
192.0.2.0/255.255.255.0
192.0.2/24
Dies meint immer den Adressbereich: 192.0.2.0 - 192.0.2.255. Man vermeide führende Nullen im ersten Byte, denn das wird dann als Oktalzahl verstanden:
010.12.377.0/24
bedeutet8.10.255.0/24
!
Bei IPv6 gibt es nur eine Schreibweise, man darf aber einmal eine Folge von Null-Bits abkürzen:
2001:0db8:0:0:0:0:0:0/16
2001:db8::/16
Dies meint den Adressbereich: 2001:0db8:0:0:0:0:0:0 - 2001:0db8:ffff:ffff:ffff:ffff:ffff:ffff
Hinweis:
Wichtig: Für jedes Bit, welches in der Netzmaske den Wert 0 hat, muss auch in der IP-Adresse das entsprechende Bit den Wert 0 haben!
Für "WEG-DER-ROUTE" sind diese Varianten häufig:
"dev SCHNITTSTELLE": z.B. "dev lo", "dev NET1", "dev Paris". Voraussetzung: Schnittstelle muss betriebsbereit (
up
) sein."via IP-ADRESSE": Voraussetzung: Es muss eine Route zu IP-ADRESSE bereits bekannt sein.
Die Reihenfolge, in der man die Leitwege definiert, ist weitgehend gleichgültig und unterliegt nur den vorstehend genannten Voraussetzungen.
Zur Definition eines über die Schnittstelle NET1
erreichbaren Gateways mit der Adresse 10.10.3.42
für den Netzbereich 10.10.252/22
sind also diese Befehle in dieser Reihenfolge erforderlich:
ip link set NET1 up ip route add 10.10.3.0/24 dev NET1 ip route add 10.10.252/22 via 10.10.3.42
Die Angabe 10.10.3.0/24
könnte auch anders lauten; wichtig ist nur, dass die Adresse des einen Rechners 10.10.3.42
in dem hier angegebenen Zielbereich enthalten ist.
Es gibt aber noch eine Fülle von Zusätzen und Varianten, welche hier nicht alle besprochen, aber in der Manpage nachgelesen werden können:
man ip-route
Beim Advanced Routing fügt man die Routing-Tabelle zusätzlich am Ende dem Befehl hinzu, beispielsweise:
ip route add 10.10.3.0/24 dev NET1 # schreibt Leitweg in die Maupttabelle ip route add 10.10.3.0/24 dev NET1 table 666 # schreibt Leitweg in die Tabelle Nr. 666
Routen anzeigen¶
Die Gesamtheit der Leitwege zeigen diese Befehle an:
ip route list table all routel
Statt list
kann man auch show
schreiben.
Meistens möchte man nur die Leitwege für ein Protokoll sehen:
ip -4 route list table all # für IPv4 ip -6 route list table all # für IPv6
… und auch nur die Haupttabelle:
ip -4 route # für IPv4 ip -6 route # für IPv6
Der Befehl ip route show
hat situationsabhängig unterschiedliche Vorgaben; manchmal zeigt er nur die Leitwege für IPv4, manchmal die Leitwege für beide Protokolle IPv4 und IPv6 an. Da man ohnehin die beiden Protokolle getrennt beurteilen muss, sollte man in der Praxis immer das Protokoll explizit angeben.
Bei der Ausgabe von Routen wird durchweg für die Netzmaske die Bitschreibweise /n
benutzt.
Route löschen¶
Löschen kann man eine Route, indem man in dem Befehl zum Anlegen der Route das Wort add
durch del
ersetzt.
Alle zu einer Schnittstelle gehörenden Leitwege löscht dieser Befehl:
ip -4 route flush # für IPv4 ip -6 route flush # für IPv6
Leitwege¶
Der Typ des Leitwegs bestimmt, was mit dem gerade untersuchten IP-Paket geschehen soll. Grundsätzlich möglich sind Weiterleitungen nach verschiedenen Methoden und Vernichtung mit und ohne Benachrichtigung des Absenders.
Lokale Wege¶
Lokale Leitwege umfassen die Arten local
sowie bei IPv4 broadcast
, bei IPv6 anycast
und multicast
:
Leitwege vom Typ
local
sorgen für die lokale Zustellbarkeit von IP-Paketen. Ein Rechner kann nur solche Pakete empfangen, welche in lokalen Leitwegen beschrieben sind, und diese gelangen aus dem Kernel in den Userspace und landen bei jedem Anwendungsprogramm, welches einen passenden Netzwerk-Socket geöffnet hat. (Siehe jedoch tuntap)Leitwege vom Typ
broadcast
verhalten sich bei IPv4 zunächst genau so wie solche von Typelocal
. Zusätzlich wird aber auch eine Kopie des Pakets über die in der Route angegebenen Schnittstelle ausgesendet unter Verwendung der L2-Broadcast-Adresse der Schnittstelle. Leitwege vom Typbroadcast
gibt es bei IPv6 nicht, weil das Protokoll IPv6 gar keinen Broadcast kennt. Ersatzweise werden Leitwege vom Typmulticast
verwendet.Zu
anycast
undmulticast
siehe Sonderwege.
Diese Leitwege werden selten direkt über Befehle mit ip route
angelegt, sondern meistens automatisch bei der Zuweisung einer IP-Adresse an den Rechner mittels ip addr
.
Wenn solche Routen (explizit oder automatisch) angelegt werden, landen sie immer in der Routing-Tabelle local
und nicht in main
, es sei denn, man gibt die Tabelle explizit an.
Normale Wege¶
Leitwege vom Typ
unicast
sind der Normalfall für die Weiterleitung. Dieser Typ muss nicht in der Definition von Routen angegeben werden und wird auch bei der Anzeige nicht dargestellt. Ein Paket, welches eine solche Route nehmen soll, wird über die beim Routing ermittelte Schnittstelle an das beim Routing ermittelte nächste Ziel (next hop) geschickt. Dieses nächste Ziel ergibt sich entweder aus dem Leitweg oder es ist die Zieladresse des IP-Pakets. Auf L2 wird die Unicast-Adresse dieses nächsten Ziels verwendet; wenn diese unbekannt ist, wird sie z.B. bei Ethernet über ARP für IPv4 bzw. ICMPv6 für IPv6 ermittelt.
Verbotene Wege¶
Leitwege der Typen blackhole
, unreachable
, prohibit
vernichten alle das IP-Paket. Sie unterscheiden sich nur bei der Benachrichtigung des Absenders:
blackhole
: Keine Benachrichtigungunreachable
: ICMP-Paket mit Fehlermeldung „nicht erreichbar“ (destination/host/network unreachable)prohibit
: ICMP-Paket mit Fehlermeldung „administrativ verboten“ (communication administratively prohibited )
Irrwege¶
Leitwege vom Typ
nat
werden seit Linux 2.6 nicht mehr unterstützt. Zur Konfiguration von NAT verwendet man Netfilter.
Sonderwege¶
Bei Linux kann man zwar Leitwege der Typen anycast
und multicast
definieren, diese werden jedoch vom Netzwerk-Code im Kernel nicht artgerecht behandelt. Wer Anycast verwenden oder Mulicast-Pakete routen möchte, benötigt dafür zusätzliche Software wie smcrouter, pimd oder mrouted. (mrouted ist nicht mehr in den Paketquellen enthalten.) Diese Themen werden in diesem Artikel nicht weiter behandelt.
Leitwege vom Typ
anycast
werden vom Netzwerk-Code im Kernel wie solche vom Typlocal
behandelt.Leitwege vom Typ
multicast
werden vom Netzwerk-Code im Kernel nur für ihre Schnittstelle beachtet und nicht an andere Schnittstellen weitergegeben.Leitwege vom Typ
throw
sind gar keine Leitwege, aber wichtig für Advanced Routing. Wenn ein Paket auf einen solche Route passt, wird die Bearbeitung der aktuellen Routing-Tabelle beendet. Die Bedeutung einer solchen Route entspricht: „Diese Routing-Tabelle ist nicht für dieses Paket zuständig.“ Es kann dann in einer anderen Routing-Tabelle nach einem Leitweg für das Paket gesucht werden.Leitwege vom Typ
default
gibt es ebenfalls nicht, obwohl man oft ungenau über eine solche sog. „default Route“ spricht. Man meint dann aber eigentlich einen Leitweg von Typunicast
mit einem speziellen Wert mit dem Namendefault
für den ZIELBEREICH-DER-ROUTE. Ein Leitweg mit diesem Zielbereich ist der am wenigsten spezielle von allen möglichen Leitwegen und wird daher immer als letzter geprüft. Seine Bedeutung ist daher: „Wenn alle speziellen Ziele für dieses Paket nicht richtig sind, dann schicke das Paket an das Ziel dieser Route.“IPv4:
default
=0/0
oder ausgeschrieben0.0.0.0/0
bzw.0.0.0.0/0.0.0.0
IPv6:
default
=::/0
oder ausgeschrieben0:0:0:0:0:0:0:0/0
Administration¶
Jeder IPv4-Router benötigt eine Router-ID, weil er sonst bestimmte (hier nicht besprochene) Optionen für IPv4-Pakete nicht richtig bearbeiten kann. Als Router-ID wird eine seiner eigenen IPv4-Adressen verwendet. Somit muss jeder IPv4-Router auch mindestens eine eigene IP-Adresse besitzen, über den man ihn von außen erreichen kann. Für IPv6 gilt das entsprechend. Es ist gleichgültig, welcher Schnittstelle diese IP-Adresse(n) formal zugeordnet wird; man kann auch die Schnittstelle lo
dafür verwenden.
Fernzugriff¶
Zur Verwaltung eines Routers benutzt man in der Regel einen Fernzugriff per SSH, da der Rechner als Router keine Bediengeräte benötigt und in der Regel auch über keine verfügt. Dazu muss man einen SSH-Server installieren und diesen gegen missbräuchliche Verwendung absichern.
Der Zugriff von einen Windows-System aus über eine SSH-Verbindung ermöglicht das Programm PuTTY.
Aktivierung von Routen und Regeln¶
Neu definierte oder geänderte Leitwege werden sofort wirksam ohne einen gesonderten Aktivierungsbefehl.
Zur Aktivierung neuer oder geänderter Regeln für das Advanced Routing empfiehlt die Dokumentation jedoch diesen Befehl:
ip route flush cache
Backup und Restore¶
Die zum Betrieb des Router benötigten Leitwege kann man interaktiv eingeben, in einem Skript hinterlegen oder beim Hochlauf des Rechners über ein gängiges Netzwerk-Konfigurationsprogramm wie z.B. ifupdown, systemd-networkd, oder NetworkManager konfigurieren lassen.
Auch das Dienstprogramm ip ermöglicht, den aktuellen Bestand an Leitwegen zu sichern und wieder zu restaurieren:
ip route save table all > Leitwege # sichert die Leitwege aus allen Routing-Tabelle in der binären Datei Leitwege ip route restore < Leitwege # spielt die alten Leitwege wieder ein
Bei der Verwendung dieses Restore-Befehls sind zwei Besonderheiten zu beachten:
Die bestehenden Leitwege werden nicht automatisch entfernt.
Die Schnittstellen werden in der Sicherungsdatei über ihren Index, nicht über ihren Namen identifiziert. Man muss dafür sorgen, dass die Indices beim Sichern genau denen beim Wiederherstellen entsprechen.
Man sollte daher beim Hochlauf das Netzwerk z.b: über Konfigurationsdateien für systemd-networkd zuerst in einen festen Grundzustand bringen, bei dem alle Schnittstellen bereits existieren und die Erreichbarkeit des Rechners von außen gegeben ist, und dann per Skript manuell oder automatisch den vorherigen Stand wieder herstellen.
Kommunikationsbeziehungen¶
Die Fachbegriffe "Anycast", "Broadcast", "Multicast" und "Unicast" stehen für unterschiedliche Strukturen bei der Kommunikation:
Unicast bezeichnet Unterhaltungen zwischen (maximal) zwei Teilnehmern; sowohl Monologe wie Dialoge. Im Rechnernetzwerk benötigt dafür jeder Teilnehmer eine Adresse, auf der er erreichbar ist und die er als Absender verwenden kann.
Broadcast bezeichnet Monologe von einem Teilnehmer an alle in einem bestimmten Bereich, d.h. bei Rechnernetzwerken alle in einem bestimmten Netzwerk. Diese Kommunikationsbeziehung gibt es bei manchen L2-Protokollen, z.B. bei Ethernet und bei auch bei IPv4, aber nicht bei IPv6.
Multicast bezeichnet Monologe von einem Teilnehmer an alle in einer bestimmten Gruppe. Bei Rechnernetzwerken müssen sich nicht alle zuhörenden Teilnehmer im selben Netzwerk befinden, und jeder Teilnehmer muss explizit der Multicast-Gruppe beitreten.
Anycast bezeichnet Dialoge (und theoretisch auch Monologe) zwischen einen Client und einem aus einer Gruppe ausgesuchten Server, wobei die Auswahl des Servers nicht vom Client, sondern von einem Router zwischen Client und den möglichen Gegenstellen getroffen wird. Dem Client ist sozusagen egal, von welchem Server er bedient wird, weil aus seiner Sicht „alle das gleiche machen“. Jeder Server in einer Anycast-Gruppe ist unter derselben Anycast-IP-Adresse erreichbar, sendet aber auf seiner individuellen Unicast-IP-Adresse.
Links¶
Router 🇩🇪
RFC 1812 🇬🇧 – Anforderungen für Router
RFC 1122 🇬🇧 – Anforderungen für Hosts
Anycast 🇩🇪
Multicast 🇩🇪
Advanced Routing¶
https://www.kernel.org/doc/Documentation/networking/policy-routing.txt 🇬🇧
http://www.policyrouting.org/PolicyRoutingBook/ONLINE/TOC.html 🇬🇧