Làm cách nào để ping ping localhost bằng IPv6?


22

Tôi đang cố gắng để hiểu IPv6 tốt hơn.

Đầu tiên, tôi thử ifconfig và tôi nhận được như sau:

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

Vì vậy, từ trên tôi có thể giả sử IPv6 được bật (sửa tôi nếu tôi sai ở đây).

Bây giờ nếu tôi sử dụng ping localhosttôi nhận được:

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

Nhưng khi tôi sử dụng ping6 localhosttôi nhận được:

unknown host

Làm thế nào để tôi sử dụng ping6? Hay cụ thể hơn, những thay đổi cần phải được thực hiện để thực hiện ping6 localhostcông việc (nếu có thể)?


3
Nếu bạn đang dùng Linux, bạn thường nên tránh ifconfigroute- thích ip addrip route, hỗ trợ nhiều tính năng mạng hơn và có đầu ra ổn định hơn.
grawity

@grawity thx cho người bạn đời, rất hữu ích
nafas

Câu trả lời:


15

Câu trả lời ngắn gọn [ 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`

Thay đổi để làm việc ping6 localhost

Nếu bạn muốn đặt localhostlàm bí danh cho cả hai pingping6 nó chưa có trên máy của bạn, thì đủ để ghi vào /etc/hoststệp cả hai dòng:

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

Đối với những gì nó liên quan đến bí danh hiện đang được sử dụng trên hệ thống của bạn, bạn có thể kiểm tra tệp máy chủ của mình, /etc/hosts [ 1 ] hoặc ở một nơi khác nếu trên một hệ thống khác [ 2 ] .
Bạn có thể tìm thấy ip6-localhost, ip6-loopback, ipv6-localhost, ipv6-loopbackhoặc localhostbản thân ...


Một số từ nữa

Tôi thực sự hiểu sự nhầm lẫn của bạn đối với những gì tôi đọc được từ rfc6761 về "Tên miền sử dụng đặc biệt" 6.3 [ 3 ] , về tên localhost ,

Người dùng có thể cho rằng các truy vấn địa chỉ IPv4 và IPv6 cho tên localhost sẽ luôn giải quyết theo địa chỉ vòng lặp IP tương ứng .

vì vậy nó nên được dự kiến ​​là mặc định nhưng:

  • Trên Ubuntu 14.04.3 LTS được cập nhật và chưa được cập nhật hiện tại, /etc/hoststôi đã tìm thấy phần sau với 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
    
  • Trên một Suse Enterprise 10 hệ thống tôi thấy localhost, ipv6-localhost,ipv6-loopback

    # special IPv6 addresses
    ::1             localhost ipv6-localhost ipv6-loopback
    
  • Trên cũ Debian GNU / Linux 8.2 hệ thống localhost, ip6-localhost,ip6-loopback

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

Điều đó có nghĩa là, theo kinh nghiệm hạn chế của tôi, bạn nên xem trong /etc/hosttệp của mình và sửa đổi nó hoặc sử dụng những gì bạn sẽ làm, ví dụ,

ping6 ipv6-localhost   # On some systems (maybe on Suse) 
ping6 ip6-localhost    # On some systems (maybe on Debian/*buntu)

Câu trả lời rất chi tiết cảm ơn, điều khiến tôi lo lắng, chúng tôi sẽ được yêu cầu sử dụng ipv6 rất sớm, tuy nhiên, có rất nhiều trở ngại (thực sự không thể đơn giản hơn localhost thực sự) và không có sự thay thế. Tôi đoán chúng tôi sẽ không làm bất cứ điều gì về nó cho đến khi nó gây ra nhiều rắc rối ...
nafas

Như bạn đã thấy ::1hoạt động trên mỗi máy đó ... "Điều hay về tiêu chuẩn là bạn có rất nhiều lựa chọn." ASTanenbaum [ 1 ] :-) Một giải pháp sẽ được tìm thấy ... có thể là sai! ;)
Hastur

, Tôi hoàn toàn có được nó bạn đời. ::1là ip (v6), trong đó như localhosthostname. hoàn toàn là ý kiến ​​của tôi nhưng tôi tin rằng nếu chúng ta không giữ tiêu chuẩn như hiện tại, chúng ta sẽ gặp nhiều vấn đề trong tương lai gần. Tôi thực sự hy vọng rằng một khi ipv6 vượt qua, chúng ta không phải gõ ví dụ ipv6.google.comthay vìgoogle.com
nafas

1
Rõ ràng là bạn đã nhận được nó :-) ... BTW RFC 6761 (Tên miền sử dụng đặc biệt) đã đạt được mức trưởng thành Tiêu chuẩn đề xuất vào tháng 2 năm 2013. ... vì vậy vẫn còn thời gian để hy vọng xem nó là tiêu chuẩn trước đó se la qua muộn.
Hastur

1
@nafas Họ đã thêm IPv6 vào google.com.
Matt Nordhoff

24

Thử:

ping6 ::1

Kết quả sẽ như sau:

# 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

(Tương tự cho ping6 -V.)


6
Các phiên bản mới hơn iputilskhông có ping6tiện ích riêng biệt , nó đã được hợp nhất với ping. Đối với các phiên bản đó, sử dụng ping -6 ::1hoặc (vì ::1không phải là địa chỉ IPv4) ping ::1.
Lekensteyn

1
@Lekensteyn nào? Phiên bản mới nhất, -6thậm chí không được công nhận.
edmz

@black: Phiên bản nào bạn cho là "mới nhất"? ping và ping6 đã được hợp nhất trong iputils-s20150815 (kiểm tra ping -V). Bản phân phối của bạn có thể chưa được nâng cấp. (Và BSD có phần mềm riêng của họ và không sử dụng iputils.)
grawity

@grawity: Tôi có phiên bản mới nhất, mặc dù đó không phải là phiên bản mới nhất thực sự và nó thực sự là OOD, ngay cả trên Arch Linux (20140519).
edmz

@black: "Mới nhất nhưng không phải là mới nhất thực tế"? ... Dù sao, Arch đã có iputils-20150815 trong [thử nghiệm] trong hơn một tháng, mặc dù tôi không biết khi nào nó sẽ được chuyển sang ổn định.
grawity

9

localhostlà tên máy chủ giải quyết 127.0.0.1địa chỉ. /etc/hostsTập tin của bạn nên có một mục riêng cho ::1, rất có thể localhost6. Vì vậy, hãy thử những điều sau:

ping6 ::1
ping6 localhost6

7
Tên máy chủ có thể phân giải đến nhiều địa chỉ cùng một lúc - đặc biệt nếu chúng từ các giao thức khác nhau. Hầu hết các hệ thống bí danh localhostcho cả hai 127.0.0.1::1.
grawity

1
@grawity Không có hệ thống nào tôi kiểm tra sử dụng localhostcho IPv6. Tên tôi thấy sử dụng cho ::1ip6-localhost, ip6-loopback, localhost6, và localhost6.localdomain6.
kasperd

3
@kasperd, từ Gentoo /etc/hosts: 127.0.0.1 localhost, ::1 localhost; Windows Vista giống hệt nhau (ngoại trừ việc đưa tệp vào C:\Windows\System32\drivers\etc). MacOSX 10.9.5 thêm vào fe80::1%lo0 localhostnhư một tên thứ ba cho nó.
Đánh dấu

3
@kasperd: Bạn chưa sử dụng nhiều hệ thống. Windows, Arch, CentOS, Ubuntu tất cả bản đồ localhostđể ::1. (Tôi nghĩ rằng điều này sẽ còn phổ biến hơn nữa khi các distro chấp nhận systemd và kích hoạt nss_myhostname.)
grawity

2
CentOS 6 có :: 1 là localhost6, mặc dù CentOS 7 có localhost cho cả hai. OpenWRT, Xenserver và Solaris hoàn toàn không có bất kỳ mục IPv6 nào.
qasdfdsaq
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.