Làm cách nào để có được địa chỉ IPv6 có thể ping của máy?


13

khi tôi thử: $ ip -6 addr tôi nhận được một cái gì đó như:

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

nếu tôi cố gắng ping nó từ chính máy:

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

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

Tôi đang làm gì sai?

Câu trả lời:


23

Bất kỳ địa chỉ IPv6 nào bắt đầu bằng địa chỉ fe80:tương đương với địa 169.254.*.*chỉ IPv4 , tức là địa chỉ liên kết cục bộ, chỉ có thể truy cập trong phân đoạn mạng được kết nối trực tiếp, sử dụng cụ thể kết nối với phân đoạn đó. Tuy nhiên, không giống như IPv4, một NIC hoàn toàn bình thường có cả địa chỉ IPv6 liên kết cục bộ một hoặc nhiều địa chỉ IPv6 toàn cầu cùng một lúc.

fe80:địa chỉ IPv6 là liên kết cục bộ, bạn phải chỉ định giao diện mạng mà bạn muốn sử dụng khi ping nó.

Thí dụ:

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

Bạn cũng có thể nối thêm giao diện ở cuối địa chỉ bằng cách sử dụng %dấu : ping6 fe80::beae:c5ff:febe:a742%eth0.

Yêu cầu này chỉ dành cho các địa chỉ IPv6 liên kết cục bộ: bạn có thể ping các địa chỉ IPv6 có thể định tuyến toàn cầu mà không chỉ định giao diện.

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

Nó cũng nói scope linkngay trong đầu ra :)
hobbs

4
Cũng như một phụ lục cho câu trả lời: bạn cũng có thể chỉ định giao diện ở cuối địa chỉ:ping6 fe80::beae:c5ff:febe:a742%eth0
Ferrybig

@Ferrybig: cảm ơn đã nhắc nhở tôi, cập nhật câu trả lời của tôi.
telcoM

1
Lưu ý rằng nếu bạn muốn ping một địa chỉ ipv6 từ xa, bộ định tuyến gia đình của bạn cũng phải hỗ trợ ipv6. Các bộ định tuyến cũ không phải lúc nào cũng có bản cập nhật phần mềm / phần sụn để hỗ trợ kết nối qua ipv6. Rất có thể bạn sẽ nhận được thông báo sau:ping6: UDP connect: No route to host
Daniel Gelling

4

Từ man ping6, bạn phải cho biết ping bạn đang sử dụng giao diện nào:

-Tôi địa chỉ giao diện

Đặt địa chỉ nguồn thành địa chỉ giao diện đã chỉ định. Đối số có thể là địa chỉ IP số hoặc tên của thiết bị. Khi ping địa chỉ liên kết cục bộ IPv6, tùy chọn này là bắt buộc.

Ví dụ: nếu giao diện của bạn là eth0:

ping6 -I eth0 fe80::xxxxxx

hoặc, không có -Itùy chọn:

ping6 fe80:xxxxxx%eth0
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.