IPv6/Adress-Aufloesung: Unterschied zwischen den Versionen
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Adress-Auflösung == | == Adress-Auflösung == | ||
=== Address-Auflösung & Ziel-Adressen-Auswahl === | === Address-Auflösung & Ziel-Adressen-Auswahl === | ||
Die Auflösung von Namen zu einer IPv4- bzw. IPv6-Adresse wird üblicherweise durch die Benutzung einer libc resolver Bibliothek durchgeführt. Dazu wird normalerweise die Funktion ''getaddrinfo'' benutzt. Im Fall, dass mehr als eine IPv6-Adresse zurückgegeben wird, soll nach <nowiki>RFC 3484</nowiki> / Default Address Selection for Internet Protocol version 6 eine Sortierung angewandt werden, die optional auch konfiguriert werden kann. | Die Auflösung von Namen zu einer IPv4- bzw. IPv6-Adresse wird üblicherweise durch die Benutzung einer libc resolver Bibliothek durchgeführt. | ||
* Dazu wird normalerweise die Funktion ''getaddrinfo'' benutzt. | |||
* Im Fall, dass mehr als eine IPv6-Adresse zurückgegeben wird, soll nach <nowiki>RFC 3484</nowiki> / Default Address Selection for Internet Protocol version 6 eine Sortierung angewandt werden, die optional auch konfiguriert werden kann. | |||
Die ”Magie” ist durch die Datei /etc/gai.conf konfigurierbar (welche fehlt oder leer ist, solange Standardwerte gelten sollen). | |||
* Die vorgegebene Sortierung ist üblicherweise in der Dokumentation (z.B. /usr/share/doc/glibc-common/gai.conf) oder im Manual ”man gai.conf” zu sehen. | |||
; Kontrolle der Sortierung via benutzerdefinierter Konfiguration | |||
* Ein Hostname im DNS, der mehr als eine IPv6-Adresse zurückgibt, z. B. | |||
* Lookup via DNS (mit /etc/hosts klappt es nicht) | * Lookup via DNS (mit /etc/hosts klappt es nicht) | ||
* /etc/gai.conf mit einer passenden Konfiguration, | * /etc/gai.conf mit einer passenden Konfiguration, z. B. | ||
* Für Tests kann dann ein Telnet-Client benutzt werden: | * Für Tests kann dann ein Telnet-Client benutzt werden: | ||
* Wenn nun die precedence geändert wird in der Konfiguration: | * Wenn nun die precedence geändert wird in der Konfiguration: | ||
* Dann ändert sich die Reihenfolge entsprechend | * Dann ändert sich die Reihenfolge entsprechend | ||
=== Quell-Addressen-Auswahl === | === Quell-Addressen-Auswahl === |
Aktuelle Version vom 12. Januar 2024, 09:44 Uhr
Adress-Auflösung
Address-Auflösung & Ziel-Adressen-Auswahl
Die Auflösung von Namen zu einer IPv4- bzw. IPv6-Adresse wird üblicherweise durch die Benutzung einer libc resolver Bibliothek durchgeführt.
- Dazu wird normalerweise die Funktion getaddrinfo benutzt.
- Im Fall, dass mehr als eine IPv6-Adresse zurückgegeben wird, soll nach RFC 3484 / Default Address Selection for Internet Protocol version 6 eine Sortierung angewandt werden, die optional auch konfiguriert werden kann.
Die ”Magie” ist durch die Datei /etc/gai.conf konfigurierbar (welche fehlt oder leer ist, solange Standardwerte gelten sollen).
- Die vorgegebene Sortierung ist üblicherweise in der Dokumentation (z.B. /usr/share/doc/glibc-common/gai.conf) oder im Manual ”man gai.conf” zu sehen.
- Kontrolle der Sortierung via benutzerdefinierter Konfiguration
- Ein Hostname im DNS, der mehr als eine IPv6-Adresse zurückgibt, z. B.
- Lookup via DNS (mit /etc/hosts klappt es nicht)
- /etc/gai.conf mit einer passenden Konfiguration, z. B.
- Für Tests kann dann ein Telnet-Client benutzt werden:
- Wenn nun die precedence geändert wird in der Konfiguration:
- Dann ändert sich die Reihenfolge entsprechend
Quell-Addressen-Auswahl
Source address selection in Linux wird automatisch vom Kernel vorgenommen, üblicherweise abhängig von den Routing-Tabellen und unter der Vorgabe, den Scope einer Adresse beizubehalten.
Quell-Adressen-Auswahl mit ”ip addrlabel”
Mit einer Erweiterung der internen ”ip addrlabel” Tabelle kann eine Quell-Adresse zu einer Ziel-Adresse gebunden werden. Bindung wird hier durch die Angabe des gleichen Labels (einer Nummer) konfiguriert.
- Standard von ”ip addrlabel” (hier von CentOS 6):
- Das System ist multihomed (hier an einem Interface), der Router verteilt 2 Präfixe mit Hilfe von radvd:
- Eine Verbindung zum Server zeigt nun:
- Ein tcpdump mit filter ”tcp and dst port 23” zeigt nur die Benutzung der oberen lokalen Quell-IPv6-Adresse
- Wenn nun Quelle und Ziel mit Hilfe von ”ip addrlabel” zusammengebunden werden:
- Was in folgender ”ip addrlabel”resultiert:
- Und dann nochmal eine Verbindung zum Server versucht wird
- tcpdump mit filter ”tcp and dst port 23” zeigt nun die Benutzung beider Quell-IPv6-Adressen wie konfiguriert
Persistente Konfiguration von ”ip addrtable” ist wahrscheinlich in aktuellen Linux-Distributionen nicht unterstützt, somit wäre eine Erweiterung der Netzwerk-Init-Scripts oder rc.local notwendig. Ein Skript, welches Informationen aus /etc/gai.conf in entsprechendes ”ip addrtable” umwandelt, gibt es hier: /etc/gai.conf - it ain't what you think it is
- Zusätzliche Informationen sind hier zu finden
- Linux & IPv6: getaddrinfo and search domains - Research
- RFC 3484 on Linux
- Karl Auer's Blog: Controlling IPv6 source address selection , IPv6 Source Address Selection - what, why, how
- Into6: /etc/gai.conf - it ain't what you think it is