当标准说 FE80:/10 时,为什么 Cisco 对链路本地地址强制执行 X:X:X:X::X?

网络工程 思科 思科-ios ipv6 cisco 命令 界面
2021-07-19 04:13:07

本文档显示您可以使用以下选项之一:

interface type/number  
 ipv6 address ipv6-prefix/prefix-length eui-64  
 ipv6 address ipv6-prefix/prefix-length link-local    <------format 
 ipv6 address ipv6-prefix/prefix-length anycast 

另一方面,当您尝试命令行选项时,您会得到以下信息:

R1(config-subif)# ipv6 address ?  
  WORD                General prefix name  
  X:X:X:X::X          IPv6 link-local address  
  X:X:X:X::X/<0-128>  IPv6 prefix  
  autoconfig          Obtain address using autoconfiguration
  dhcp                Obtain a ipv6 address using dhcp

并且命令ipv6 address FE80::1 link-local将在不遵循上述格式的情况下工作。我在这里错过了什么?

编辑:这里有一些使用文档指示的格式的测试

R1(config-subif)#ipv6 address FE80::1/11 link-local  
                                         ^
% Invalid input detected at '^' marker.

R1(config-subif)#ipv6 address FE80::1/10 link-local 
                                         ^
% Invalid input detected at '^' marker.

R1(config-subif)#ipv6 address FE80::0/10 link-local 
                                         ^
% Invalid input detected at '^' marker.
2个回答

您链接到的文档声明了特定的 IOS 版本。可能不正确;这在 Cisco 文档中并不罕见。

实际上,在几个 IOS 15.X 版本上对此进行了测试,您没有在链接本地地址上指定前缀长度,因为它对于链接本地地址是隐式的,正如您在 CLI 帮助中看到的(ipv6 address ?显示X:X:X:X::X IPv6 link-local address,没有前缀长度)。您确实在非链路本地 IPv6 地址上指定前缀长度,因为没有隐式前缀长度。

就个人而言,我认为在您的接口上指定特定的链接本地地址将是一个巨大的痛苦,几乎没有收获。仅在接口上启用 IPv6 将分配一个唯一的链路本地地址,这就是您真正需要的。从 MAC 地址派生接口 ID 确实没有安全风险,因为该地址永远不会在链路外被看到,也不会像全局范围地址那样在 Internet 上进行跟踪。

链路本地地址由前缀 FE80:/10 定义,但实际上 FE80:/64 的使用如RFC 4291 中所定义

链路本地地址具有以下格式:

|   10     |
|  bits    |         54 bits         |          64 bits           |
+----------+-------------------------+----------------------------+
|1111111010|           0             |       interface ID         |
+----------+-------------------------+----------------------------+

可以看到,网络ID部分(前半部分,“X:X:X:X”)是固定的,只能修改接口ID(后64位)。

您可以在这个相关问题中找到更多信息:当实际使用 fe80::/64 时,为什么要为链接本地地址保留 fe80::/10?