家庭网络折腾 篇一:EdgeRouter 实现 分客户端 DHCP Options
创作立场声明:想要实现的功能一直没在中文互联网找到相关的信息,在此分享一下实现的过程,也做一饿个记录免得未来的自己需要再次折腾的时候忘了:-)
之前一直在使用一台 Edgerouter-X-SFP + PON Stick 做主路由,但又因为无法放弃 ROS 的 DHCP 服务器可以很方便的给各个客户端分配 DHCP Options 以用来无感切换DNS和网关而使用了一台 Mikrotik RB760iGS 做 DHCP 服务器。
在过去的一个炎热的夏天里放在储藏间的路由多次出现了当机的情况,于是某鱼上淘了自带风扇的 EdgerouterPro换上,又正好能上机柜,也就想把以前两个设备的功能集成一下。
扒了一圈发现中文互联网上似乎没有相关的资料,那就只好靠自己啦。
不查不知道,EdgeOS 自带的 DHCP 服务器还挺复杂,默认是使用 ISC DHCPD,但可以通过设置切换为使用Dnsmasq 管理 DHCP 服务,那么就可以借用 Dnsmasq 的功能来实现分客户端 DHCP Options 了。
在此假设所有之前config-tree的service - dhcp-server 部分均已清空。
首先 SSH 登入Edgerouter 的 CLI,然后
configure
进入配置模式
set service dhcp-server use-dnsmasq enable
切换到使用 Dnsmasq 管理 DHCP 服务
set service dhcp-server shared-network-name Home subnet 192.168.88.0/24 start 192.168.88.150 stop 192.168.88.240
创建名为 Home,网段为 192.168.88.0/24 的 DHCP 服务,并将分配地址池设为 192.168.88.150-192.168.88.240
commit ; save
提交并保存
此时就可以看到已经有一个名为 Home 的 DHCP 服务跑起来了。
EdgeOS 本身使用 Dnsmasq 来处理 DNS 转发,接下来需要使用 Dnsmasq 管理并分客户端赋予 DHCP Options,在 config-tree 中就需要在 service - dns - forwarding 中设置 Dnsmasq 的 Options。以下仅展示用DHCP Options 定义 DNS 和 Gateway 的设置,如果需要定义其他 Options 可以参考https://github.com/imp/dnsmasq/blob/master/dnsmasq.conf.example,具体的 Options 名称可以切换到 root用户后运行
dnsmasq --help dhcp
来查看。
此处假定需要定义的 DNS 和 Gateway 地址都是 192.168.88.2
首先需要定义附加的 Options
set service dns forwarding options dhcp-option=tag:abroad,option:router,192.168.88.2
定义 Option3 的 Gateway,并打上名为 abroad 的网络的 tag
set service dns forwarding options dhcp-option=tag:abroad,option:dns-server,192.168.88.2
定义 Option6 的 DNS 服务器,并打上名为 abroad 的网络的 tag
然后获取需要附加 Options 的客户端的 mac 地址,再添加
set service dns forwarding options dhcp-host=00:04:4c:34:56:0a,set:Home,set:abroad,192.168.88.90,SHIELD
即在 Home 网络下为 mac 为 00:04:4c:34:56:0a 的设备分配 IP 为 192.168.88.90 的地址,Hostname 标记为SHIELD,并附加 abroad 网络的所有 Options。
依次添加其他需要赋予的 Options 和 mac
commit ; save
提交并保存后再使用目标客户端请求IP地址就可以看到效果了。
后续添加客户端基本也可以只在 UI 中添加一条 Options 的 String 就可以了,虽然没有 ROS 上直接用 UI 设置那么爽,但也基本做到很方便的水平了。
水叔
service / dhcp-server / shared-network-name / LAN / subnet / 192.168.88.0/24 / static-mapping
在每一个固定IP的设备的 static-mapping-parameters 部分添加
option routers 192.168.88.3;
option domain-name-servers 198.18.0.2;
预览保存后重新连接就可以生效了。
校验提示文案
值友7477550316
校验提示文案
名称
校验提示文案
HiCloudy
校验提示文案
值友3578938634
校验提示文案
PolarCodes
校验提示文案
PolarCodes
校验提示文案
水叔
service / dhcp-server / shared-network-name / LAN / subnet / 192.168.88.0/24 / static-mapping
在每一个固定IP的设备的 static-mapping-parameters 部分添加
option routers 192.168.88.3;
option domain-name-servers 198.18.0.2;
预览保存后重新连接就可以生效了。
校验提示文案
HiCloudy
校验提示文案
名称
校验提示文案
值友7477550316
校验提示文案
值友3578938634
校验提示文案