fragen stichworte

IPv6-Loopback-Adressen (entspricht 127.x.x.x)

Ich habe eine Entwicklungsumgebung eingerichtet, in der ich eine separate Loopback-Adresse für mehrere Websites habe.

Zum Beispiel habe ich Folgendes:

127.0.0.1 www.example.com
127.0.0.2 foo.example.com
127.0.0.3 bar.example.com
127.0.0.4 waffles.example.com

Ich hätte gerne eine gleichwertige Lösung für IPv6.

Ich weiß bereits, dass Sie :: 1 als Loopback-Adresse verwenden können, aber :: 2, :: 3 usw. scheinen nicht zu funktionieren.

Gibt es noch andere Loopback-Adressen in IPv6? Gibt es eine Möglichkeit, mehrere eindeutige Loopback-Adressen zu haben?

antworten

Technisch :: 2, :: 3 usw. sind Teil von :: 0.0.0.0/96, dem Bereich "ipv4-kompatible IPv6-Adresse". Es ist veraltet, aber Sie möchten diesen Bereich wahrscheinlich nicht verwenden.

Verwenden Sie für eine Laborumgebung eine eindeutige lokale Adressierung. Gehen Sie zu https://www.ultratools.com/tools/rangeGenerator und erstellen Sie sich ein Präfix. Dann können Sie die gewünschten Adressen aus diesem Präfix auswählen und der Loopback-Schnittstelle zuweisen.

Ihre Loopback-Adresse lautet :: 1/128. Beachten Sie die Breite des Subnetzes, das es auf nur einen Host beschränkt. Ändern Sie die Subnetzmaske in etwas breiter und überprüfen Sie Ihre Routing-Tabelle. Oder verwenden Sie linklokale Adressen.

jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ sudo ip route add local ::/104 dev lo 
jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ ping6 ::2
PING ::2(::2) 56 data bytes
64 bytes from ::2: icmp_seq=1 ttl=64 time=0.083 ms
64 bytes from ::2: icmp_seq=2 ttl=64 time=0.128 ms
^C
--- ::2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.083/0.105/0.128/0.024 ms
jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ ping6 ::3
PING ::3(::3) 56 data bytes
64 bytes from ::3: icmp_seq=1 ttl=64 time=0.148 ms
64 bytes from ::3: icmp_seq=2 ttl=64 time=0.141 ms
64 bytes from ::3: icmp_seq=3 ttl=64 time=0.142 ms

von Kann ich einen (großen) Adressblock an eine Schnittstelle binden?

es ist das einzige, was für mich funktioniert hat. Linux-spezifisch natürlich.

nota bene: Da dies zu einem späteren Zeitpunkt mit 0.0.0.0/8 Adressen in Konflikt stehen kann, wäre ::127.0.0.0/104 wahrscheinlich die bessere Wahl.

Ich empfehle hierfür die Verwendung von RFC 4193 -Adressen. Mit RFC 4193 können Sie Ihre eigene/48 für die lokale Verwendung erstellen, indem Sie den Byte-Wert fd gefolgt von 5 zufälligen Bytes verwenden. Sie dürfen nach den ersten 48 Bits alles setzen, was Sie für passend halten. Wenn Sie also ein/64 wünschen, können Sie fd gefolgt von 7 zufälligen Bytes wie in diesem Beispiel für Linux-Systeme verwenden:

ip -6 route add to local fd66:29e9:f422:8dfe::/64 dev lo

Die Verwendung von RFC 4193 hat gegenüber früheren Antworten den Vorteil, dass Sie dabei keine RFCs verletzen und die Adressen ohne Schnittstellenkennung verwendet werden können.

Jeder der in früheren Antworten genannten Bereiche verwendet entweder Bereiche, die für verschiedene Zwecke reserviert sind, oder linklokale Adressen, die bei jeder Verwendung einen Schnittstellenbezeichner erfordern.

Es existiert ein abgelaufener Entwurf, der darauf hinweist, dass der Bereich 1::/32 für zusätzliche Loopback-Adressen zugewiesen wird, wie Sie es wünschen. Da dieser Entwurf jedoch vor Jahren abgelaufen ist und keine derartige Zuweisung vorgenommen wurde, können Sie 1::/32 nicht dafür verwenden.

Die link-lokale Adressierung scheint die einzige gültige Option zu sein. Was die meisten Vorschläge hier ignorieren, ist die Tatsache, dass das IPv6-Präfix den Bereich deklariert, und ich möchte nicht, dass meine vermutlich private Adressierung im globalen Geltungsbereich ist.

Also für Linux:

$ sudo ip -6 address add fe80::1/64 dev lo
$ sudo ip -6 address add fe80::2/64 dev lo
$ sudo ip -6 address add fe80::3/64 dev lo

Und spezifizieren Sie die Schnittstelle, wenn Sie auf solche Adressen verweisen. Testen mit netcat:

$ nc -l -p 10001 fe80::1%lo
$ nc fe80::1%lo 10001

Überprüfung des korrekten Umfangs:

$ ip -6 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 
    inet6 fe80::1/64 scope link 
       valid_lft forever preferred_lft forever

Dennoch scheint es nicht sehr elegant zu sein, jede einzelne IP hinzuzufügen, um an sie binden zu können. Mit 127.0.0.0/8 können Sie an jede Adresse binden, ohne sie vorher zuzuweisen.