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