如何使用IPv6 ping本地主机?


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,则通常应避免使用– ifconfigrouteip addr及and ip route(它们支持更多网络功能并具有更一致的输出)。
grawity 2015年

@grawity thx对于小伙伴来说非常有用
nafas 2015年

Answers:


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-localhostip6-loopbackipv6-localhostipv6-loopbacklocalhost


还有一些话

对于从rfc6761中读取的有关“特殊用途域名” 6.3 [ 3 ],名称localhost的信息,我确实理解您的困惑。

用户可以假定对本地主机名的 IPv4和IPv6地址查询将始终解析为相应的IP回送地址

因此应该将其作为默认值, 但:

  • 在当前更新且未修改的Ubuntu 14.04.3 LTS上, /etc/hosts我找到了以下内容ip6-localhostip6-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企业版10系统,我发现localhostipv6-localhostipv6-loopback

    # special IPv6 addresses
    ::1             localhost ipv6-localhost ipv6-loopback
    
  • 在一个旧 的Debian GNU / Linux的8.2 系统localhostip6-localhostip6-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)

非常详细的答案谢谢,让atm感到烦恼的是,我们将被要求尽快使用ipv6,然而,它有很多障碍(它真的不能比localhost更简单)并且没有标准化。我猜我们对此不会做任何事情,否则会造成很多麻烦……
nafas 2015年

正如您所看到的::1,这些机器上的每台机器都在工作…… “关于标准的妙处是,您有很多选择。” ASTanenbaum [ 1 ] :-)将会找到解决方案……也许是错误的解决方案!;)
Hastur

,我完全明白了。::1是ip(v6),其中localhost也是hostname。这完全是我的看法,但我相信,如果我们不按原样保留标准,那么不久的将来我们将面临许多问题。我真的希望,一旦ipv6超过标准,我们就不必键入例如ipv6.google.com代替google.com
nafas

1
你得到它显然:-) ...... BTW RFC 6761(特殊用途域名)实现在2013年二月,建议标准的成熟度级别 ...所以还有时间来之前,希望看到它作为标准为时已晚。
Hastur,2015年

1
@nafas他们已将IPv6添加到google.com
Matt Nordhoff 2015年

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
Lekensteyn 2015年

1
@Lekensteyn哪个?最新版本,-6甚至无法识别。
edmz 2015年

@black:您认为哪个版本是“最新”?ping和ping6合并在iputils-s20150815中(检查ping -V)。您的发行版可能尚未升级。(而且BSD拥有自己的软件,并且不使用iputils。)
grawity 2015年

@grawity:我确实有最新版本,尽管它不是实际的最新版本,甚至在Arch Linux(20140519)上也确实是OOD。
edmz 2015年

@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 2015年

1
@grawity我检查过的所有系统都不localhost用于IPv6。我发现使用的名称::1ip6-localhostip6-loopbacklocalhost6,和localhost6.localdomain6
卡巴斯德(Kasperd),2015年

3
@kasperd,从Gentoo的/etc/hosts127.0.0.1 localhost::1 localhost; Windows Vista与Windows Vista相同(除了将文件放入C:\Windows\System32\drivers\etc)。MacOSX 10.9.5为此添加fe80::1%lo0 localhost了第三个名称。
标记

3
@kasperd:那时您没有使用很多系统。窗户,门,CentOS的,Ubuntu的所有地图localhost::1。(我认为随着发行版采用systemd并启用nss_myhostname,这将变得更加普遍。)
grawity 2015年

2
CentOS 6具有:: 1作为localhost6,尽管CentOS 7具有两者的localhost。OpenWRT,Xenserver和Solaris根本没有任何IPv6条目。
qasdfdsaq 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.