DHCPv4 Review
4个步骤
- DHCP Discover : Broadcast
- DHCP Offer : Unicast
- DHCP Request : Broadcast
- DHCP Acknowledge :Unicast
DHCP Server 需要提供的东西
- Unicast Address
- Subnet mask
- Default Router
- DNS Server
Terms
- Prefix : 网络号 Network ID
- Siffix : 主机号 Host ID
DHCPv6
- DHCP 协议实际没有v6版本,IPv6 上的DHCP 依赖的是 ICMP协议中的 RS 和 RA
- RA 的内容
- Source IPv6 Address:我的Link Local IP Address
- Destination IPv6 Address:FF02::1 所有设备的广播地址
- 建议获取IPv6 地址的方式 —— 注意这里提供的是建议
- Method1:SLAAC
- Method2:SLAAC and a stateless DHCPv6 Server
- Client 从网关的RA中的得到Prefix,会再发1个新的RS 到 FF02::1:2 (所有IPv6 Server的组播地址)获取DHCP信息(DNS)
- Method3:Stateful DHCPv6 Server
- 3种建议是通过3种Flag表示的
- A Falg:Address Autoconfiguration
- O Flag:Other configuration,从DHCPv6 服务器上获取除了GUA地址之外的其他信息(DNS)
- M Flag:Managed Address configuration,从DHCPv6 服务器上获取除了网关的全部信息
Stateless vs Statefull
- stateless :不提供地址和网关,只提供DNS
- statefull:
- 提供地址和DNS,不提供网关
- 会记录哪个Client 分配了哪个地址
- 其他没有提供的信息, 直接从RA中获取
Method1 Stateless Address Autoconfig —— 默认方式
- A=1:使用SLAAC创建GUA
- O=0:Stateless DHCPv6 Server 没有其他信息
- M=0:不需要从 Stateful DHCPv6 Server 获取信息
- Client 只能得到地址(Prefix)和Default-Route
- ipv6 address autoconfig default
- default 生成的默认路由,下一跳地址使用的是网关的 link local address ,不是GUA
Method2 SLAAC with Stateless DHCPv6
- A=1 —— A默认就是1
- O=1 —— 需要找Stateless DHCPv6 Server 获取其他信息,需要修改配置,在网关接口上开启O Flag
- interface XX
- ipv6 nd other-config-flag
- M=0 —— 不需要找Statefull DHCPv6 Server
- Client 发送1个标准RS(目标地址 FF02::2 )可以得到地址(Prefix),同时注意到O Flag = 1,所以会再发1个新的RS(这次的目标地址是 FF02::1:2 IPv6 DHCP Server的组播地址),DHCPv6 Server会返回对应信息(DNS,域名)
- DHCPv6 Server可以和网关是同1台设备
Method3 SLAAC with Statefull DHCPv6
- A=0,O=0,M=1 只有默认路由从网关获取,其他信息(包括Prefix)都找 statefull DHCPv6 Server
- 在网关Router上开启M Flag
- interface XX
- ipv6 nd prefix 2001:db8:cafe:1::/64 no-autoconfig —— 设置A Flag 为0,不使用SLAAC
- ipv6 nd managed-config-flag —— 设置M Flag 为1
- 特殊命令
- ipv6 nd autoconfig prefix —— 在 statefull 的链路上,默认情况下,即使分配的是/64(或其他) 的地址,接口和路由表里都只有 /128 的地址,无法路由。所以需要用这个命令使用原先的Prefix (/64)
- ipv6 nd autoconfig default-route
DHCPv6 Relay Agent
- 和 IPv4 中的 ip-helper 一致,客户端和Server 不在同1个网段,因为DHCP Discovery 是 2层信息,没有办法跨越3层。所以需要1个 helper,Router对其封装发给DHCP Server,或者反向解封发给CLient
- 命令
- ipv6 dhcp relay destination XXX