Як пінг локального хосту за допомогою 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роботу (якщо це можливо взагалі)?


3
Якщо ви на Linux, як правило , слід уникати ifconfigі route- віддає перевагу ip addrі ip route, які підтримують більш мережеві функції і має більш послідовний вихід.
grawity

@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

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


Деякі слова більше

Я розумію вашу плутанину справді за те, що я читав з rfc6761 про "Доменні імена спеціального використання" 6.3 [ 3 ] , про ім'я localhost ,

Користувачі можуть припустити, що запити адрес IPv4 та IPv6 для імен localhost завжди вирішатимуться відповідною 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)

дуже детальна відповідь спасибі, що мене турбує атм, ми будемо вимагати, щоб скористатися 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.)


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 у [тестуванні] вже більше місяця, хоча я не маю уявлення, коли він буде переведений на стабільний.
grawity

9

localhost- ім'я хоста, яке вирішує 127.0.0.1адресу. Ваш /etc/hostsфайл повинен мати окремий запис ::1, ймовірно localhost6. Тому спробуйте такі:

ping6 ::1
ping6 localhost6

7
Ім'я хоста може вирішувати декілька адрес одночасно, особливо якщо вони є з різних протоколів. Більшість систем псевдонім localhostдля обох 127.0.0.1 і ::1.
grawity

1
@grawity Жодна із систем, які я перевірив, використовую localhostдля IPv6. Імена , які я знайшов , що використовуються для ::1були ip6-localhost, ip6-loopback, localhost6, і localhost6.localdomain6.
kasperd

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.