Adresy IPv6 Loopback (odpowiednik 127.xxx)

16

Mam skonfigurowane środowisko programistyczne, w którym mam osobny adres sprzężenia zwrotnego dla wielu stron internetowych.

Na przykład mam następujące:

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

Chciałbym równoważne rozwiązanie dla IPv6.

Wiem już, że możesz użyć :: 1 jako adresu pętli zwrotnej, ale :: 2, :: 3 itd. Nie działają.

Czy w IPv6 są jakieś inne adresy sprzężenia zwrotnego? Czy istnieje sposób na posiadanie wielu unikalnych adresów sprzężenia zwrotnego?

Doktorze Jones
źródło
1
Polecam :: ffff: 7f00: 1, :: ffff: 7f00: 2 i tak dalej, ale bez wątpienia ktoś rzuciłby na mnie zgniłym owocem.
womble
Możesz spróbować czegoś w zakresie multiemisji lokalnego interfejsu IPv6. To zapętli się z powrotem do twojego hosta i jest to ogromny zasięg. To, czy to działa, zależy od tego, co próbujesz zrobić.
Ron Maupin,

Odpowiedzi:

13

Technicznie :: 2, :: 3 itd. Są częścią :: 0.0.0.0/96, zakresu „adres ipv6 zgodny z ipv4”. Jest przestarzały, ale prawdopodobnie nie chcesz używać tego zakresu.

W środowisku laboratoryjnym użyj unikalnego lokalnego adresowania. Wejdź na https://www.ultratools.com/tools/rangeGenerator i wygeneruj sobie prefiks. Następnie możesz wybrać dowolne adresy z tego prefiksu i przypisać je do interfejsu pętli zwrotnej.

Ben Jencks
źródło
Dlaczego nie :: 127.0.0.0/96?
Todd
9

Twój adres zwrotny to: 1/128. Zwróć uwagę na szerokość podsieci, która ogranicza ją tylko do jednego hosta. zmień maskę podsieci na coś szerszego i sprawdź tabelę routingu. Lub użyj adresów lokalnych.

Fladi
źródło
1
Ta odpowiedź byłaby lepsza, gdybyś dodał w jednym lub obu systemach Windows lub Linux, jak powiązać dodatkowe adresy IPv6 z interfejsem sprzężenia zwrotnego. W IPv4 dostajesz 127.0.0.1/8, aw IPv6 dostajesz :: 1/128, więc czy jest jakiś sposób, aby dodać trochę więcej dla IPv6?
William
2
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

od Czy mogę powiązać (duży) blok adresów z interfejsem?

to jedyna rzecz, która działała dla mnie. Oczywiście specyficzne dla systemu Linux.

nota bene : ponieważ w przyszłości może to kolidować z adresami 0.0.0.0/8, ::127.0.0.0/104prawdopodobnie byłby lepszym wyborem.

jcomeau_ictx
źródło
To skutecznie poszerza tabelę routingu do zakresu zarezerwowanego dla kompatybilności z ipv4, jak opisał Ben Jencks.
korkman
to mnie nie dotyczy. służy do celów testowych; jest na mojej lokalnej maszynie; nie dotyczy nikogo oprócz mnie.
jcomeau_ictx
1
@jcomeau_ictx, czy to dotyczy Ciebie, to może dotyczyć każdego, kto będzie używał swoją odpowiedź, ponieważ będzie ona następnie dokonać ich .
mtraceur
może, ale prawdopodobnie nie, dopóki nie zostanie przypisany zakres ipv4 0/8. w każdym razie naprawię moją odpowiedź.
jcomeau_ictx
byłoby źle, gdybym użył / 96, ale użyłem / 104. zresztą edytowałem odpowiedź, aby użyć :: 127.0.0.0/104, zakres sprzężenia zwrotnego.
jcomeau_ictx
2

Zalecam używanie do tego adresów RFC 4193 . RFC 4193 pozwala zbudować własny / 48 do użytku lokalnego, biorąc wartość bajtu, fda następnie 5 losowych bajtów. Możesz umieścić wszystko, co uznasz za stosowne po pierwszych 48 bitach, więc jeśli chcesz a / 64, możesz wziąć fd7 losowych bajtów, jak w tym przykładzie dla systemów Linux:

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

Korzystanie z RFC 4193 ma tę przewagę w porównaniu z wcześniejszymi odpowiedziami, że nie naruszasz przy tym żadnych RFC, a adresów można używać bez identyfikatora interfejsu.

Każdy z zakresów wymienionych we wcześniejszych odpowiedziach albo używa zakresów zarezerwowanych do różnych celów, albo adresów lokalnych, które wymagają identyfikatora interfejsu przy każdym użyciu.

Istnieje wygasła wersja robocza sugerująca, że ​​zakres 1::/32zostanie przydzielony dla dodatkowych adresów sprzężenia zwrotnego, o które prosisz. Ponieważ jednak projekt ten wygasł wiele lat temu i nigdy nie dokonano takiego przydziału, nie można 1::/32do tego wykorzystać .

kasperd
źródło
Napisałem teraz małe narzędzie wiersza poleceń do generowania prefiksów zgodnych z RFC 4193: v6tools.kasperd.dk/rfc4193
kasperd
0

Używanie adresowania lokalnego wydaje się być jedyną prawidłową opcją. Większość sugestii tutaj ignoruje fakt, że prefiks IPv6 deklaruje zakres i nie chciałbym, aby moje przypuszczalnie prywatne adresy były w zasięgu globalnym.

W przypadku systemu 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

I określ interfejs, odnosząc się do takich adresów. Testowanie za pomocą netcat:

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

Weryfikacja poprawnego zakresu:

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

Nadal nie wydaje się zbyt eleganckie dodawanie każdego adresu IP, aby móc się z nim połączyć. Dzięki 127.0.0.0/8 możesz powiązać dowolny adres bez wcześniejszego przypisania.

Korkman
źródło
Nie, ULA jest prawidłowym sposobem na lokalne adresowanie witryny. Domyślnie nie będzie trasował w Internecie. Możesz go jednak trasować lokalnie. Każda podsieć w witrynie może mieć globalnie unikalny prywatny prefiks , niezależny od dostawcy usług internetowych.
John Mahowald,
Witryna lokalna NIE jest hostem lokalnym. O to mi chodzi :-)
korkman
0

Istnieje propersal RFC o nazwie A Larger Loopback Prefix for IPv6 , który proponuje używać go 1::/32jako sieci localhost. Wniosek nie został jednak zatwierdzony i wygasł już w 2013 r.

F.Raab
źródło
Zostało to już wspomniane w odpowiedzi, którą napisałem w zeszłym roku na to właśnie pytanie.
kasperd
@kaspered O tak, masz rację, przepraszam, nie zauważyłem, ponieważ odpowiedź zawiera w rzeczywistości dwie odpowiedzi i zaczyna się od drugiej.
F.Raab
Naprawdę nie uważałem wygasłego szkicu za odpowiedź, ponieważ nigdy nie stał się standardem. Zauważyłem to pod moją odpowiedzią, ponieważ jest to odpowiednia podstawowa informacja i zapewnia pewien kontekst tego, co próbowano ujednolicić zakres dla tego konkretnego celu.
kasperd