dnsmasq 支持动态上游 DNS 服务器吗?

2020-10-19 12:23:44 +08:00
 EricInBj
当然支持了,配置读取 /etc/resolve.conf 就可以

我想知道是否可以直接从上游 DHCP 获取 DNS 服务器地址?

情况是这样的:

1. MAC 上装了 DNSMASQ,加了些自定义的解析(比较多,用 HOSTS 不方便)
2. 在网络设置里设置了 DNS 服务器为 127.0.0.1, 这样的话 resolve 文件里也就变成了 127.0.0.1
3. 现在在网络设置里面增加了 1.2.4.8 这样的公共 dns

希望实现的效果是:不通过 resolve 文件来动态寻找上游服务器,而是根据 DHCP 来获取,请问是否可行?
2821 次点击
所在节点    宽带症候群
19 条回复
zro
2020-10-19 13:12:09 +08:00
貌似比较适合用 ADGuardHome 。。
amplatzer
2020-10-19 13:13:35 +08:00
#dnsmasq.conf
server=1.2.4.8

这样?
amplatzer
2020-10-19 13:14:33 +08:00
-R, --no-resolv
Don't read /etc/resolv.conf. Get upstream servers only from the command line or the dnsmasq configuration file.

或者这个选项?
EricInBj
2020-10-19 13:15:52 +08:00
@zro 这东西可以?他不也是指定上游吗?

我主要是在单位上游应该是 10.X.X.X, 到了家可能又是 172.X.X.X,然后连自己的热点又是 192.X.X.X
EricInBj
2020-10-19 13:17:34 +08:00
@amplatzer no-resolve 只是告诉他不去读取 resolve.conf 里的配置,通过命令行参数或者直接在配置文件里写上游。
我是想让他不读 resolve,而是从 dhcp server 获取上游 DNS 地址。
EricInBj
2020-10-19 13:19:20 +08:00
@amplatzer 配置文件或命令行指定上游地址都不行,因为我是笔记本上用,网络环境总变的,还是希望使用运营商的 DNS,所以想要动态。
amplatzer
2020-10-19 13:19:53 +08:00
你 DHCP 分配的 DNS 会一直变化 吗? 为什么不直接把 DHCP 到的 DNS 写死到 配置文件里?
amplatzer
2020-10-19 13:24:50 +08:00
整一个可以获取 dhcp 信息的脚本(dhclient ?), 当发现上游 DNS 服务器变化时, 重启 dnsmasq, 并设置成新 DNS 。
EricInBj
2020-10-19 13:42:38 +08:00
@amplatzer 换了环境就变了啊,比如从家到公司。

是的,不行就把 DHCP 拿到的往一个文件去更新了,倒不用自己重启 DNSMASQ,换成自己定义的 resolve 文件就行,文件变化了会自动 reload 的。
EricInBj
2020-10-19 14:19:43 +08:00
搞定了
在 WIFI 切换完成之后,获取 DHCP 给过来的 DNS,然后写到 /tmp/upstream.conf,dnsmasq.conf 里面设置 resolve-file 到这个文件。
kerro1990
2020-10-19 14:22:14 +08:00
上游也没啥用,运营商现在是 udp 端口劫持到省级 dns 服务器,DOH 作为上游试试
EricInBj
2020-10-19 14:25:51 +08:00
@kerro1990 不是为了 XX,纯粹 CDN 考量,所以还是得运营商的 DNS 。
至于别的,一般也不需要考虑 CDN,那不是还有 dnsmasq.conf 么。
geekvcn
2020-10-19 18:28:56 +08:00
选个国内 EDNS 支持比较好的 DNS 不就行了,比如阿里 DNS
bclerdx
2020-10-19 23:57:35 +08:00
@geekvcn 感觉是这样的,目前阿里的公共 DNS 是支持 EDNS 了。
EricInBj
2020-10-20 09:00:16 +08:00
@geekvcn 也得在 dnsmasq 的配置文件里使用 add-subnet 来指定一下吧?而这个是变化的,公司和家里的不一样。
geekvcn
2020-10-20 09:56:47 +08:00
@EricInBj 加参数是指定 ip,不加参数,默认参数就是请求 ip
geekvcn
2020-10-20 10:13:17 +08:00
@EricInBj 而且不建议用 dnsmasq 来搭建个人 dns 了,Smartdns,ADGuardHome 之类的用 DoT/DoH 还能防劫持。

阿里 DoH EDNS 测试链接
移动:
https://223.5.5.5/resolve?name=www.taobao.com.&type=1&edns_client_subnet=112.25.2.98/24
联通:
https://223.5.5.5/resolve?name=www.taobao.com.&type=1&edns_client_subnet=219.158.100.149/24
电信:
https://223.5.5.5/resolve?name=www.taobao.com.&type=1&edns_client_subnet=61.152.24.70/24
当前网络:
https://223.5.5.5/resolve?name=www.taobao.com.&type=1
EricInBj
2020-10-21 10:21:23 +08:00
@geekvcn 感谢,我抽空再研究一下。
EricInBj
2020-10-21 10:32:17 +08:00
@geekvcn 刚拿家里的 ADGuardHome 试了一下,用 Ali 的 EDNS 确实解析结果跟运营商的差不多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/716341

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX