V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lizenghui
V2EX  ›  问与答

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

  •  
  •   lizenghui · 2021-02-23 13:05:54 +08:00 · 1800 次点击
    这是一个创建于 1403 天前的主题,其中的信息可能已经有所发展或是发生改变。

    电脑是 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

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

    其实归根到底你就是需要给某个网络接口设置一个自定义的 dns,只不过你觉得需要去手动输入一个写死的 dns 地址这不方便也不优雅,你希望这个过程能通过某种配置或者脚本达到自动化。自动化当然是可行的,只不过没必要刻意追求,想研究尝试当然是不错的选择,但放弃折腾直接在接口配置里写死一条地址也没啥不好,反正配置一次就够了,能用就行。机器软件是工具,是给咱用的,没必要反过来把它们供起来啥都顺着它们。
    lizenghui
        12
    lizenghui  
    OP
       2021-02-24 10:59:21 +08:00
    @ungrown 感谢感谢。真的如您所说,系统其实也是在不断摸索进步,完善的过程,我们作为使用者真的不能追求优雅,用着舒服就行了。
    目前已经有两种方案都可行,经过大家帮忙想辙的过程也了解到不少知识,感觉 V2EX 氛围挺好。
    ungrown
        13
    ungrown  
       2021-02-24 11:14:55 +08:00
    @lizenghui #12 客气了,如果您看过我在站内喷人的样子也许就会觉得氛围未必就有那么好了(笑
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5425 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 08:01 · PVG 16:01 · LAX 00:01 · JFK 03:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.