目前我干了这些:
首先,在以下文件插入了 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 服务器?
|  |      1cubecube      2022-08-02 10:07:23 +08:00 别用 dhcp 配置 static dhcp 会改 dns | 
|      2hefish      2022-08-02 10:13:25 +08:00  1 dhcp 协议本身就可以推送 dns 等网络配置信息吧。要不你试试 chattr +i /etc/resolv.conf | 
|      3zbinlin      2022-08-02 10:25:54 +08:00  1 在 `/etc/systemd/network/` 下找到 `enp.network` (可能是其他文件名),在里面添加 ``` [DHCP] UseDNS = no ``` 如果有 IPv6 的 DNS ,再添加: ``` [IPV6ACCEPTRA] UseDNS = no ``` | 
|  |      4dzdh      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 | 
|  |      5ksc010      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; #附加 | 
|      6anytk      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 | 
|      8happyabs      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 | 
|      9happyabs      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 等修饰符,具体可参考官方文档. | 
|      10happyabs      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 | 
|      11happyabs      2022-09-14 11:18:41 +08:00 | 
|      12happyabs      2022-09-14 11:24:43 +08:00 |