ping6:使用 %iface 表示法时“名称或服务未知”

ping6:使用 %iface 表示法时“名称或服务未知”

man ping

-我interface
接口可以是地址,也可以是接口名称。如果接口是一个地址,则将源地址设置为指定的接口地址。如果接口在接口名称中,则将源接口设置为指定接口。对于 IPv6,当对链接本地范围地址执行 ping 操作时,需要链接规范(通过目标中的“%”表示法,或通过此选项)。

fddb:fe2a:ab1e::c023/64我已在组合接口上设置了 IPv6 地址team0

当我尝试 ping 同一网络中的其他 IPv6 主机而不指定接口时,它工作正常:

# ping6 fddb:fe2a:ab1e::c021
PING fddb:fe2a:ab1e::c021(fddb:fe2a:ab1e::c021) 56 个数据字节
来自 fddb:fe2a:ab1e::c021 的 64 个字节:icmp_seq=1 ttl=64 时间=0.508 ms
来自 fddb:fe2a:ab1e::c021 的 64 个字节:icmp_seq=2 ttl=64 时间=0.740 ms
来自 fddb:fe2a:ab1e::c021 的 64 个字节:icmp_seq=3 ttl=64 时间=0.688 ms

当我尝试使用-I选项 ping 同一台机器指定接口时,它也工作正常:

# ping6 fddb:fe2a:ab1e::c021 -I team0
来自 fddb:fe2a:ab1e::c023 team0 的 PING fddb:fe2a:ab1e::c021(fddb:fe2a:ab1e::c021):56 个数据字节
来自 fddb:fe2a:ab1e::c021 的 64 个字节:icmp_seq=1 ttl=64 时间=3.12 ms
来自 fddb:fe2a:ab1e::c021 的 64 个字节:icmp_seq=2 ttl=64 时间=0.975 ms
来自 fddb:fe2a:ab1e::c021 的 64 个字节:icmp_seq=3 ttl=64 时间=0.784 ms

但是当我在得到这个之后尝试 ping 指定接口时%

# ping6 fddb:fe2a:ab1e::c021%team0
ping: fddb:fe2a:ab1e::c021%team0: 名称或服务未知

我有 CentoOS Linux 版本 7.5.1804(核心),iputils版本为s20160308

问题是:为什么当我使用%-notation.现在已弃用吗?

答案1

对于不是链路本地地址的 IPv6 地址,范围 ID 规范不是必需的,也没有意义。您正在 ping 可路由地址,而不是链路本地地址,因此您不需要也不应该提供作用域 ID。 RFC 4007 指出:

该格式适用于非全局范围的各种单播和组播地址,但不指定范围的地址除外。该格式没有意义,不应用于全局地址。

(请注意,在 2005 年撰写本文时,IPv6 具有更多范围,其中一些范围已被更改或弃用。今天,这实际上仅适用于链路本地地址。)

相关内容