5154

Good Luck To You!

Linux系统如何彻底禁用DNS解析并使其永久生效?

在Linux操作系统中,“取消DNS”这个说法通常不是一个单一、明确的操作,而是根据用户的具体需求,指向几种不同的配置和管理行为,它可能意味着临时禁用域名解析、修改DNS服务器地址、清除DNS缓存,或是通过特定方式绕过DNS查询,理解这些不同的场景对于正确管理和排查网络问题至关重要。

Linux系统如何彻底禁用DNS解析并使其永久生效?

为何需要管理或“取消”DNS

在日常使用和系统管理中,我们调整DNS设置的动机多种多样,在进行网络故障排查时,可能需要暂时禁用DNS以判断问题是出在域名解析环节还是网络连接本身,为了提升网络访问速度或安全性,用户可能会选择将默认的ISP(互联网服务提供商)DNS服务器更换为公共DNS,如Google DNS(8.8.8.8)或Cloudflare DNS(1.1.1.1),在开发和测试环境中,开发人员常常需要将一个域名指向本地服务器(如127.0.0.1),这时就需要强制绕过正常的DNS查询,出于隐私保护的考虑,一些用户也希望使用不会记录其查询历史的DNS服务。

核心配置文件:/etc/resolv.conf

在Linux系统中,绝大多数DNS解析行为都受到/etc/resolv.conf文件的直接控制,这个文件是解析器库使用的核心配置文件,它告诉系统应该向哪些DNS服务器发送查询请求,一个典型的/etc/resolv.conf如下:

# This file is managed by man:systemd-resolved(8). Do not edit.
nameserver 192.168.1.1
search mydomain.local
options edns0
  • nameserver:这是最重要的指令,其后跟的是DNS服务器的IP地址,系统会按照从上到下的顺序依次尝试查询,直到获得响应或列表结束。
  • search:定义了一个域名搜索列表,当用户尝试访问一个不含点(如server)的主机名时,解析器会自动将search列表中的域名依次附加到主机名后进行查询,例如尝试server.mydomain.local
  • options:用于设置解析器的各种选项,如edns0(启用扩展DNS机制)、rotate(轮询nameserver列表以实现负载均衡)等。

直接修改此文件是改变DNS设置最直接的方法,但在现代Linux发行版中,此文件通常由网络管理服务(如systemd-resolvedNetworkManager)自动管理,手动编辑后,更改很可能在系统重启或网络服务重启后被覆盖。

通过/etc/hosts文件“取消”DNS查询

如果目标是让某个特定的域名解析到指定的IP地址,而不是通过DNS服务器查询,最有效的方法就是使用/etc/hosts文件,此文件的优先级高于DNS查询,系统在解析域名时,会首先检查/etc/hosts,如果找到对应条目,就会直接使用该条目中的IP地址,不再向DNS服务器发起请求。

文件格式非常简单:IP_address hostname aliases

要强制将www.example.com指向本地回环地址,可以在/etc/hosts文件中添加以下一行:

0.0.1   www.example.com

添加后,立即生效,这对于开发人员屏蔽广告域名、或是在没有DNS的局域网中通过主机名访问服务器非常有用,要“取消”这种设置,只需删除或注释掉(在行首添加)相应的行即可。

永久更改DNS服务器地址

为了永久性地更改系统的DNS服务器,我们需要通过系统提供的网络管理工具进行配置,而不是直接编辑/etc/resolv.conf

Linux系统如何彻底禁用DNS解析并使其永久生效?

使用systemd-resolved

在许多现代发行版(如Ubuntu 18.04+、Debian 10+)中,systemd-resolved是默认的DNS解析服务,其配置文件为/etc/systemd/resolved.conf

  1. 使用管理员权限编辑该文件:
    sudo nano /etc/systemd/resolved.conf
  2. [Resolve]部分,取消注释(或添加)DNS=FallbackDNS=行,并填入你想要的DNS服务器地址。
    [Resolve]
    DNS=8.8.8.8 1.1.1.1
    FallbackDNS=192.168.1.1
    #Domains=
    #LLMNR=no
    #MulticastDNS=yes
    #DNSSEC=no
    #DNSOverTLS=no
    #Cache=yes
  3. 保存文件后,重启systemd-resolved服务使配置生效:
    sudo systemctl restart systemd-resolved
  4. 确保/etc/resolv.conf正确地指向了systemd-resolved生成的存根文件:
    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

使用NetworkManager(通过nmcli

对于使用NetworkManager作为网络管理服务的桌面或服务器环境,可以使用其命令行工具nmcli进行操作。

  1. 查看你的网络连接名称:

    nmcli connection show

    假设连接名称为Wired connection 1

  2. 为该连接设置IPv4 DNS服务器:

    nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8 8.8.4.4"
  3. 应用更改,需要先禁用再启用连接:

    nmcli con down "Wired connection 1"
    nmcli con up "Wired connection 1"

    更改后,NetworkManager会自动更新/etc/resolv.conf文件,并且这个设置是持久的。

清除DNS缓存

有时,网络问题并非由DNS服务器本身引起,而是由于本地的DNS缓存中存在过时或错误的记录,清除缓存是解决此类问题的常用步骤,不同的缓存服务有不同的清除命令。

Linux系统如何彻底禁用DNS解析并使其永久生效?

缓存服务 清除命令 常见于
systemd-resolved sudo resolvectl flush-caches Ubuntu, Debian
nscd (Name Service Cache Daemon) sudo systemctl restart nscdsudo nscd -i hosts CentOS, RHEL (可选安装)
dnsmasq sudo systemctl restart dnsmasq 常用于轻量级路由器和本地网络

执行相应命令后,本地的DNS缓存将被清空,下一次查询会直接向DNS服务器发起请求,从而获取最新的记录。


相关问答FAQs

Q1: 我手动修改了 /etc/resolv.conf 文件,添加了新的DNS服务器,但为什么每次重启后我的修改都消失了?

A1: 这种情况在几乎所有的现代Linux发行版上都会发生,原因是/etc/resolv.conf文件不再是一个静态配置文件,而是由网络管理服务(如systemd-resolvedNetworkManager)动态生成的,这些服务在系统启动或网络状态变化时,会根据其自身的配置(例如/etc/systemd/resolved.conf或NetworkManager的连接配置)来重写/etc/resolv.conf,任何直接的手动修改都会被覆盖,要实现永久性更改,必须通过修改这些网络管理服务的配置文件来完成,具体方法可参考上文中的“永久更改DNS服务器地址”部分。

Q2: 我只想在测试时临时禁用所有DNS解析,让系统无法通过域名访问网络,最快捷的方法是什么?

A2: 最快捷的方法是清空或重命名/etc/resolv.conf文件,使其不包含任何nameserver条目,这会导致系统的解析器找不到任何可用的DNS服务器,从而无法将域名转换为IP地址,你可以使用以下命令之一:

# 方法一:备份并清空文件
sudo cp /etc/resolv.conf /etc/resolv.conf.bak
sudo echo "" > /etc/resolv.conf
# 方法二:备份并重命名文件
sudo mv /etc/resolv.conf /etc/resolv.conf.bak

执行后,任何尝试使用域名的网络操作(如ping google.com)都会立即失败,测试完成后,只需将备份文件恢复即可:

sudo mv /etc/resolv.conf.bak /etc/resolv.conf

这同样可能被网络管理服务自动恢复,但对于临时的、快速的测试目的来说,这是最直接有效的方法。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.