RouterOS DHCP-Server配置Vendor Classes

从v6.45beta6开始,RouterOS的DHCP Server支持对vendor class id进行配匹,可通过DHCP客户端的厂商ID选择指定的地址池。下面的实例,基于三星Android手机提供一个指定IP地址池。

首先,路由器已经有192.168.88.1/24的IP配置到bridge接口,需区分不同厂商设备class id,创建一个新的IP地址段,在/ip addres下为bridge接口添加一个IP地址172.16.16.1/24

/ip addressadd address=172.16.16.1/24 interface=bridge

创建普通客户端pool的地址池

/ip pooladd name=default-dhcp ranges=192.168.88.10-192.168.88.254

新建一个pool-for-VID地址池,分配IP地址172.16.16.10-172.16.16.120

/ip pool
add name=pool-for-VID ranges=172.16.16.10-172.16.16.120

配置普通客户端的DHCP规则

/ip dhcp-serveradd address-pool=default-dhcp disabled=no interface=bridge name=defconf/ip dhcp-server networkadd address=192.168.88.0/24 comment=defconf gateway=192.168.88.1 dns-server=192.168.88.1

根据三星手机vendor-class-id ,创建一个新的规则配匹vid=android-dhcp-9,并调用pool-for-VID地址池

/ip dhcp-server vendor-class-idadd address-pool=pool-for-VID name=samsung server=defconf vid=android-dhcp-9

为三星手机创建新的network策略

/ip dhcp-server networkadd address=172.16.16.0/24 comment=defconf gateway=172.16.16.1 dns-server=172.16.16.1

当三星手机连接到DHCP后,会从172.16.16.0网段中分配IP

[admin@mikrotik] > /ip dhcp-server lease print detailFlags: X - disabled, R - radius, D - dynamic, B - blocked0 D address=172.16.16.120 mac-address=30:07:4D:F5:07:49 client-id="1:30:7:4d:f5:7:49" address-lists="" server=defconf dhcp-option=""status=bound expires-after=8m55s last-seen=1m5s active-address=172.16.16.120 active-mac-address=30:07:4D:F5:07:49active-client-id="1:30:7:4d:f5:7:49" active-server=defconf host-name="Galaxy-S8"

如果你不知道各个厂商设备的Vendor Class ID,可以开启DHCP debug,在日志中查看,创建DHCP debug日志配置如下命令:

[admin@mikrotik]/system logging add topics=dhcp

这是当客户端获取DHCP服务器IP地址时,会在/logs显示信息,通过查看 Class-ID 得到Vendor Class ID

10:30:31 dhcp,debug,packet defconf received request with id 4238230732 from 0.0.0.010:30:31 dhcp,debug,packet     secs = 310:30:31 dhcp,debug,packet     ciaddr = 0.0.0.010:30:31 dhcp,debug,packet     chaddr = 30:07:4D:F5:07:4910:30:31 dhcp,debug,packet     Msg-Type = request10:30:31 dhcp,debug,packet     Client-Id = 01-30-07-4D-F5-07-4910:30:31 dhcp,debug,packet     Address-Request = 172.16.16.12010:30:31 dhcp,debug,packet     Server-Id = 192.168.88.110:30:31 dhcp,debug,packet     Max-DHCP-Message-Size = 150010:30:31 dhcp,debug,packet     Class-Id = "android-dhcp-9"10:30:31 dhcp,debug,packet     Host-Name = "Galaxy-S8"

以上是官方三星Galaxy-S8手机的class-Id为android-dhcp-9

下面是我从log中获取华为mate30的class-id

10:43:14 dhcp,debug,packet tsecs = 410:43:14 dhcp,debug,packet tciaddr = 0.0.0.010:43:14 dhcp,debug,packet tMsg-Type = request10:43:14 dhcp,debug,packet tAddress-Request = 192.168.80.1910:43:14 dhcp,debug,packet tServer-Id = 192.168.80.110:43:14 dhcp,debug,packet tMax-DHCP-Message-Size = 150010:43:14 dhcp,debug,packet tClass-Id = "HUAWEI:android:TAS"10:43:14 dhcp,debug,packet tHost-Name = "HUAWEI_Mate_30_5G-7203a0c"