有没有了解 systemd-reslove 的同学,帮看看。

2021-02-23 13:05:54 +08:00
 lizenghui

电脑是 ubuntu 接了有线,有线的 DNS(192.168.1.1)是自建的 adguardhome 。无线 wifi 也会自动连上(无线和有线不是一套网络环境),默认路由走的有线,查看 systemd-reslove 的配置,自动获得了两个 DNS

cat /run/systemd/resolve/resolv.conf 

nameserver 192.168.1.1 (有线)
nameserver 10.2.1.1 (无线)

但是默认总是走无线的 DNS 比如我测试:

$ dig hm.baidu.com

; <<>> DiG 9.16.6-Ubuntu <<>> hm.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48252
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;hm.baidu.com.                  IN      A

;; ANSWER SECTION:
hm.baidu.com.           2371    IN      CNAME   hm.e.shifen.com.
hm.e.shifen.com.        0       IN      A       220.181.33.11

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: 二 2 月 23 12:56:59 CST 2021
;; MSG SIZE  rcvd: 83
$ dig hm.baidu.com @192.168.1.1

; <<>> DiG 9.16.6-Ubuntu <<>> hm.baidu.com @192.168.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36927
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;hm.baidu.com.                  IN      A

;; ANSWER SECTION:
hm.baidu.com.           10      IN      A       0.0.0.0

;; Query time: 0 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: 二 2 月 23 12:57:54 CST 2021
;; MSG SIZE  rcvd: 46

正常浏览器上网,也无法过滤 AD 现在总要手动把无线关了 但是还经常要用无线 打开 /关闭 太麻烦了 请教下大家能否改一下 systemd-reslove 的配置,默认走哪个网卡的路由就用哪个网卡获得的 DNS

1581 次点击
所在节点    问与答
13 条回复
ungrown
2021-02-23 14:37:12 +08:00
手动指定 DNS 不就行了,Linux 也好 Windows 也罢,各个网络连接(网络适配器)不都是可以手动自定义 DNS 地址的吗
fiveelementgid
2021-02-23 14:39:56 +08:00
这个是 fedora 33 引进的新功能, release note 我花了一晚上看完了,用垃圾英语写了个简单的改法,你可以参考康康
https://github.com/wuyuansushen/systemd-resolved
fiveelementgid
2021-02-23 14:45:40 +08:00
详细看了一下你的描述,这个问题无解
而且 Ubuntu 的 service 还没有 Fedora 的功能强大
因为现行的 system-resolved 方案好像只能应用于全局,开无线的话相当于提供多了一个网络接口,依旧是优先走无线网络自己获取的 dns 。
有给一个回退方案:直接回滚不使用 system-resolved 服务,然后屏蔽 dhcp 分配的 dns,不过无法享受 concurrency 查询 dns 所带来的网速提升
lizenghui
2021-02-23 14:50:51 +08:00
@ungrown 手动指定我知道,这不是麻烦么
lizenghui
2021-02-23 14:51:18 +08:00
@fiveelementgid 谢了 我按这个研究下。
fiveelementgid
2021-02-23 14:59:49 +08:00
参考这个
https://fedoraproject.org/wiki/Changes/systemd-resolved#Detailed_Description
有一个回退方案,你看看 Ubuntu 能不能用,split DNS 确实可以提高访问速度,但是无法满足你这个需求,你可以回滚到以前的解决方案
lizenghui
2021-02-23 15:43:24 +08:00
@fiveelementgid 搞不清 systemd-resolve 跟 networkmanager 怎么配合的。。。
实在不行就只能停了 systemd-resolve 用写触发脚本去改 DNS 。。。
fiveelementgid
2021-02-23 16:31:44 +08:00
@lizenghui 关于配合,你用
man systemd-resolved.service 可以看看
我给你简单描述一下
就是 NetworkManager 没有动,只是在 /etc/resolv.conf 里面配置了,让 NetworkManager 的 dns 指向 127.0.0.53 ,然后交给 DNS server 处理
lizenghui
2021-02-23 19:11:43 +08:00
@fiveelementgid 嗯 读了一下。 /etc/resolv.conf 是从 /run/systemd/resolve/resolv.conf 软链过去的
那难道是 systemd-resolve 会拉取 networkmanager 每个网卡自动获取到的 dns 信息 统一做为上游 DNS ?
fiveelementgid
2021-02-23 19:17:22 +08:00
@lizenghui 看我的新帖子,给你完整的解决方案了
ungrown
2021-02-24 09:36:52 +08:00
@lizenghui #9 差不多就是这个意思
systemd-resolve 相当于一个(自以为)“智能”的 DNS 管理中心。其实 systemd 一路发展下来一直有这种趋势,系统里面不管什么东西,都喜欢去插一手显得自己是大内总管一样,并不只是网络或者 DNS 这一块儿。倒也确实带来了一些方便,将零零碎碎的配置信息综合到了一起,并提供了一个跨版本统一的配置接口,但这也相当于逼迫用户们不得不学习了解它,一旦遇到特殊情况想自定义个配置往往会被绕晕。

其实归根到底你就是需要给某个网络接口设置一个自定义的 dns,只不过你觉得需要去手动输入一个写死的 dns 地址这不方便也不优雅,你希望这个过程能通过某种配置或者脚本达到自动化。自动化当然是可行的,只不过没必要刻意追求,想研究尝试当然是不错的选择,但放弃折腾直接在接口配置里写死一条地址也没啥不好,反正配置一次就够了,能用就行。机器软件是工具,是给咱用的,没必要反过来把它们供起来啥都顺着它们。
lizenghui
2021-02-24 10:59:21 +08:00
@ungrown 感谢感谢。真的如您所说,系统其实也是在不断摸索进步,完善的过程,我们作为使用者真的不能追求优雅,用着舒服就行了。
目前已经有两种方案都可行,经过大家帮忙想辙的过程也了解到不少知识,感觉 V2EX 氛围挺好。
ungrown
2021-02-24 11:14:55 +08:00
@lizenghui #12 客气了,如果您看过我在站内喷人的样子也许就会觉得氛围未必就有那么好了(笑

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

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

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

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

© 2021 V2EX