在 Linux 中,“删除 DNS”通常有两种含义:
1、清除 DNS 缓存(刷新临时解析结果)
2、删除系统配置的 DNS 服务器地址(比如移除/etc/resolv.conf 里的 nameserver 或 NetworkManager 的配置)
下面根据常见场景逐一说明操作方法。
1. 使用 systemd-resolved(最常见)
刷新所有缓存 sudo systemd-resolve --flush-caches 如果上面命令报错,尝试: sudo resolvectl flush-caches 查看缓存统计(确认清空) sudo systemd-resolve --statistics
2. 使用 dnsmasq(本地 DNS 转发服务)
重启服务清空缓存 sudo systemctl restart dnsmasq
3. 使用 nscd(Name Service Cache Daemon)
清空 nscd 的 DNS 缓存 sudo nscd -i hosts 或者重启服务 sudo systemctl restart nscd
某些发行版(如老版 Ubuntu)没有缓存服务,直接重启网络或注销用户即可。
方法 1:直接修改/etc/resolv.conf(临时生效,重启后可能被覆盖)
编辑文件,删除 nameserver 行 sudo nano /etc/resolv.conf 删除类似下面的一行或多行: nameserver 8.8.8.8 nameserver 1.1.1.1 保存退出后立即生效,如果想彻底清空(不推荐,会导致无法解析域名),可以只保留一个不存在的 IP。
方法 2:使用 NetworkManager 删除(持久生效)
查看当前所有连接 nmcli connection show 修改指定连接的 DNS 设置(例如连接名为 "Wired connection 1") 清空 IPv4 DNS sudo nmcli connection modify "Wired connection 1" ipv4.dns "" 清空 IPv6 DNS sudo nmcli connection modify "Wired connection 1" ipv6.dns "" 重启网络使生效 sudo nmcli connection up "Wired connection 1"
方法 3:使用 systemd-networkd(如果系统用它管理网络)
编辑网络配置文件,/etc/systemd/network/20-wired.network sudo nano /etc/systemd/network/20-wired.network 删除或注释掉 DNS= 行 [Network] DNS=8.8.8.8 重启网络服务 sudo systemctl restart systemd-networkd
方法 4:使用 netplan(Ubuntu 18.04+)
编辑配置文件,/etc/netplan/01-netcfg.yaml
sudo nano /etc/netplan/01-netcfg.yaml
在对应网卡中删除 nameservers: 部分,或设为空数组
network:
ethernets:
eth0:
dhcp4: true
nameservers:
addresses: [] # 清空
应用配置
sudo netplan apply三、删除/etc/hosts 中的 DNS 映射(即删除特定域名解析)
如果某些域名指向错误 IP,可以手动编辑/etc/hosts 删除对应行:
sudo nano /etc/hosts 删除类似下面的一行: 127.0.0.1 example.com 保存退出后立即生效(无缓存延迟)
四、完全删除 DNS 解析功能(危险操作,可能导致无法访问外网)
一般情况下不需要也不建议这么做,如果真的需要,可以:
- 移除所有 DNS 服务器配置(见第二部分)
- 停止并禁用 systemd-resolved 或 dnsmasq 等服务
sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved 然后清空 /etc/resolv.conf echo "" | sudo tee /etc/resolv.conf
| 你想做什么 | 推荐命令/操作 |
| 刷新 DNS 缓存 | sudo resolvectl flush-caches |
| 删除配置的 DNS 服务器(临时) | 编辑/etc/resolv.conf 删除 nameserver 行 |
| 删除配置的 DNS 服务器(持久) | 使用nmcli 或netplan 修改网络连接配置 |
| 删除 /etc/hosts 中的映射 | 编辑/etc/hosts 删除对应行 |
如果你能提供具体的 Linux 发行版和使用的网络管理工具(如 NetworkManager、systemd-networkd、netplan),可以得到更精准的命令。
文章摘自:https://idc.huochengrm.cn/dns/25253.html
评论