Jak mogę pingować localhost przy użyciu IPv6?

22

Staram się lepiej zrozumieć IPv6 .

Najpierw próbuję ifconfig i otrzymuję następujące informacje:

eth0      Link encap:Ethernet  HWaddr XXXXXXX
          inet addr:X.X.X.X  Bcast:X.X.X.X  Mask:XXXXXXXXX
          inet6 addr: XXXX::XXXX:XXX:XXXX:XXX/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:138752772 errors:0 dropped:0 overruns:0 frame:0
          TX packets:67894054 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:67347428211 (67.3 GB)  TX bytes:168368922639 (168.3 GB)
          Interrupt:43

Więc z powyższego mogę założyć, że IPv6 jest włączony (popraw mnie, jeśli się tu mylę).

Teraz jeśli użyję ping localhost, dostanę:

64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.026 ms
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.019 ms
64 bytes from localhost (127.0.0.1): icmp_req=3 ttl=64 time=0.025 ms
...

Ale kiedy używam ping6 localhost, dostaję:

unknown host

Jak korzystać ping6? A dokładniej, jakie zmiany należy wprowadzić, aby ping6 localhostpraca (jeśli w ogóle możliwa)?

nafas
źródło
3
Jeśli korzystasz z Linuksa, ogólnie powinieneś unikać ifconfigi route- preferuj ip addri ip route, które obsługują więcej funkcji sieciowych i mają bardziej spójny wynik.
grawity
@grawity thx dla tip mate, bardzo przydatne
nafas

Odpowiedzi:

15

Krótka odpowiedź [ rcf4291 ]

ping6 ip6-localhost    # Or the alias you have in /etc/hosts file (See below)
ping6 0:0:0:0:0:0:0:1  # Similar to `ping 127.0.0.1` with 7 `:` instead of 4 `.`
ping6 ::1              # The used analogous of `ping 127.0.0.1`

Zmiany, aby działały ping6 localhost

Jeśli chcesz ustawić localhostjako alias dla obu pingiping6 i tak nie jest już na twoim komputerze, wystarczy zapisać w /etc/hostspliku obie linie:

127.0.0.1       localhost
# ... and below
::1             localhost ipv6-localhost ipv6-loopback

Jeśli chodzi o alias aktualnie używany w systemie, możesz sprawdzić plik hosts /etc/hosts [ 1 ] lub w innym miejscu, jeśli jest on w innym systemie [ 2 ] .
Może się okazać ip6-localhost, ip6-loopback, ipv6-localhost, ipv6-loopbacklub localhostsam ...


Jeszcze kilka słów

Rozumiem wasze zamieszanie w związku z tym, co przeczytałem w rfc6761 na temat „Nazw domen specjalnych” 6.3 [ 3 ] , o nazwie localhost ,

Użytkownicy mogą założyć, że zapytania o adresy IPv4 i IPv6 dla nazw hosta lokalnego zawsze będą rozstrzygane na odpowiedni adres zwrotny IP .

więc należy oczekiwać domyślnie, ale:

  • W bieżącym zaktualizowanym i nietkniętym Ubuntu 14.04.3 LTS /etc/hosts znalazłem następującą sekcję z ip6-localhost:ip6-loopback

    # The following lines are desirable for IPv6 capable hosts
    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    
  • Na Suse Enterprise 10 systemu znalazłem localhost, ipv6-localhost,ipv6-loopback

    # special IPv6 addresses
    ::1             localhost ipv6-localhost ipv6-loopback
    
  • Na starej Debian GNU / Linux 8.2 systemu localhost, ip6-localhost,ip6-loopback

    # The following lines are desirable for IPv6 capable hosts
    ::1     localhost ip6-localhost ip6-loopback
    

Oznacza to, że według mojego ograniczonego doświadczenia powinieneś zajrzeć do swojego /etc/hostpliku i zmodyfikować go lub użyć tego, co znajdziesz, robiąc na przykład

