1 DHCP分配ip过程
首先,dhcp服务器里vlan子接口ip和dhcp池匹配过程是,接口接受dhcp请求(discover或者request消息),根据是否携带tag(不带打上端口默认pvid,携带看是否允许对应vlan tag通过),然后根据包的vilan id找对应子接口ip对应子网网段,然后根据子网网段去匹配dhcp池是否有对应网段,没有匹配到,不处理dhcp的消息,有就看dhcp池里是否有空闲地址,有分配地址,没有,不处理dhcp消息。
2 dhcp过程失败的可能原因
- vlan子接口ip网段在dhcp池里没有找到匹配网段。
- 对应vlan接口没有配置ip地址,无法完成去dhcp池匹配。
- 对应端口没有让对应vlan tag通过,携带vlan tag的包无法进入。
- dhcp池ip全部占满没有空闲,导致客户端dhcp消息没有被处理。
3 问题模拟环境
ac+交换机+ap+手机,ac的eth5接口是交换机的上联口,eth5对应的pvid是202,ssid携带的vlan是205,手机的mac地址是7c:76:68:e0:21:94。ac作为dhcp服务器,其上创建已被bridge,在bridge上创建vlan,vlan205表示为vlan1.205。
ap上开一个ssh,进行tcpdump抓包。开两个ac的ssh连接窗口,一个进行消息跟踪,一个切到linux操作系统下进行tcpdump抓包。手机连接对应ssid。跟踪现象。
ap上root@IIIoT:~# tcpdump -i br-wan -nnev udp port 67 and ether host 7c:76:68:e0:21:94 跟踪桥接口并过滤bootp消息和手机的mac地址
ac上第一个ssh
XOS#debug dhcp all 打开dhcp消息跟踪
ac上第二个ssh
~ # tcpdump -i vlan1.205 -nnev udp port 67 and ether host 7c76.68e0.2194 跟踪子接口vlan1.205下的bootp消息并过滤手机mac地址
tcpdump: listening on vlan1.205, link-type EN10MB (Ethernet), capture size 65535 bytes
tcpdump: listening on br-wan, link-type EN10MB (Ethernet), capture size 262144 bytes
4 问题1
vlan子接口网段在dhcp池里没有找到匹配网段。
ac的debug 界面有打印unknown network segment
2025/01/08 10:55:38 informational: DHCP: DHCPDISCOVER from 7c:76:68:e0:21:94 via vlan1.205: unknown network segment 不能识别的网段
2025/01/08 10:55:39 informational: DHCP: DHCPDISCOVER from 7c:76:68:e0:21:94 via vlan1.205: unknown network segment 不能识别的网段
2025/01/08 10:55:41 informational: DHCP: DHCPDISCOVER from 7c:76:68:e0:21:94 via vlan1.205: unknown network segment 不能识别的网段
ac抓包界面显示:
~ # tcpdump -i vlan1.205 -nnev udp port 67 and ether host 7c76.68e0.2194
tcpdump: listening on vlan1.205, link-type EN10MB (Ethernet), capture size 65535 bytes
10:55:38.666366 7c:76:68:e0:21:94 > ff:ff:ff:ff:ff:ff, eth