【Openwrt从入门到放弃】七、网络服务的根本--Openwrt里面的dnsmasq。

By | 2025-01-06

Openwrt的第二篇文里面就提过了dhcp option这个功能,当时没有展开讲。实际上,不管是运营商赠送的光猫,还是你自己购买的家用路由器,又或者是企业的路由器,80%的设备都使用了dnsmasq这个软件进行dns和dhcp服务。玩转dnsmasq这个软件,能解决很多问题。

先把第二篇没有展开说的dhcp option举个大家最常用的例子。

处于访问国际互联网的考虑,很多小伙伴都会使用“旁路由”来做一些事情,然而90%的教程都让你设定完之后手动在手机或者电脑上修改网关和dns地址,指向“旁路由”来实现访问国际互联网的功能。

这太麻烦了,使用dhcp option的功能,就能让设备自动完成。根本不需要在手机上设定,并且集中化的管理也非常容易。

ssh登陆你的主路由。在/etc/config/dhcp文件中手工编辑如下内容。

config tag 'fkgfw'
        list dhcp_option '3,192.168.10.3'
        list dhcp_option '6,192.168.10.3'
        option force '1'

192.168.10.3就是“旁路由”的地址。

然后在这个文件的后面增加

config host
        option mac 'XX:XX:XX:XX:XX:XX'
        option name 'Windows'
        option tag 'fkgfw'

mac地址可以通过 cat /tmp/dhcp.leases 来查看到当前连接到路由器上的设备。
注意,很多移动设备会使用随机mac地址连接到网络中,注意在手机上关闭这个选项,否则你每次回家连接到wifi的mac地址会改变。

都设定好以后,重启dnsmasq /etc/init.d/dnsmasq restart

把你的移动设备断开重连,你会看到网关和dns都指向了“旁路由”。注意这个操作不许需要dnsmasq-full软件包即可完成。当然如果你安装了dnsmasq-full软件包会更好。

这个操作适用于你家庭路由使用了openwrt系统,如果你使用了宽带运营商赠送的光猫。并且你拿到了光猫的高级管理员权限,能够登陆光猫的shell。那么按照下面操作。

shell登陆你的光猫。输入ps能看到有dnsmasq的进程。

 #ps

 1475 root     762:31 [usl_scan]
 1615 csp       17:20 dnsmasq -r /var/default_resolv.conf -M 0 -T 6 -P 0 -U 0 --zxic_plugin
 1905 java     942:03 java -noverify -Dfile.encoding=UTF-8 -Xcompactalways -Dsun.zip.disableMemoryMappin
 2603 root     447:53 cpulimit -l 80 -e java -b

另外一台

 1327 cmccuser 25092 S    /fhrom/bin/udhcpd
 1422 cmccuser  5576 S    /fhrom/bin/dnsmasq
 1532 root      3548 S    sleep 600

可以看到里面都有dnsmasq的身影。找到启动dnsmasq的启动脚本。
嵌入式多数实在/etc/init.d/,找到dnsmasq的配置文件的地方添加如下代码。

dhcp-host=XX:XX:XX:XX:XX:XX,set:fkgfw,Windows10
dhcp-option-force=tag:fkgfw,3,192.168.10.3
dhcp-option-force=tag:fkgfw,6,192.168.10.3

注意可能需要处理一下系统的存储挂载问题,有可能在只读模式,输入mount看一下。如果配置文件所在的分区是有(rw,relatime),那就放心写入。
这类操作需要你对嵌入式系统有一定的了解后再来操作。否则可能会把你的光猫高挂。我这里只是针对openwrt的uci配置写法和dnsmasq的标准配置写法进行一些介绍,具体情况请以你自己的设备为准。