ping6 ipv6-localhost   # On some systems (maybe on Suse) 
ping6 ip6-localhost    # On some systems (maybe on Debian/*buntu)
Hastur
źródło
bardzo szczegółowa odpowiedź dziękuję, co martwi mnie atm, będziemy musieli wkrótce używać ipv6, a jednak jest tyle przeszkód (nie może być prostsze niż localhost naprawdę) i nie ma standaryzacji. Chyba nic z tym nie zrobimy, dopóki nie spowoduje tyle problemów ...
nafas,
Jak widzieliście ::1prace na każdej z tych maszyn ... „Zaletą standardów jest to, że masz tak wiele do wyboru”. ASTanenbaum [ 1 ] :-) Znaleziono rozwiązanie ... może niewłaściwe! ;)
Hastur
, Całkowicie rozumiem, kolego. ::1jest ip (v6), gdzie localhostjest hostname. całkowicie moje zdanie, ale wierzę, że jeśli nie utrzymamy standardu, w najbliższej przyszłości napotkamy wiele problemów. Naprawdę mam nadzieję, że raz ipv6.google.comgoogle.com
IPv6 przejdzie,
1
Było jasne, że go dostałeś :-) ... BTW RFC 6761 (nazwy domen specjalnego przeznaczenia) osiągnęły proponowany standardowy poziom dojrzałości w lutym 2013 r. ... więc wciąż jest czas, aby spodziewać się, że będzie to standard wcześniej będzie za późno.
Hastur
1
@nafas Dodali IPv6 do google.com.
Matt Nordhoff,
24

Próbować:

ping6 ::1

Wynik wyglądałby następująco:

# ping6 ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.040 ms
(...)
64 bytes from ::1: icmp_seq=9 ttl=64 time=0.037 ms
^C
--- ::1 ping statistics ---
9 packets transmitted, 9 received, 0% packet loss, time 7998ms
rtt min/avg/max/mdev = 0.035/0.042/0.055/0.011 ms

Ubuntu 14.04.1 LTS (Trusty Tahr):

# ping ::1
ping: unknown host ::1
# ping -6 ::1
ping: invalid option -- '6'
Usage: ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
        [-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
        [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
        [-w deadline] [-W timeout] [hop1 ...] destination
# ping -V
ping utility, iputils-s20121221

(To samo dotyczy ping6 -V.)

Archemar
źródło
6
Nowsze wersje iputilsnie mają oddzielnego ping6narzędzia, które zostało scalone ping. W przypadku tych wersji użyj ping -6 ::1lub (ponieważ ::1nie jest to adres IPv4) ping ::1.
Lekensteyn,
1
@Lekensteyn Które? Najnowsza wersja -6nie jest nawet rozpoznawana.
edmz,
@black: Którą wersję uważasz za „najnowszą”? ping i ping6 zostały połączone w iputils-s20150815 (sprawdź ping -V). Twoja dystrybucja mogła jeszcze nie zostać zaktualizowana. (A BSD mają własne oprogramowanie i nie używają iputils.)
grawity
@grawity: Mam najnowszą wersję, chociaż nie jest to najnowsza wersja i rzeczywiście jest to OOD, nawet na Arch Linux (20140519).
edmz
@black: „Najnowsze, ale nie aktualne”? ... W każdym razie Arch ma iputils-20150815 w [testowaniu] od ponad miesiąca, chociaż nie mam pojęcia, kiedy zostanie przeniesiony do stabilnego.
grawity
9

localhostto nazwa hosta, który postanawia na 127.0.0.1adres. Twój /etc/hostsplik powinien mieć ::1prawdopodobnie osobny wpis localhost6. Wypróbuj te:

ping6 ::1
ping6 localhost6
gogatorzy
źródło
7
Nazwa hosta może być tłumaczona na wiele adresów jednocześnie - szczególnie jeśli pochodzą one z różnych protokołów. Większość aliasów systemowych zarównolocalhost do, jak 127.0.0.1 i do ::1.
grawity
1
@grawity Żaden z sprawdzonych przeze mnie systemów nie używa localhostIPv6. Nazwy znalazłem używane do ::1były ip6-localhost, ip6-loopback, localhost6, i localhost6.localdomain6.
kasperd
3
@kasperd, z Gentoo /etc/hosts: 127.0.0.1 localhost, ::1 localhost; Windows Vista jest identyczny (z wyjątkiem umieszczania pliku C:\Windows\System32\drivers\etc). MacOSX 10.9.5 dodaje fe80::1%lo0 localhostjako trzecią nazwę.
Mark
3
@kasperd: Wtedy nie korzystałeś z wielu systemów. Windows, Arch, CentOS, Ubuntu wszystkie mapy localhostdo ::1. (Myślę, że będzie to jeszcze bardziej powszechne, ponieważ dystrybucje przyjmują systemd i włączają nss_myhostname.)
grawity
2
CentOS 6 ma :: 1 jako localhost6, chociaż CentOS 7 ma localhost dla obu. W OpenWRT, Xenserver i Solaris nie ma żadnych wpisów IPv6.
qasdfdsaq