为什么我无法 ping 通本地 IPv6 地址?

为什么我无法 ping 通本地 IPv6 地址?

操作系统:almalinux9

2610:150:c002::1:a563是我的本地网卡的 IPv6 地址eno2

[root@alpha ~]# ip addr show eno2
3: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether b8:ca:3a:f9:54:f8 brd ff:ff:ff:ff:ff:ff
    altname enp1s0f1
    inet 192.168.3.242/29 brd 192.168.3.247 scope global noprefixroute eno2
       valid_lft forever preferred_lft forever
    inet6 2610:150:c002::1:a563/124 scope global tentative noprefixroute
       valid_lft forever preferred_lft forever
    inet6 fe80::baca:3aff:fef9:54f8/64 scope link tentative noprefixroute
       valid_lft forever preferred_lft forever

我可以 ping 通lo ::1

[root@alpha ~]# ping ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.081 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.173 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.071 ms
64 bytes from ::1: icmp_seq=4 ttl=64 time=0.080 ms

但我无法 ping 通2610:150:c002::1:a563

[root@alpha ~]# ping6 2610:150:c002::1:a563
PING 2610:150:c002::1:a563(2610:150:c002::1:a563) 56 data bytes
^C
--- 2610:150:c002::1:a563 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3063ms

以下是命令 ip -6 route 的结果

[root@alpha ~]# ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2610:150:c002::1:a560/124 dev eno2 proto kernel metric 104 linkdown pref medium
fe80::/64 dev vnet0 proto kernel metric 256 pref medium
fe80::/64 dev vnet1 proto kernel metric 256 pref medium
fe80::/64 dev vnet3 proto kernel metric 256 pref medium
fe80::/64 dev vnet4 proto kernel metric 256 pref medium
fe80::/64 dev vnet8 proto kernel metric 256 pref medium
fe80::/64 dev vnet9 proto kernel metric 256 pref medium
fe80::/64 dev vnet10 proto kernel metric 256 pref medium
fe80::/64 dev vnet13 proto kernel metric 256 pref medium
fe80::/64 dev vnet16 proto kernel metric 256 pref medium
fe80::/64 dev vnet17 proto kernel metric 256 pref medium
fe80::/64 dev vnet18 proto kernel metric 256 pref medium
fe80::/64 dev vnet26 proto kernel metric 256 pref medium
fe80::/64 dev eno2 proto kernel metric 1024 linkdown pref medium
default via 2610:150:c002::1:a561 dev eno2 proto static metric 104 linkdown pref medium
[root@alpha ~]#
[root@alpha ~]# ip route
default via 192.168.3.241 dev eno1 proto static metric 101
192.168.3.240/29 dev eno1 proto kernel scope link src 192.168.3.242 metric 101
192.168.3.240/29 dev eno2 proto kernel scope link src 192.168.3.243 metric 104 linkdown
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
[root@alpha ~]#

以下是命令 ip route get 2610:150:c002::1:a563 的结果

[root@alpha ~]# ip route get 2610:150:c002::1:a563
2610:150:c002::1:a563 dev eno2 proto kernel src ::1 metric 102 pref medium
[root@alpha ~]#

有人能帮助我吗?感激不尽。

答案1

Linux 输出中 iproute 上的 tentative 标志表示未发生重复地址检测 (DAD)。对您而言,这既是问题地址,也是您的本地链接。在 IPv6 上,存在标准 DAD,并且网络堆栈在发生这种情况之前不应传递流量。与 IPv4 不同,IPv6 可防止难以排除的重复地址问题。

linkdown 和 NO-CARRIER 表示相关接口因媒体被拔出或类似原因而不可用。正如您在评论中所说。

从显而易见的选项开始,然后进一步深入:

插入 NIC 并将其打开,让 DAD 完成。这并不是说网络堆栈不知道自己的地址,而是在执行安全操作。就像在分布式系统中一样,在询问同行之前,不要相信您拥有唯一的用户提供的 ID。

在其他上行接口上设置地址。如果没有更多关于您正在做的事情的背景信息,很难说清楚到底是什么。可能是其他以太网物理或虚拟,也可能是环回。

在接口上禁用 DAD。这又回到了重复地址的糟糕旧时代,仅当您确信链接上没有重复地址时才建议这样做。

进一步阅读:一些关于 DAD 的博客文章

相关内容