ฉันจะ ping localhost โดยใช้ 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 สำหรับคู่เคล็ดลับที่มีประโยชน์มาก
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 มักจะแก้ไขไปยังที่อยู่

ดังนั้นควรคาดว่าเป็นค่าเริ่มต้น แต่:

  • ในUbuntu 14.04.3 ที่ อัปเดตและไม่มีการปรับปรุงในปัจจุบัน/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 เอ็นเตอร์ไพรส์ 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 ] :-) จะพบวิธีแก้ปัญหา ... อาจผิดพลาด! ;)
Hastur

ฉันได้รับมันโดยสิ้นเชิง ::1เป็น IP (v6) ซึ่งเป็นเป็นlocalhost hostnameความคิดเห็นของฉันทั้งหมด แต่ฉันเชื่อว่าถ้าเราไม่รักษามาตรฐานเหมือนเดิมเราจะเผชิญกับปัญหามากมายในอนาคตอันใกล้ ฉันหวังว่าเมื่อ ipv6 แซงเราไม่ต้องพิมพ์เช่นipv6.google.comแทนgoogle.com
nafas

1
เป็นที่ชัดเจนว่าคุณได้รับ :-) ... BTW RFC 6761 (ชื่อโดเมนที่ใช้งานพิเศษ) ได้รับระดับวุฒิภาวะมาตรฐานที่เสนอในเดือนกุมภาพันธ์ 2013 ... ดังนั้นยังมีเวลาที่จะหวังว่ามันจะเป็นมาตรฐานก่อน มันจะสายเกินไป
Hastur

1
@nafas พวกเขาได้เพิ่ม IPv6 google.comเพื่อ
Matt Nordhoff

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ไม่ได้เป็นที่อยู่ ping ::1IPv4)
Lekensteyn

1
@Lekensteyn อันไหน? รุ่นล่าสุด-6ไม่เป็นที่รู้จัก
edmz

@black: คุณคิดว่า "รุ่นล่าสุด" รุ่นใด ping และ ping6 ถูกรวมใน iputils-s20150815 (ตรวจสอบping -V) distro ของคุณอาจยังไม่ได้อัพเกรด (และ BSD มีซอฟต์แวร์ของตัวเองและไม่ใช้ iputils)
grawity

@grawity: ฉันมีรุ่นล่าสุดแม้ว่าจะไม่ใช่รุ่นล่าสุดจริงและเป็น OOD แน่นอนแม้แต่ใน Arch Linux (20140519)
edmz

@ สีดำ: "ล่าสุด แต่ไม่ใช่ของจริงล่าสุด"? ... ยังไงก็ตาม 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: คุณยังไม่ได้ใช้หลายระบบ หน้าต่างโค้ง CentOS, Ubuntu ทั้งหมดของแผนที่จะlocalhost ::1(ผมคิดว่านี่จะเป็นเรื่องธรรมดามากยิ่งขึ้นเป็น distros adopt systemd และเปิดใช้งาน nss_myhostname.)
grawity

2
CentOS 6 มี :: 1 เป็น localhost6 แต่ CentOS 7 มี localhost สำหรับทั้งคู่ OpenWRT, Xenserver และ Solaris ขาดรายการ IPv6 ใด ๆ เลย
qasdfdsaq
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.