IP v6地址配置
DHCPv6(有状态地址自动配置)
DHCPv6分为三种:
- DHCPv6有状态自动配置:DHCPv6服务器自动配置IP v6地址/前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)。
- DHCPv6无状态自动配置:主机IP v6地址(前缀)仍然通过路由通告(SLAAC)方式(发送RA报文)自动生成,DHCPv6服务器只分配除IP v6地址以外的配置参数,包括DNS服务器等。
- DHCPv6 PD(前缀代理)自动配置:PC通过DHCPv6客户端获取路由前缀。 ::: warning
M=1,0=1:表示用DHCPv6执行地址和其他参数的配置,即有状态地址配置。 M=0,0=1:表示主机通告RA获取前缀信息,其余部分使用SLAAC无状态地址自动配置,DHCPv6仅用于配置其他主机参数(DNS等)。 M=1,0=0:表示DHCPv6仅用于地址配置,不用于配置其他参数。 M=0,0=0:对应无DHCPv6设备的网络,主机通告RA获取前缀信息,其余部分使用SLAAC无状态地址自动配置,并且用其他方法(手动配置)配置其他参数。 (M位置1后,忽略O-bit)
M位默认为0(无状态地址自动配置),M-bit手动置1:
[AR-GigabitEthernet0/0/0]ipv6 nd autoconfig managed-address-flag
O位默认为0(无状态地址自动配置),O-bit手动置1:
[AR-GigabitEthernet0/0/0]ipv6 nd autoconfig other-flag
::: DHCPv6有状态地址自动配置和SLAAC无状态地址自动配置可以同时使用,通过M、O位的置位来控制哪些参数使用DHCPv6获取,哪些参数使用SLAAC配置。
DHCPv6无状态地址自动分配
上图红框内A-bit用于指示终端设备是否能使用该前缀进行无状态地址自动配置:
A-bit被设置为0时,此时终端不能使用该前缀进行无状态地址自动配置。
A-bit被设置为1时,终端可以使用该前缀进行无状态自动配置。
::: tip A-bit默认置1,即默认情况下所有前缀都可以被用作无状态地址自动配置。 :::
上述拓扑中,要求只使用2011:: /64的路由前缀:
[AR1-GigabitEthernet0/0/0]ipv6 nd ra prefix 2011:: 64 10000 5000 ?
no-autoconfig Specify A-Flag On
off-link Specify O-Flag On
<cr> Please press ENTER to execute command
[AR1-GigabitEthernet0/0/0]ipv6 nd ra prefix 2011:: 64 10000 5000 no-autoconfig
通告时会将所有的路由前缀都给终端做无状态地址自动配置,但由于路由前缀2011:: 64的A-bit置为0,终端(AR2)收到后不会使用2011:: 64的路由前缀做无状态地址分配
常用概念:
DHCPv6有状态地址自动分配
[AR1]dhcp enable 全局使能DHCP功能
[AR1]dhcpv6 pool 1
[AR1-dhcpv6-pool-1]address prefix FC00:12::/64 地址池内做分配地址的前缀
[AR1-dhcpv6-pool-1]excluded-address FC00:12::1 排除接口地址
[AR1-dhcpv6-pool-1]dns-server 2088::8
[AR1-GigabitEthernet0/0/0]dhcpv6 server 1 接口上使能DHCPv6地址池1
[AR2-GigabitEthernet0/0/0]ipv6 address fe80::2 link-local
[AR2-GigabitEthernet0/0/0]ipv6 address auto ?
dhcp Address assigned via DHCPv6
global Use global address
link-local Use link-local address
[AR2-GigabitEthernet0/0/0]ipv6 address auto dhcp
::: warning
[AR2-GigabitEthernet0/0/0]ipv6 address auto dhcp
Error: IPv6 link-local address does not exist on the interface.
如上提示,当接口没有IP v6地址时,链路本地地址不存在(不生效),需要手工配置一个链路本地地址才可以使用DHCP分配。 ::: 如上,AR2的G0/0/0接口获得了FC00:12::2的IP v6地址,由于FC00:12::1是AR1的G0/0/0接口地址被排除出地址池,即IP v6的DHCP地址池会按照从小到大的方式进行分配,与IP v4从大到小的分配正好相反。
::: warning IP v6地址接口配置时,可以使用FC00:: 64的方式写IP v6地址前缀。 在DHCPv6地址池中配置IP v6前缀时,必须写成FC00::/64的形式,不能出现空格。 :::
::: tip 上述配置可以修改为无状态地址自动分配(SLAAC)获取IP v6地址:
[AR2-GigabitEthernet0/0/0]undo ipv6 address auto dhcp
如上,IP v6地址只有链路本地地址。
[AR2-GigabitEthernet0/0/0]ipv6 address auto global 使用全球单播地址(SLAAC获取)
如上,IP v6地址FC00:12::2E0:FCFF:FE32:6196就是AR1下发的前缀 + EUI-64接口标识生成的。 EUI-64将MAC地址第24位bit中间插入FFFE,再对从左数起的第7位(原MAC地址第7bit位),也就是U/L位取反,组成IPv6后64bit接口标识。 即02e0-fcFF-FE32-6196,加上RA报文发来的前缀FC00:12::,组成IP v6地址FC00:12::2E0:FCFF:FE32:6196。 :::
DHCPv6四步交互
DHCPv6四步交互地址分配过程: Solicit类似于Discover报文: Advertise报文: Request报文: Reply报文:
::: tip DHCPv6服务器分配的IPv6地址/前缀具有有效时间。 T1时间默认为Preferred Lifetime(有效时间)的0.5倍,给下发IP的DHCPv6服务器单播发送Renew报文进行地址/前缀租约更新请求。 T2时间默认为Preferred Lifetime(有效时间)的0.8倍,向链路中所有DHCPv6服务器组播发送Rebind报文请求更新租约。
:::
DHCPv6两步交互
DHCPv6客户端发送Solicit的报文中需要携带Rapid Commit快速提交选项。
[AR1-GigabitEthernet0/0/1]dhcpv6 server huawei rapid-commit huawei为IP v6地址池
DHCPv6报文从客户端组播发送到中继设备后通过中继转发报文单播发送给DHCPv6服务器。 ::: warning 中继设备配置时需要开始RA,RA报文中必须加上M位、O位置位的命令,否则客户端获取到的地址就是中继路由器下发的RA+本地EUI64的IP(无状态地址自动配置),就不是DHCPv6服务器下发的IP了。 客户端收到M位、O位置位的报文,表示IP需要通过DHCPv6获取,从而接收中继设备转发来的DHCPv6报文获取地址。 ::: 地址释放报文: 目的地址是所有的路由器。
DHCPv6中继
[AR2-GigabitEthernet0/0/0]dhcpv6 relay ?
destination DHCPv6 server's IPv6 address
DHCPv6的中继和DHCPv4类似。
DHCPv6 PD前缀代理自动配置
::: tip DHCPv6 PD一般用于网络中存在路由器(如本例中的DHCPv6客户端)需要继续为下连的IP v6主机分配前缀的场景,实现主机的地址自动配置,从而完成整个IPv6网络的层次化布局。 ::: 如上,即DHCPv6客户端作为前缀代理,将从DHCPv6服务器获取到的前缀向下下发给主机。
prefix-delegation 3000::/56 64
接口地址池中配置前缀列表时,/56表示地址池配置时前缀长度为56,向下分配时使用64位长度。
DHCPv6报文:
[AR3]ipv6
[AR3]dhcp enable
[AR3-dhcpv6-pool-45]prefix-delegation 2045::/64 ? 2045::/64是前缀
INTEGER<16-128> Assign prefix length 需要再单独写指定的前缀长度
[AR3-dhcpv6-pool-45]prefix-delegation 2045::/64 64
[AR3-GigabitEthernet0/0/0]ipv6 enable
[AR3-GigabitEthernet0/0/0]ipv6 address 2034::3 64
[AR3-GigabitEthernet0/0/0]dhcpv6 server 45
[AR3-GigabitEthernet0/0/0]undo ipv6 nd ra halt
[AR3-GigabitEthernet0/0/0]ipv6 nd ra max-interval 10
[AR4]ipv6
[AR4]dhcp enable
[AR4-GigabitEthernet0/0/0]ipv6 enable
[AR4-GigabitEthernet0/0/0]ipv6 address auto link-local
[AR4-GigabitEthernet0/0/0]dhcpv6 client pd 45 AR4针对于服务器做代理(pd值为DHCP地址池名)
[AR4-GigabitEthernet0/0/1]ipv6 enable
[AR4-GigabitEthernet0/0/1]ipv6 address ?
STRING<1-63> DHCPv6 PD prefix
x:x::x:x/m<X:X::X:X/M> IPv6 prefix / IPv6 prefix length <1-128>
x:x::x:x<X:X::X:X> IPv6 address
auto <Group> auto command group
[AR4-GigabitEthernet0/0/1]ipv6 address 45 ::4/64 使用DHCPv6地址池45提供的前缀,手工配置::4的地址(即2045::4/64)
[AR4-GigabitEthernet0/0/1]undo ipv6 nd ra halt 开启IP v6 RA报文通告能力[AR4-GigabitEthernet0/0/1]ipv6 nd ra max-interval 10 最大通告时间10s
[AR4-GigabitEthernet0/0/1]ipv6 address auto link-local 需要自动生成链路本地地址,否则无法使用DHCP功能
[AR5]ipv6
[AR5-GigabitEthernet0/0/0]ipv6 enable
[AR5-GigabitEthernet0/0/0]ipv6 address auto link-local 自动生成链路本地地址
[AR5-GigabitEthernet0/0/0]ipv6 address auto global RA报文携带前缀 + EUI64
(使用DHCP时无法获取IP v6地址,global也可以获取到AR3地址池中的前缀2045:: /64)
::: tip 针对于服务器做代理即将服务器发来的DHCPv6报文代理成如RA报文。
[AR4-GigabitEthernet0/0/0]dhcpv6 client pd 45
如上命令在其他所有配置(尤其是User设备AR5)完成后,需要undo后重新配置。 :::
IP v6路由
IP v6静态路由
[AR1]ipv6
[AR1-LoopBack0]ipv6 enable
[AR1-LoopBack0]ipv6 address 2011::1 64
[AR1-GigabitEthernet0/0/0]ipv6 enable
[AR1-GigabitEthernet0/0/0]ipv6 address fe80:12::1 link-local
[AR2]ipv6
[AR2-GigabitEthernet0/0/0]ipv6 enable
[AR2-GigabitEthernet0/0/0]ipv6 address fe80:12::2 link-local
[AR2-GigabitEthernet0/0/0]ipv6 address 2012::2 64
[AR2-GigabitEthernet0/0/1]ipv6 enable
[AR2-GigabitEthernet0/0/1]ipv6 address fe80:23::2 link-local
[AR2-GigabitEthernet0/0/1]ipv6 address 2023::2 64
[AR3]ipv6
[AR3-LoopBack0]ipv6 enable
[AR3-LoopBack0]ipv6 address 2033::1 64
[AR3-GigabitEthernet0/0/0]ipv6 enable
[AR3-GigabitEthernet0/0/0]ipv6 address fe80:23::3 link-local
[AR3-GigabitEthernet0/0/0]ipv6 address 2023::3 64
IP v6静态路由的目的地址可以是2033::3/128的主机路由,也可以是2033:: 64的网段路由
[AR1]ipv6 route-static 2033:: 64 2012::2
上述IP v6的路由表中包含IP v4路由表中不存在的参数。 Relay NextHop标识是否需要路由迭代,如果需要会置位,标明迭代的下一跳地址。(BGP路由基本都是迭代路由) Tunnel ID标识是否通过隧道转发,如果通过隧道转发ID为非0,正常IP转发时ID值为0。 当路由表中一个目标IP v6有多个下一跳即为负载分担。 ::: warning 配置IP v6静态路由时,需要保证下一跳可达。 下一跳可以是接口IP v6地址,也可以是(接口 + )链路本地地址。 :::