安卓里的dnsmasq跟linux里的配置文件语法不一样

实在闲的没事干,想鼓捣一下几年前没有彻底搞明白的dnsmasq,几年前我认为vs985手机里的dnsmasq编译选项里缺少了东西,所以dhcp-match选项功能不正常,大概是这样,具体情况记不清了。
我现在用的v300l  刷的是crdroid,dnsmasq是2.51版本,终端模拟器里执行dnsmasq -x  /sdcard/a/pid  -C /sdcard/a/dns  -dR,开始没有-d选项,用命令bg 1%切换到后台,显示stop,到现在也没有搞明白为什么stop。
因为搞不明白的东西太多了,所以不能什么都搞明白,把这个dnsmasq搞明白就用了两天时间。前几天安卓otg模拟u盘正常,模拟usb-cdrom怎么都不行,百度,再不行谷歌,也鼓捣了很长时间放弃了,我感觉很多东西都是无解。很多看似简单的东西,其实都费尽了九牛二虎之力才搞懂。6527,6538学习机处理器,如何显示超过显存容量的字符,很多年前一直琢磨不透,也看了不少资料一直无解。去年闲的没事干终于琢磨明白了,很多年的难题,一朝破解,太痛快,但是……也没有什么实际价值。20年前高中一道物理题,说半波整流的用电器的功率是不经整流的功率的四分之一,我百思不得解,10几年前我闲的没事干问我一个同学,他说电流是原来的一半,电压也是原来的一半了。后来我一直都认为他说的是正解,去年闲的没事干,百度搜,有人说是不整流功率的二分之一。我又实际用功率表测了一下。终于明白20年前的教材是错的。

上边命令参数里的配置文件dns里边是:
no-hosts
dhcp-range=192.168.123.10,192.168.123.88,12h

#pxe-prompt="ddd"
#pxe-service=X86PC,"ff",hhh
#pxe-service=X86-64_EFI,"f4f",hhh
#pxe-service=X86PC,"f888f",hhh

dhcp-match=set:Hhhh,option:client-arch,0

dhcp-match=set:Kkk,0

#dhcp-vendorclass=set:bbb,PXEClient:Arch:00000

dhcp-match=set:kk,93,2

dhcp-boot=tag:kk,fddf
dhcp-boot=tag:Hhhh,ffff
dhcp-boot=tag:Kkk,fd5df
dhcp-boot=tag:bbb,fd6df
#pxe-service=X86PC,"f888f",hhh

用虚拟机vbox的pxe测试 总是不能match,总是执行最后的tag:bbb  。 显示tag:bbb  no such  file ,  从这个提示看出它把“tag:bbb”看成了一个文件名,是不是这个版本也不支持match,运行dnsmasq命令显示编译时参数no-scripts   是不是这个选项造成的 。 还有一个线索 , “pxe-service=X86PC,"ff",hhh” 这个菜单命令 可以匹配“x86pc”说明这个版本有匹配功能,或者有没有可能是把菜单发到客户端  然后客户端匹配后显示的。
然后我用刷openwrt的路由器测试dnsmasq命令  也不正常。
然后我用虚拟机里的tinycore linux测试 开始没有上边文件的最下边一行  我想各种办法  把“no-host”注释掉   向末尾添加行  后来一个”tag:!kk“   匹配成功  然后去掉最下边行  也没问题 去掉注释没问题,最后也没搞清开始为什么不正常。“dhcp-range”这一行在安卓上是必须的 , 如果缺少这行没有任何提示 , 不工作。
然后我又用openwrt测试也正常,再用安卓还是死活不行。闲的没事干,百度,谷歌,谷歌,百度。
我对把“tag:bbb”看成文件名  感觉思路越来越清晰   肯定是安卓的版本跟linux的语法不同
我都想自己重新编译  ,可是我知道难度有多大。我还下载了apk的pxe应用,打算从apk里提取dnsmasq,有的是用的系统里的dnsmasq ,有的是用udhcpd,有的是用java编写的。都没有match功能。
最后我谷歌搜索”android  dhcp-match“  找到了源代码  https://android.googlesource.com/platform/external/dnsmasq/+/refs/tags/android-11.0.0_r43源代码里有说明文档   配置文件的语法跟Linux是不同的。安卓版本没有tag这个符号,用net代替.  也不用set。
这就是我经历的坎坷波折!

几天之后,我又在dnsmasq的官方使用手册发现底部写着:“这个系统是从更早的、更有限的系统演变而来的,为了向后兼容,可以使用“net:”代替“tag:”,并且可以省略“set:”。(除了在 --dhcp-host 中, 可以使用“net:”代替“set:”。)出于同样的原因,可以使用“#”代替“!” 表示不是。”


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值