Ich sehe darinFrageenthält die Routing-Tabelle:
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
Was bedeutet es, eine Subnetzmaske zu haben, /32
und wie lautet in diesem Fall die Netzwerk-ID? Kann ein Host ohne Netzwerk-ID existieren, wenn wir den oben genannten Host als einzelnen Host betrachten?
Soweit ich weiß, sind die Netzwerk-ID und die IP-Adresse, die einem Host in diesem Netzwerk zugewiesen sind, zwei verschiedene Dinge. 192.168.0.0 ist eine Netzwerk-ID und wenn sein Subnetz 255.255.255.0 ist, dann können die Hosts in diesem Netzwerk 192.168.0.1 - 192.168.0.254 sein. Wie kann in diesem Fall ein Host ohne Netzwerk-ID existieren?
Antwort1
Hier herrscht ein wenig Verwirrung; dass /32 sich nicht auf die Größe eines (Sub-)Netzwerks bezieht, sondern auf den Adressbereich, für den dieser bestimmte Routing-Tabelleneintrag gilt. Normalerweise sind die beiden gleich (weil Sie ein Netzwerk oder Subnetz als Einheit routen, richtig?), aber macOS macht die Dinge für andere Hosts im selben lokalen Netzwerk etwas anders. Lassen Sie mich vor den von Ihnen zitierten Zeilen einige Zeilen hinzufügen:
Destination Gateway Flags Refs Use Netif Expire
default openwrt.lan UGSc 10 0 en0
...
192.168.1 link#4 UCS 2 0 en0
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
Beachten Sie, dass 192.168.1 (kurz für 192.168.1.0/24) über en0 (auch bekannt als Link Nr. 4) geroutet wird; nicht über ein Gateway, sondern nur über die Schnittstelle selbst. Dies ist das Netzwerk, in dem sich der Mac selbst befindet. 192.168.1.1 und 192.168.1.125 sind beides spezifische Adresseninnerhalb dieses Netzwerkbereichs. Wenn Sie diese /32-Einträge mit dem Eintrag 192.168.1 vergleichen, handelt es sich im Grunde genommen um redundante Duplikate. Sie sagen dasselbe aus, nur über bestimmte Adressen statt über den gesamten Netzwerkbereich.
Ich weiß nicht, warum macOS diese redundanten adressspezifischen Einträge erstellt, aber es hängt wahrscheinlich mit einer anderen Sache zusammen, die Sie in der obigen Auflistung sehen können: macOS listet seine ARP-Tabelleneinträge in der Routing-Tabelle auf. Der obige Eintrag „openwrt.lan“ (von dem ich ziemlich sicher bin, dass er eigentlich 192.168.1.1 ist, nur nach Name und nicht nach Nummer aufgelistet) besagt, dass er über en0 an die MAC-Adresse 46:94:fc:63:fc:7 weitergeleitet wird.
Was Sie in der Routenliste sehen, ist also eine Mischung aus tatsächlichen Netzwerkrouten (wie den Einträgen „Standard“ und 192.168.1) und Einträgen pro Host (die auf /32 und MAC ausgerichteten Einträge).
Antwort2
/32
Adressierung
Im Allgemeinen /32
bedeutet dies, dass das Netzwerk nur eine einzige IPv4-Adresse hat und der gesamte Datenverkehr direkt zwischen dem Gerät mit dieser IPv4-Adresse und dem Standard-Gateway abgewickelt wird. Das Gerät kann nicht mit anderen Geräten im lokalen Subnetz kommunizieren.
Ich habe mehrere mögliche Gründe dafür gesehen. Es könnte sein:
- Ein Webserver, der mehrere Sites bedient, wobei jede Site an eine bestimmte IPv4-Adresse gebunden ist
- ALoopback-Adressewird zum Testen verwendet.
- Ein Trick zur Netzwerksicherheit: Isolieren Sie die Maschine mit der /32-Netzmaske vom Rest der Systeme im Subnetz. Dadurch wird nur Verkehr zu Zielen zugelassen, die explizit durch statische Routen im System definiert sind. Dies kann beispielsweise zum Außerbetriebsetzen eines Systems verwendet werden.
Netzwerk ID
DerNetzwerk IDTeil einer IP-Adresse wird durch die Subnetzmaske bestimmt. Beispiel:
- Ein
/24
IPv4-Netzwerk hat eine Subnetzmaske von1111.1111.1111.0000
, d. h. die ersten 3 Oktette sind die Netzwerk-ID und das letzte Oktett wird zum Zuweisen von Host-IDs verwendet (256 verfügbare IDs, obwohl normalerweise einige reserviert sind). - Ein
/16
IPv4-Netzwerk hat eine Subnetzmaske von1111.1111.0000.0000
, d. h. die ersten beiden Oktette sind die Netzwerk-ID und das letzte Oktett wird zum Zuweisen von Host-IDs verwendet (65536 verfügbare IDs, obwohl normalerweise einige reserviert sind).
Im Fall von /32
trifft dies nicht zu, da die Adresse sowohl eine Netzwerk-ID als auch eine Host-ID ist. /31
Adressen sind auch alle Host-IDs ohne reservierte 0. Adresse.
Antwort3
Es handelt sich lediglich um einen CIDR-Wert. Weitere Informationen finden Sie unterHierfür CIDR.
Kurz zusammengefasst
Eine CIDR-Netzwerkadresse sieht unter IPv4 folgendermaßen aus:
192.30.250.00/18
„192.30.250.0“ ist die Netzwerkadresse selbst und die „18“ besagt, dass die ersten 18 Bits den Netzwerkteil der Adresse darstellen und die letzten 14 Bits für bestimmte Hostadressen übrig bleiben. Subnetzmaske
Antwort4
Was Sie sehen, sind keine SubnetzmaskenSie geben Aufschluss über die Länge der Präfixe der Routing-Tabelle¹.
Bei einer naiven Implementierung einer Routing-Tabelle würden alle möglichen IP-Adressen aufgelistet, so dass Sie bei jeder beliebigen IP-Adresse genau diese nachschlagen und die zugehörigen Routing-Informationen² zurückbekommen würden.
Offensichtlich ist eine Art Komprimierung erforderlich. Die Art der Routing-Informationen besteht darin, dass benachbarte Adressen wahrscheinlich dieselben Informationen verwenden. Daher können wir eine Form von verwendenRadixbaumum diese zusammen zu komprimieren. So funktioniert es kurz:
Gegeben sind die Zahlen 0 bis 7. Wir können sie im Binärsystem folgendermaßen darstellen:
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
Wenn wir nun zwei Routing-Tabelleneinträge haben, einen für die Adressen 0 und 1 und einen für die Adressen 2 und 3, können wir sie unter den gemeinsamen binären Präfixen speichern. Wenn wir ein verwenden, .
um das „unbenutzte“ Bit nach dem Ende des Präfixes anzugeben, haben wir 00.
für den Bereich 0-1 und
01.
für den Bereich 2-3.
Eine Standarddarstellungsweise besteht in der Angabe der niedrigsten Zahl aus dem Bereich, gefolgt von der Länge des Präfixes. In diesem Fall wären dies 0/2
für den Bereich 0–1 und 2/2
für den Bereich 2–3.
Aber was passiert, wenn wir die Routing-Informationen für Adresse 6 nachschlagen möchten? Normalerweise würden wir einen „Standard“-Satz von Routing-Informationen mit Präfix hinzufügen 0/0
, d. h. alle Bits übereinstimmen, und dann bei der Suche nach den spezifischsten Informationen suchen, d. h. nach dem längsten übereinstimmenden Präfix, das wir finden können. Die vollständige Routing-Tabelle, die wir gerade beschrieben haben, sieht also so aus:
0/2 00. Matches addresses 1 and 2.
2/2 01. Matches addresses 3 and 4.
0/0 ... Matches any address.
Subnetzmasken können auf die gleiche Weise mit Präfixen beschrieben werden, und daher wird dieses Schema häufig dafür verwendet. Aber denken Sie daran, dass nur weil dieses Schemadürfenzur Beschreibung von Subnetzen verwendet werden, bedeutet nicht, dass es verwendet wirdnurzur Beschreibung von Subnetzen.
Als Beispiel für Routingtabellenpräfixe, die keine Subnetze sind, könnten Sie zwei Netzwerkschnittstellen haben, die mit demselben Netzwerk verbunden sind, beispielsweise 192.168.2.0/24. (Dies könnte dadurch umgesetzt werden, dass zwei separate Netzwerkkarten mit jeweils einem eigenen Kabel an denselben Switch angeschlossen werden.) Sie könnten dann die Routingtabelle so einrichten, dass der ausgehende Datenverkehr über die beiden Schnittstellen „ausgeglichen“ wird, indem Sie zwei Routingtabelleneinträge verwenden:
192.168.2.0/25 eth0 # range ...2.0 to ...2.127
192.168.2.128/25 eth1 # range ...2.128 to ...2.255
Dadurch werden Pakete, die an die Adressen 0-127 in diesem Netzwerk gerichtet sind, nach draußen gesendet eth0
, aber Pakete, die an die Adressen 128-255 in diesem Netzwerk gerichtet sind, nach draußen eth1
. Dies ist eine schlechte Vorgehensweise (aus Gründen, auf die ich hier nicht näher eingehen werde), zeigt aber, dass Routing-Präfixe und Netzwerkadressen möglicherweise nicht übereinstimmen.
¹ Der Wikipedia-Artikel überRoutingtabellensagt leider, dass das Präfixfeld die „Netzwerk-ID“ enthält. Während dies bei bestimmten Implementierungen von Routing-Tabellen zutreffen kann, handelt es sich im Allgemeinen nicht immer um eine Netzwerk-ID, wie sowohl in dem von Ihnen angegebenen Beispiel als auch in meinem Beispiel später in dieser Antwort zu sehen ist.
² Diese Routing-Informationen umfassen typischerweise Dinge wie die zu verwendende Schnittstelle, den Router, der über diese Schnittstelle kontaktiert werden soll (sofern vorhanden), die MAC-Adresse eines Hosts für Hosts, die direkt über diese Schnittstelle erreichbar sind, welche Quelladresse wir in das Paket aufnehmen sollen, wenn der Host mehrere Quelladressen hat, Sicherheitsinformationen usw. Es gibt eine Vielzahl von Daten, die dort enthalten sein könnten, aber nichts davon ist für die Zwecke dieser Diskussion wichtig, da wir nur darüber sprechen, wie Sie den richtigen Datensatz für eine bestimmte Adresse nachschlagen, und nicht darüber, was im Datensatz selbst enthalten ist.