Linux - 查找路由器IPv6全局地址

时间:2015-03-28 00:03:18

标签: linux bash ipv6

我试图找到一种可靠地查找本地路由器的全局IPv6地址的方法。命令" ip -6 neigh show"没有显示它。我找到了以下工作,只要路由器使用EUI-64生成主机地址:

NET=$(ip -6 route|egrep "^[23]"|cut -d':' -f1-4)
EUI=$(ip -6 route|egrep "^default.*metric 1 "|cut -d':' -f3-6|cut -d' ' -f1)

ping6 $NET:$EUI -B -c 1 > /dev/null 2>&1

然而,当EUI-64未被使用时,这显然不起作用。还有其他方法可以找到它吗?

1 个答案:

答案 0 :(得分:1)

没有可靠的方法来确定这一点,因为您的本地路由器根本不必具有全局IPv6地址。最佳实践表明它应该,并且绝大多数路由器都会出现,但从技术上讲,您的路由器可能只在两个接口上都有链路本地地址,并且仍然可以路由全局前缀。 (是的,我以前做过这个。是的,这很邪恶。)

除非您手动添加指向全局地址的默认路由,否则您可能通过路由器公告学习了默认路由,这意味着路由表和邻居表(如上所述)将仅包含链接本地地址。 / p>

但是,如果你执行traceroute,第一跳可能是(关键词:可能 - 这可能会欺骗这些东西)你的本地路由器。

traceroute to 2600:: (2600::), 30 hops max, 80 byte packets
 1  2001:db8:1::1        0.534 ms   0.510 ms   0.749 ms
 2  2001:db8:2::1       32.494 ms  33.944 ms  35.406 ms
 3  2600::              36.935 ms  38.102 ms  39.860 ms

TL; DR无法可靠地确定这一点,所以简短的回答是“不”。