Как я могу пинговать локальный хост, используя IPv6?

22

Я пытаюсь лучше понять IPv6 .

Во-первых, я пробую ifconfig и получаю следующее:

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

Итак, из вышесказанного я могу предположить, что IPv6 включен (поправьте меня, если я здесь не прав).

Теперь, если я использую, ping localhostя получаю:

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
...

Но когда я использую, ping6 localhostя получаю:

unknown host

Как я могу использовать ping6? Или, более конкретно, какие изменения нужно сделать, чтобы сделать ping6 localhostработу (если вообще возможно)?

NAFAS
источник
3
Если вы работаете в Linux, вам следует избегать ifconfigи route- предпочитать ip addrи ip route, которые поддерживают больше сетевых функций и имеют более согласованный вывод.
благодарность
@ Grawity THX для помощника, очень полезно
Nafas

Ответы:

15

Краткий ответ [ 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`

Изменения, чтобы сделать работу ping6 localhost

Если вы хотите установить localhostпсевдоним для обоих, pingаping6 на вашем компьютере это не так, достаточно записать в /etc/hostsфайл обе строки:

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

Что касается псевдонима, используемого в настоящее время в вашей системе, вы можете проверить файл hosts, /etc/hosts [ 1 ] или в другом месте, если в другой системе [ 2 ] .
Вы можете найти ip6-localhost, ip6-loopback, ipv6-localhost, ipv6-loopbackили localhostсам по себе ...


Еще несколько слов

Я действительно понимаю вашу путаницу в отношении того, что я прочитал из rfc6761 о «доменных именах специального назначения» 6.3 [ 3 ] , об имени localhost ,

Пользователи могут предполагать, что запросы адресов IPv4 и IPv6 для имен локальных хостов всегда будут разрешаться для соответствующего IP-адреса обратной связи .

поэтому следует ожидать по умолчанию, но:

  • На текущей обновленной и нетронутой Ubuntu 14.04.3 LTS /etc/hosts я нашел следующий раздел с 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
    
  • На Suse Enterprise 10 системы я нашел localhost, ipv6-localhost,ipv6-loopback

    # special IPv6 addresses
    ::1             localhost ipv6-localhost ipv6-loopback
    
  • На старой Debian GNU / Linux 8.2 системы localhost, ip6-localhost,ip6-loopback

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

Это означает, что, по моему ограниченному опыту, вы должны посмотреть в своем /etc/hostфайле и изменить его или использовать то, что вы найдете, например,

ping6 ipv6-localhost   # On some systems (maybe on Suse) 
ping6 ip6-localhost    # On some systems (maybe on Debian/*buntu)
Hastur
источник
очень подробный ответ, спасибо, что беспокоит меня, мы должны будем использовать ipv6 очень скоро, и все же, есть очень много препятствий (это не может быть проще, чем localhost на самом деле), и нет никаких стандартизаций. Я думаю, что мы ничего не будем делать до тех пор, пока это не вызовет слишком много неприятностей ...
nafas
Как вы уже видели, ::1работает на каждой из этих машин ... «Хорошая вещь в стандартах состоит в том, что у вас есть так много выбора». ASTanenbaum [ 1 ] :-) Решение будет найдено ... возможно, неправильное! ;)
Хастур
Я полностью понимаю, приятель. ::1это ip (v6), где как localhostи hostname. полностью мое мнение, но я верю, что если мы не будем придерживаться стандарта как есть, мы столкнемся со многими проблемами в ближайшем будущем. Я действительно надеюсь, что после обгона ipv6 нам не придется печатать, например, ipv6.google.comвместоgoogle.com
nafas
1
Было ясно, что вы это понимаете :-) ... BTW RFC 6761 (доменные имена специального назначения) достигла уровня зрелости предлагаемого стандарта в феврале 2013 года. ... так что еще есть время надеяться увидеть его в качестве стандарта раньше будет слишком поздно
Хастур
1
@nafas Они добавили IPv6 в google.com.
Мэтт Нордхофф
24

Пытаться:

ping6 ::1

Результат будет выглядеть так:

# 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

(То же самое для ping6 -V.)

Archemar
источник
6
Более новые версии iputilsне имеют отдельной ping6утилиты, она была объединена с ping. Для этих версий используйте ping -6 ::1или (так как ::1это не адрес IPv4) ping ::1.
Лекенстейн
1
@Lekensteyn Что? Последняя версия, -6даже не признана.
edmz
@black: Какую версию вы считаете "последней"? ping и ping6 были объединены в iputils-s20150815 (проверка ping -V). Возможно, ваш дистрибутив еще не обновлен. (И у BSD есть свое собственное программное обеспечение, и они не используют iputils.)
grawity
@ Grawity: У меня есть последняя версия, хотя это не самая последняя версия, и это действительно OOD, даже на Arch Linux (20140519).
edmz
@black: «Последний, но не самый последний»? ... Во всяком случае, у Arch был iputils-20150815 в [тестировании] более месяца, хотя я понятия не имею, когда он будет переведен в стабильный.
благодарность
9

localhostимя хоста, которое разрешается по 127.0.0.1адресу Ваш /etc/hostsфайл должен иметь отдельную запись для ::1, скорее всего localhost6. Так что попробуйте это:

ping6 ::1
ping6 localhost6
gogators
источник
7
Имя хоста может разрешаться сразу по нескольким адресам, особенно если они из разных протоколов. Большинство систем псевдоним localhostдля обоих 127.0.0.1 и ::1.
благодарность
1
@ grawity Ни одна из систем, которые я проверял, не использовала localhostIPv6. Имена , которые я нашел , используемые для ::1были ip6-localhost, ip6-loopback, localhost6, и localhost6.localdomain6.
Касперд
3
@kasperd, из Gentoo /etc/hosts: 127.0.0.1 localhost, ::1 localhost; Windows Vista идентична (за исключением размещения файла C:\Windows\System32\drivers\etc). MacOSX 10.9.5 добавляет fe80::1%lo0 localhostв качестве третьего имени для него.
Марк
3
@kasperd: Вы тогда не использовали много систем. Windows, Arch, CentOS, Ubuntu все сопоставлены localhostс ::1. (Я думаю, что это будет еще более распространенным, так как дистрибутивы принимают systemd и включают nss_myhostname.)
grawity
2
CentOS 6 имеет :: 1 в качестве localhost6, хотя CentOS 7 имеет localhost для обоих. OpenWRT, Xenserver и Solaris вообще не имеют записей IPv6.
qasdfdsaq