ฉันจะได้รับที่อยู่ pingable IPv6 ของเครื่องของฉันได้อย่างไร


14

เมื่อฉันลอง: $ ip -6 addr ฉันได้รับสิ่งที่ชอบ:

inet6 fe80::d773:9cf0:b0fd:572d/64 scope link

ถ้าฉันพยายาม ping จากตัวเครื่อง:

$ ping6 fe80::d773:9cf0:b0fd:572d/64
unknown host

$ ping6 fe80::d773:9cf0:b0fd:572d
connect: Invalid argument

ผมทำอะไรผิดหรือเปล่า?

คำตอบ:


24

ที่อยู่ IPv6 ใด ๆ ที่เริ่มต้นด้วยfe80:นั้นเทียบเท่ากับที่169.254.*.*อยู่IPv4 นั่นคือที่อยู่ link-local สามารถเข้าถึงได้เฉพาะในส่วนเครือข่ายที่เชื่อมต่อโดยตรงโดยใช้ NIC ที่เชื่อมต่อกับส่วนนั้นโดยเฉพาะ แตกต่างจาก IPv4 อย่างไรก็ตามเป็นเรื่องปกติอย่างสมบูรณ์แบบสำหรับ NIC ที่จะมีทั้งที่อยู่ IPv6 ของ link-local และที่อยู่ IPv6 ทั่วโลกอย่างน้อยหนึ่งรายการพร้อมกัน

เนื่องจากที่fe80:อยู่ IPv6 เป็น link-local คุณต้องระบุอินเตอร์เฟสเครือข่ายที่คุณต้องการใช้เมื่อส่ง Ping

ตัวอย่าง:

$ ping6 fe80::beae:c5ff:febe:a742
connect: Invalid argument

$ ping6 -I eth0 fe80::beae:c5ff:febe:a742
PING fe80::beae:c5ff:febe:a742(fe80::beae:c5ff:febe:a742) from fe80::beae:c5ff:febe:a742%eth0 eth0: 56 data bytes
64 bytes from fe80::beae:c5ff:febe:a742%eth0: icmp_seq=1 ttl=64 time=0.182 ms
64 bytes from fe80::beae:c5ff:febe:a742%eth0: icmp_seq=2 ttl=64 time=0.167 ms
...

นอกจากนี้คุณยังสามารถผนวกอินเตอร์เฟซในตอนท้ายของที่อยู่โดยใช้เครื่องหมาย:%ping6 fe80::beae:c5ff:febe:a742%eth0

ข้อกำหนดนี้ใช้สำหรับที่อยู่ IPv6 ของ link-local: คุณสามารถ ping ที่อยู่ IPv6 ที่กำหนดเส้นทางได้ทั่วโลกโดยไม่ต้องระบุส่วนต่อประสาน

$ ping6 2a00:1450:400f:80a::200e  # that's ipv6.google.com
PING 2a00:1450:400f:80a::200e(2a00:1450:400f:80a::200e) 56 data bytes
64 bytes from 2a00:1450:400f:80a::200e: icmp_seq=1 ttl=55 time=17.6 ms
64 bytes from 2a00:1450:400f:80a::200e: icmp_seq=2 ttl=55 time=19.6 ms
...

นอกจากนี้ยังกล่าวว่าscope linkสิทธิในการส่งออก :)
ฮอบส์

4
เช่นเดียวกับภาคผนวกของคำตอบ: คุณสามารถระบุส่วนต่อท้ายที่อยู่:ping6 fe80::beae:c5ff:febe:a742%eth0
Ferrybig

@Ferrybig: ขอบคุณที่เตือนให้ฉันอัพเดตคำตอบของฉัน
telcoM

1
โปรดทราบว่าหากคุณต้องการ ping ที่อยู่ ipv6 ระยะไกลเราเตอร์ในบ้านของคุณก็ต้องรองรับ ipv6 เราเตอร์ที่เก่ากว่าไม่ได้มีการอัพเดตซอฟต์แวร์ / เฟิร์มแวร์เสมอไปเพื่อรองรับการเชื่อมต่อผ่าน ipv6 คุณมักจะได้รับข้อความต่อไปนี้:ping6: UDP connect: No route to host
Daniel Gelling

4

จากman ping6คุณต้องบอก ping ว่าคุณใช้อินเตอร์เฟสใด:

-I อินเตอร์เฟซที่อยู่

ตั้งค่าที่อยู่ต้นทางเป็นที่อยู่อินเตอร์เฟสที่ระบุ อาร์กิวเมนต์อาจเป็นที่อยู่ IP ที่เป็นตัวเลขหรือชื่อของอุปกรณ์ เมื่อ ping ที่อยู่ลิงก์ท้องถิ่นของ IPv6 ตัวเลือกนี้เป็นสิ่งจำเป็น

ตัวอย่างเช่นหากส่วนต่อประสานของคุณคือeth0:

ping6 -I eth0 fe80::xxxxxx

หรือไม่มี-Iตัวเลือก:

ping6 fe80:xxxxxx%eth0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.