V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
oatw
V2EX  ›  Linux

哪位好心的 Linux 大佬帮帮忙, Debian 11 下如何彻底删除运营商 DNS 服务器?

  •  
  •   oatw · 2022-08-02 09:57:52 +08:00 · 3133 次点击
    这是一个创建于 605 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前我干了这些:

    首先,在以下文件插入了 google DNS servers 。

    cat /etc/resolvconf/resolv.conf.d/head
    

    输出 ->

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    # 127.0.0.53 is the systemd-resolved stub resolver.
    # run "resolvectl status" to see details about the actual nameservers.
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    nameserver 2001:4860:4860::8888
    nameserver 2001:4860:4860::8844
    

    然后,重启相关服务

    sudo systemctl restart resolvconf.service
    sudo systemctl restart systemd-resolved.service
    

    最后,查看当前生效 DNS servers

    cat /etc/resolv.conf
    

    输出 ->

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    # 127.0.0.53 is the systemd-resolved stub resolver.
    # run "resolvectl status" to see details about the actual nameservers.
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    nameserver 2001:4860:4860::8888
    nameserver 2001:4860:4860::8844
    
    nameserver 211.141.0.99  ### 如何把运营商的 DNS 服务器彻底干掉? ###
    nameserver 211.141.16.99 ### 如何把运营商的 DNS 服务器彻底干掉? ###
    
    nameserver 127.0.0.53
    

    另外,执行以下命令发现运营商的两个 DNS 服务器也还在:

    resolvectl status
    

    输出 ->

    Global
             Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
      resolv.conf mode: foreign
    Current DNS Server: 8.8.8.8
           DNS Servers: 8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844 211.141.0.99 211.141.16.99 ### 如何把运营商的 DNS 服务器彻底干掉? ###
    
    Link 2 (enp0s31f6)
    Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
       DNS Servers: 211.141.0.99 211.141.16.99 ### 如何把运营商的 DNS 服务器彻底干掉? ###
    
    

    求问:如何彻底干掉运营商的 DNS 服务器?

    12 条回复    2022-09-14 11:24:43 +08:00
    cubecube
        1
    cubecube  
       2022-08-02 10:07:23 +08:00
    别用 dhcp 配置 static
    dhcp 会改 dns
    hefish
        2
    hefish  
       2022-08-02 10:13:25 +08:00   ❤️ 1
    dhcp 协议本身就可以推送 dns 等网络配置信息吧。要不你试试 chattr +i /etc/resolv.conf
    zbinlin
        3
    zbinlin  
       2022-08-02 10:25:54 +08:00   ❤️ 1
    在 `/etc/systemd/network/` 下找到 `enp.network` (可能是其他文件名),在里面添加

    ```
    [DHCP]
    UseDNS = no
    ```

    如果有 IPv6 的 DNS ,再添加:

    ```
    [IPV6ACCEPTRA]
    UseDNS = no
    ```
    dzdh
        4
    dzdh  
       2022-08-02 10:27:01 +08:00
    ```
    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    # 127.0.0.53 is the systemd-resolved stub resolver.
    # run "resolvectl status" to see details about the actual nameservers.
    ```

    > # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    ksc010
        5
    ksc010  
       2022-08-02 10:27:58 +08:00   ❤️ 1
    下面这 3 个都会 修改 dns 配置文件, 若要固定 dns 需要判断当前是哪个程序在管理
    1. resolvconf
    2. NetworkManager
    3. DHCP clients ( dhclient dhcpd )



    ##dhcpd

    https://man.archlinux.org/man/dhcpcd.conf.5

    sudo vi /etc/dhcpcd.conf

    #option domain_name_servers, domain_name, domain_search, host_name
    option domain_name, domain_search, host_name
    static domain_name_servers=223.5.5.5 223.6.6.6


    ##dhclient
    sudo vi /etc/dhcp/dhclient.conf

    supersede domain-name-servers 223.5.5.5,223.6.6.6; #覆盖
    prepend domain-name-servers 223.5.5.5,223.6.6.6; #附加
    anytk
        6
    anytk  
       2022-08-02 10:31:35 +08:00
    启用 systemd-resolved 服务
    然后 链接 /etc/resolv.conf 指向 /run/systemd/resolve/stub-resolv.conf
    然后 新建 /etc/systemd/resolved.conf.d/dns.conf ,加入自己的 dns ,注意使用 `Domains=~.` 行
    ```ini
    [Resolve]
    DNS=xxxxxxx
    Domains=~.
    ```
    重启 systemd-resolved 服务就可以了,具体可以去看 arch 的 wiki
    oatw
        7
    oatw  
    OP
       2022-08-02 15:36:09 +08:00
    @ksc010 谢谢你,果然是高手呀~
    happyabs
        8
    happyabs  
       2022-09-14 10:52:24 +08:00
    debian 默认的网络管理为 ifupdown, 一般通过修改 /etc/network/interfaces 文件来启用 dhcp,具体配置操作可参考官方文档:
    sudo nano /etc/network/interfaces
    auto ens123
    iface ens123 inet dhcp
    happyabs
        9
    happyabs  
       2022-09-14 11:06:30 +08:00
    手贱想按^+Enter 换行,结果发送回复了
    如果启用了 DHCP:
    debian 默认的网络管理为 ifupdown, 一般通过修改 /etc/network/interfaces 文件来启用 DHCP, 具体配置操作可参考官方文档, 这里给出样例, 我的配置如下:
    sudo nano /etc/network/interfaces
    auto ens123
    iface ens123 inet dhcp

    之后就交由 dhcp 来配置 dns(dns 全称: domain-name-servers),
    ifupdown 的 DHCP 方式:dhclient, pump, udhcpc, dhcpcd(按启用的先后顺序), 一般默认使用内置的 dhclient,
    因此要修改 dhclient 的配置文件(/etc/dhcp/dhclient.conf), 才真正修改 DNS:
    sudo nano /etc/dhcp/dhclient.conf
    #添加下面这行就是覆盖全局所有使用 DHCP 的网卡的 DNS.
    supersede domain-name-servers 202.96.128.86, 119.29.29.29, 202.96.134.133;

    #添加下面这块代码就是只覆盖特定网卡的 DNS, 并且不获取 domain-name-servers 和 ipv6 的配置.
    interface "ens192" {
    request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-search, host-name,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes;
    supersede domain-name-servers 202.96.128.86, 119.29.29.29, 202.96.134.133;
    }

    #其中 supersede 这个修饰符的意思是只按用户指定的值, 忽略 DHCP 获取的; 此外还有 default prepend 等修饰符,具体可参考官方文档.
    happyabs
        10
    happyabs  
       2022-09-14 11:17:17 +08:00
    如果没启用 DHCP:
    那就直接在 /etc/network/interfaces 修改 dns 好了,如果不是用 debian 默认的 ifupdown, 用的是 networkd,那就改这个的配置文件

    networkd 在 Debian11 中是已安装但未启用的,也不是 Debian 默认的网络管理,使用 networkctl 命令可检查其运行状态,networkd 修改 dns 更方便点貌似, 也支持 dhcp 只获取 ip 不获取 dns 的场景, 如果用 netplan 作为前端管理就更加方便了

    以下是参考链接:
    https://manpages.debian.org/buster/isc-dhcp-client/dhclient.8.en.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5452 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:43 · PVG 15:43 · LAX 00:43 · JFK 03:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.