DHCP 动态主机配置协议
为主机提供网络配置,IP地址、子网掩码、默认网关、DNS服务器、TFTP服务器 等等
DHCP的四种报文
discovery 发现 客户端发送
offer 提供 服务器发送
request 请求 客户端发送
ack 确认 服务器发送
客户端使用 UDP端口 68
服务器使用 UDP端口 67
发现阶段
DHCP产生数据,交给UDP,确定源目端口为 67、68(UDP交给IP)
源IP地址 没有 设置为 0.0.0.0 , 即未指定地址
目标IP地址未知 设置为本地广播地址,在本广播域内尝试发现DHCP服务器
提供阶段
假定广播域内存在DHCP服务器
若广播域内有DHCP服务器,并且配置正确,则会向主机发送 offer 报文
提供报文中含有DHCP服务器给客户端提供的网络参数
广播域内可以使用MAC地址唯一标识一个网络接口
选择阶段
如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,它讲选择某一服务器所提供的IP地址
确认阶段
服务器确认客户端可以使用上述提供的参数
R1(config)#ip dhcp excluded-address 10.1.200.1 10.1.200.99 //排除某些地址,不进行分配
R1(config-if)#ip dhcp pool SERVER
R1(dhcp-config)# host 10.1.100.66 255.255.255.0 //设置固定ip地址
R1(dhcp-config)# client-identifier 01aa.bbcc.0030.00 // 将固定的IP地址和想要固定ip地址的接口MAC进行绑定 (01 代表以太网)
R1(dhcp-config)# default-router 10.1.100.254
R1(dhcp-config)# dns-server 66.66.66.66
R3(config-if)#ip address dhcp client-id Ethernet0/0 hostname R3 //客户端获取的地址从e0/0来,命名为R3
验证
R1(config)#do show ip dhcp binding
DHCP 中继 【relay agent】
转发 明确的告知中继代理,服务器所在位置(IP)
(通过路由能力,为中继代理和服务器提供双向的IP通信)
由中继代理,将来自客户端的广播报文转换为单播报文发往服务器,同时将来自服务器回应的单播报文转换为广播报文发送到客户端所在广播域
Dhcp中继
SW1(config)#int vlan 10(网关接口)
SW1(config-if)#ip helper-address 5.5.5.5(dhcp服务器地址)
DHCP嗅探技术
通过在交换机的接入端口上限值 DHCP 发现报文的发送速率,以阻止恶意软件攻击真实的DHCP服务器
通过在接入端口上阻止 DHCP Offer 报文,以达到阻止伪造DHCP服务器对终端提供虚假服务的目的
DHCP嗅探能力一旦开启,交换机上的所有端口都被指定为非信任端口
非信任端口不接受 offer 报文
同时不信任携带 option 82选项的DHCP报文
开启 DHCP 嗅探
SW1(config)#ip dhcp snooping // 全局开启DHCP 嗅探
SW1(config)#ip dhcp snooping vlan 1 //vlan 开启DHCP 嗅探
SW1(config)#int e0/0 //连接 DHCP 服务器端的接口
SW1(config-if)#ip dhcp snooping trust // 信任 DHCP Server
SW1(config-if)#int e0/3 // 连接 DHCP客户端 的接口
SW1(config-if)#ip dhcp snooping limit rate 100 // DHCP 报文限速
SW1(config)#no ip dhcp snooping information option //关闭插入 option 82
或
R1(config)#ip dhcp relay information trust-all // 在 DHCP Server上信任带有中继选项的 DHCP 报文
或
R1(config-if)#ip dhcp relay information trusted // 在 DHCP Server上的三层接口做信任
手工添加 DHCP 绑定表
ip dhcp snooping binding 1.1.1 vlan 1 1.1.1.1 interface gi1/1 expiry 1000
DHCPv6
无状态自动配置(stateless autoconfiguration)-利用RA信息通告的前缀生成地址
1,无状态自动配置
在IPv6的体系中,IPv6地址可以支持无状态的自动配置,也就
是通过某种机制主机获取网络的前缀信息,然后主机自己生成
地址的接口ID部分。
主机通过两个途径网络的前缀
被动接收到网络上路由器通告(Router Advertisement),从通告中获得;主动发
送路由器请求(Router Solicitation),路由器回应路由器通告后,主机从通告中获得。
DHCP倾向于被用在需要集中管理主机的站点,而无状态自动配置不需要任何集中管理
RA(Router Advertisement)消息
链路上的路由器会定期的( 200S )发送RA(Router Advertisement)消息
收到RA的主机将加入默认路由器列表中,可以生成地址的接口ID部分
和IPv6地址的无状态自动配置有关:通过RA消息获得网络前缀后,然后主机生成接口ID
正确性检查
报文的源地址必须是一个link-local地址
TTL值必须是255跳
RS (Router Solicitation)
主机接口初始化时 主动发RS (Router Solicitation)消息,让路由器快速产生RA报文,路由器回应RA,回复的RA可以直接单播给请求的主机,也可以选择组播到所有节点
有状态自动配置(stateful autoconfiguration)-必须通过DHCP获得,称为有状态
M标志为1时表示主机使用有状态地址自动配置(例如DHCP等)获得IP地址;为0时标识用无状态自动配置获得IPv6地址
O标志为1时表示主机使用有状态地址自动配置(例如DHCP等)机制产生除地址以外的其他参数
O bit置位,即客户端其他参数,比如DNS等通过DHCP获得,而地址自动从与PC直连的路由器的IPv6的前缀获得(所以有状态有其应用场景)
DHCPv6
无状态地址自动配置:
R4(config)#ipv6 unicast-routing //全局开启 IPV6 路由功能
R4(config)#int e0/3
R4(config-if)#ipv6 add 2045::4/64 //设置ipv6地址
R4(config-if)#no sh
R5(config)#int e0/3
R5(config-if)#ipv6 enable //开启ipv6
R5(config-if)#ipv6 address autoconfig // 配置客户端通过RA获取前缀
R5(config-if)#ipv6 nd ra suppress al // 抑制 RA
验证
R5(config-if)#do show ipv6 int brief e0/3
配置DHCPv6
R4(config-if)#ipv6 dhcp pool SERVER //设置ipv6 dhcp地址池名称
R4(config-dhcpv6)#address prefix 2045::/64 //分配网络前缀地址范围
R4(config-dhcpv6)#dns-server 2333::1 //dns服务器地址
R4(config-dhcpv6)#domain-name cisco.com //设置域名
R4(config-dhcpv6)#exi
R4(config)#int e0/3
R4(config-if)#ipv6 nd other-config-flag // 要求主机通过DHCP获取其它配置参数
R4(config-if)#ipv6 dhcp server SERVER //设置dhcp服务器名称
R5(config)#int e0/3
R5(config-if)#ipv6 address dhcp //通过dhcp获取ipv6地址
R5(config-if)#ipv6 nd ra suppress al // 抑制 RA