一、ARP协议原理与应用
OSI参考模型将网络划分为7层,IP地址工作在第三层网络层中,MAC地址工作在第二层数据链路层。
在以太网发送IP数据包时,先封装网络层的包头再封装数据链路层的包头,由于在发送时只知道目标IP地址而不知道MAC地址,又不能跨越层,所以需要使用ARP地址解析协议。
ARP协议可以根据网络层IP数据包头中的IP地址信息解析出对应的MAC地址,确保通信。ARP协议不能穿越路由器,不能被转发到其它广播域中
ARP缓存表:用于存储IP地址和经过解析的MAC地址对应关系
1. ARP的工作流程和工作原理
工作流程
工作原理
- 先查看ARP表,如果ARP表中没有目的IP地址对应的MAC表项,则发送ARP请求包
- 源主机发送ARP request 请求包,请求目的主机的MAC地址
- 同网段内的所有主机都能收到ARP request请求包,但是只有目的主机才会回复ARP reply数据包
- 源主机收到 ARP reply 数据包后,将目的主机的 IP-MAC对应关系添加进ARP表中,完成数据的以太网封装【指的是将数据包封装在以太网帧中的过程,帧包含源和目的设备的MAC地址和数据本身】,进行数据交互
2. ARP缓存表
- 动态表项
- 通过ARP协议自动学习,可以被更新,缺省老化时间为120秒
- 静态表项
- 手动配置,不能被更新,没有老化时间限制
Windows系统查看ARP表项
arp -a
Linux系统查看ARP表项
arp -v
RGOS查看ARP表项
show arp
2.1 免费ARP
免费ARP,也被称为Gratuitous ARP或无故ARP,是一种特殊的ARP请求报文
- IP地址冲突检测:免费ARP报文通过广播的方式发送到网络中,如果某台主机使用了当前主机的IP地址,则会回复一个ARP响应;收到ARP响应后,主机会发出IP地址冲突的警告
- 更新ARP表项:当某台主机的MAC地址变化或IP地址变化,该主机会发送免费的ARP广播,网络中所有主机的ARP表项中如果存在该条目将会根据免费的ARP报文来更新自己的缓存表
- 免费ARP报文还在一些特定场景中产生,如主机/系统启动期间进行网口/接口配置时,或者网卡进行了某些配置变动导致网口重新启动(如插拔网线、自动获取IP地址、手动更改IP地址、掩码、网关等参数)时
2.2 代理ARP
代理ARP(Proxy ARP)是ARP协议的一个变种
- 提供网络通信效率和稳定性:在局域网中,当一个主机需要和另一个主机进行通信,它需要知道该主机的MAC地址。如果缓存表中没有对应的MAC地址,主机会发送ARP请求广播;代理ARP能够代替主机完成ARP协议的操作,响应ARP请求,并将主机的IP地址和MAC地址进行映射记录在本地缓存表中。
- **解决跨网段ARP请求:**出现跨网段的ARP请求时,路由器会将自己的MAC地址返回给发起ARP广播请求的主机,实现MAC地址的代理(善意的欺骗),使主机能够通信。
- ARP请求的源IP地址与路由器的IP地址处在同一个子网中,且路由器有ARP请求的IP地址的路由,代理ARP就可以使网络中的主机无需配置默认网关和路由策略,就能实现与其他网络中的计算机通信。
- 源IP地址与路由器的IP地址处于同一个子网中:发送ARP请求的主机与路由器在同一个网段中,在TCP/IP网络中,处于同一个网段的主机可以直接通信无需经过路由器转发。当主机需要获取目标主机的MAC地址时,会直接在本地子网中发送ARP广播
- 路由器有ARP请求的IP地址路由:即使发送ARP请求的主机与路由器同一网段,当请求的目标IP地址可能在另一个网段中。这样就需要路由器只能存在通往目标IP地址段的路由条目,这样才可以处理跨网段的通信
- 也就是说,代理ARP允许路由器代替目标主机响应ARP请求,路由器会告知发送ARP请求的主机,自己知道如何达到目标IP地址,并提供自身的MAC地址作为“下一跳”地址。这样主机可以将数据包发送到路由器,由路由器将数据包根据路由发送到目标网络中。
2.3 RARP反向地址解析协议
- 用于将物理地址(MAC地址)转换为网络层地址(IP地址)的协议
它主要在以太网上实现,用于网络启动和其他情况下的动态IP地址分配。当一个设备需要知道相应的IP地址时,它会在网络上广播一个RARP请求包,拥有该IP地址的设备会向请求设备返回一个RARP响应包,从而告诉请求设备所需的IP地址。这种机制主要用于实现无盘系统的网络启动,例如某些工作站
二、DHCP协议原理及应用
DHCP动态主机配置协议,应用在大型的局域网环境找。集中管理和分配IP地址,使网络中的主机可以动态获取IP地址、网关、DNS等TCP/IP参数。
1. DHCP服务器配置
DHCP-Server
DHCP-Server(config)#service dhcp
DHCP-Server(config)#ip dhcp pool vlan10
DHCP-Server(dhcp-config)#network 192.168.10.0 255.255.255.0
DHCP-Server(dhcp-config)#default-router 192.168.10.254
DHCP-Server(dhcp-config)#dns-server 8.8.8.8
DHCP-Server(dhcp-config)#exit
2. DHCP协议工作过程
3. DHCP报文介绍
报文类型 | 用途 |
---|---|
DHCP discover | 客户端广播查找可用服务器 |
DHCP offer | 服务器响应DHCP discover报文,分配TCP/IP信息 |
DHCP request | 客户端请求配置参数、请求配置确认、续租 |
DHCP ack | 服务器确认DHCP request报文 |
DHCP decline | 客户端发现地址被占用时,通知服务器 |
DHCP release | 客户端释放IP地址告知服务器的报文 |
DHCP inform | 客户端已有IP地址,请求更详细配置参数 |
DHCP nak | 服务器告知客户端请求不正确或租约过期 |
3.1 DHCP Discover
DHCP Discover报文为PC通过广播的形式发出的请求报文,主要作用是用来发现DHCP服务器,但PC并不知道DHCP的IP地址,因此目的MAC和目的IP地址都为广播
通过抓取DHCP Discover报文分析
3.2 DHCP Offer
DHCP Office报文为DHCP服务器返回的第一个报文,当网络中存在多台服务器时,PC只保留最先收到的DHCP Offer。DHCP Offer中包含DHCP服务器可以为PC分配的TCP/IP信息(如IP地址、网关、DNS等)
通过抓取DHCP Offer报文分析
3.3 DHCP Request
PC发出的第二条请求报文,PC根据DHCP服务器发送的DHCP Offer报文中的信息,发起正式申请
通过抓取DHCP Request报文分析
3.4 DHCP ACK
DHCP服务器收到PC的请求报文后,从地址池中分配相应的IP地址返回给PC
通过抓取DHCP ACK报文分析
4. DHCP协议的租约
租约还剩下50%时间
- 客户端主动先服务器发送
DHCP request
报文,请求更新租约时间- 服务器可用:回复
DHCP ack
,更新租约 - 服务器不可用:回复
DHCP nak
,不更新租约
- 服务器可用:回复
租约还剩下87.5%时间
- 客户端主动先服务器发送
DHCP request
报文,请求更新租约时间- 服务器可用:回复
DHCP ack
,更新租约 - 服务器不可用:回复
DHCP nak
,不更新租约
- 服务器可用:回复
租约时间过期
- 客户端主动发送
DHCP discover
报文
5. 常见的DHCP服务部署方式
网关交换机作为DHCP服务器
- 优点:不需要单独设置一台DHCP服务器
- 缺点:地址池配置分布在多台网关交换机上,无法集中管理
网关交换机作为DHCP中继,单独架设一台DHCP服务器
- 优点:集中管理,节约资源
- 缺点:需要多架设一台服务器
- 需要保证DHCP中继设备与DHCP服务器之间路由可达
6. DHCP的安全设计
6.1 NP-IP Source Guard – 解决用户使用静态IP地址接入
当用户手动配置IP地址时,DHCP服务无法得知,在DHCP下发地址时,可能会导致IP地址冲突
相关介绍
- DHCP Snoopingto通过窥探DHCP ACK报文,提取其中的IP地址、MAC地址,形成本地的DHCP Snooping表项,为IP Source Guard模块提供动态的IP Source Guard数据包过滤信息来源;
- 不符合DHCP Snooping表项的数据包将会被过滤掉,避免了DHCP环境私设IP地址的问题
- 可以通过手动绑定 ip source guard 静态条目的方式来添加数据包过滤信息来源
- 手动绑定条目在 IP Source Guard 源数据信息表中以 static 方式存在
- 手动绑定其实相当于给提供允许私设白名单(即私设的IP地址可以通过静态绑定的方式放行)
端口下配置数据包过滤规则语法
# 前提需要全局开启 Ruijie(config)#ip dhcp snooping
Ruijie(config)#int gigabitEthernet 0/0 # 进入设定规则的端口
Ruijie(config-if-GigabitEthernet 0/0)#ip verify source ? # 可选选项
dai-source Provide entries for dai # 提供动态ARP检测,防止ARP欺骗攻击
exclude-vlan IP source guard exclude vlan # 指定例外VLAN,该VLAN不受限制
port-security Check both IP and MAC information # 基于IP+MAC进行检查
trust Set the interface to be an ipsg trust port # 该接口不接受检查
<cr> # 直接回车,检查规则为IP-Only,只对IP检
IP Source Guard源数据-静态添加
# 一共有三种方式静态添加,需要注意的是,在静态添加完后,需要在接口下也开启 ip verify source x (x为IP-Only或IP-Mac)
# 全局绑定的方式与端口过滤的规则保持一致,不一致则以全局配置为主
Ruijie(config)# ip source binding 0000.0000.0001 vlan 1 192.168.1.1 interface g0/0 # 接口+IP添加
Ruijie(config)# ip source binding 0000.0000.0001 vlan 1 192.168.1.1 ip-mac # IP+Mac添加
Ruijie(config)# ip source binding 0000.0000.0001 vlan 1 192.168.1.1 ip-only # 仅IP添加
6.2 相关案例
DHCP-Server
DHCP-Server(config)#service dhcp
DHCP-Server(config)#ip dhcp pool vlan10
DHCP-Server(dhcp-config)#network 192.168.10.0 255.255.255.0
DHCP-Server(dhcp-config)#default-router 192.168.10.254
DHCP-Server(dhcp-config)#dns-server 8.8.8.8
DHCP-Server(dhcp-config)#exit
DHCP-Server(config)#vlan 10
DHCP-Server(config-vlan)#exit
DHCP-Server(config)#interface vlan 10
DHCP-Server(config-if-VLAN 10)#ip address 192.168.10.254 24
DHCP-Server(config-if-VLAN 10)#exit
DHCP-Server(config)#interface g0/0
DHCP-Server(config-if-GigabitEthernet 0/0)#switchport mode trunk
DHCP-Server(config-if-GigabitEthernet 0/0)#switchport trunk allowed vlan allowed vlan only 10
DHCP-Server(config-if-GigabitEthernet 0/0)#exit
接入交换机SW
SW(config)#interface range g0/1-2
SW(config-if-range)#switchport mode access
SW(config-if-range)#switchport access vlan 10
SW(config-if-range)#exit
SW(config)#interface g0/0
SW(config-if-GigabitEthernet 0/0)#switchport mode trunk
SW(config-if-GigabitEthernet 0/0)#switchport trunk allowed vlan only 10
SW(config-if-GigabitEthernet 0/0)#exit
PC1自动获取IP地址
PC2手动配置IP地址
在接入交换机中配置IPSG
SW(config)#ip dhcp snooping
SW(config)#interface g0/0
SW(config-if-GigabitEthernet 0/0)#ip dhcp snooping trust
# 开启DHCP Snooping功能后需要将
SW(config-if-GigabitEthernet 0/0)#exit
SW(config)#int range g0/1-2
SW(config-if-range)#ip verify source port-security
SW(config-if-range)#exit
PC2测试连通性,可以看到无法ping通网关
PC1重新获取DHCP 查看IP Source Guard源数据信息
查看IPSG端口以及对应检测类型
查看DHCP Snooping表项
6.3 NP-DHCP Snooping – 解决用户私设DHCP服务器
- 在接入交换机开启DHCP Snooping功能
- 将指向合法DHCP服务器的接口设置为信任端口,其它接口默认为非信任接口
配置步骤
# 接入交换机配置
SW(config)#ip dhcp snooping # 开启DHCP Snooping功能
SW(config)#interface gigabitEthernet 0/0
SW(config-if-GigabitEthernet 0/0)#ip dhcp snooping trust # 指向合法DHCP服务器的接口设置为信任端口,否则无法下发DHCP地址
SW(config-if-GigabitEthernet 0/0)#exit