【问题标题】:Linux - find router IPv6 global addressLinux - 查找路由器 IPv6 全局地址
【发布时间】:2015-03-28 00:03:17
【问题描述】:

我正在尝试找到一种方法来可靠地找到本地路由器的全局 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 时,这显然不起作用。有没有其他方法可以找到?

【问题讨论】:

    标签: linux bash ipv6


    【解决方案1】:

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

    除非您手动添加指向全局地址的默认路由,否则您可能会通过路由器通告了解默认路由,这意味着路由表和邻居表(如您在上面指出的)将仅包含链接本地地址。

    但是,如果您执行跟踪路由,则第一跳可能(关键字:可能 — 可能会欺骗这些东西)您的本地路由器。

    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 无法可靠地确定这一点,因此简短的回答是“否”。

    【讨论】:

      猜你喜欢
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多