5154

Good Luck To You!

Linux改了DNS不生效怎么办?如何刷新生效?

在Linux操作系统中,域名系统(DNS)是连接互联网的基石,它负责将我们易于记忆的域名(如www.google.com)解析为机器能够识别的IP地址,默认情况下,系统会自动使用由网络服务提供商(ISP)分配的DNS服务器,出于提升网络访问速度、增强隐私安全、过滤恶意内容或绕过某些网络限制等目的,我们常常需要手动修改DNS设置,本文将详细介绍在Linux系统中修改DNS的几种主流方法,并提供验证与排错建议。

Linux改了DNS不生效怎么办?如何刷新生效?

临时修改DNS(适用于快速测试)

最直接的方法是编辑/etc/resolv.conf文件,这个文件是Linux系统用来查询DNS的配置文件,通过终端,使用文本编辑器(如nano或vim)打开它:

sudo nano /etc/resolv.conf

通常如下所示:

# This file is managed by man:systemd-resolved(8). Do not edit.
nameserver 192.168.1.1

你可以将现有的nameserver行注释掉(在行首添加),并添加你希望使用的公共DNS地址,使用Google和Cloudflare的DNS:

# nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 1.1.1.1

保存文件后,DNS设置会立即生效,但请注意,此方法通常是临时的,在现代Linux发行版中,网络管理服务(如NetworkManager或systemd-resolved)会在系统重启或网络重新连接时覆盖此文件的更改,它更适合用于临时测试。

永久性修改DNS(推荐方法)

为了使DNS设置永久生效,我们需要通过网络管理工具进行配置,以下是针对两种主流系统的配置方法。

使用systemd-resolved (适用于Ubuntu 18.04+、Debian 10+等)

许多现代发行版使用systemd-resolved服务来管理DNS,配置方法如下:

  1. 编辑配置文件: 打开/etc/systemd/resolved.conf文件。

    Linux改了DNS不生效怎么办?如何刷新生效?

    sudo nano /etc/systemd/resolved.conf
  2. 添加DNS地址: 在[Resolve]部分,找到#DNS=#FallbackDNS=行,取消#DNS=的注释,并在其后填入你想要的DNS地址,用空格分隔。

    [Resolve]
    DNS=8.8.8.8 1.1.1.1
    #FallbackDNS=
  3. 更新resolv.conf链接: 为了让系统使用systemd-resolved管理的DNS,需要确保/etc/resolv.conf指向正确的文件。

    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. 重启服务: 应用更改并重启systemd-resolved服务。

    sudo systemctl restart systemd-resolved

使用NetworkManager (适用于桌面环境和Fedora等)

对于使用NetworkManager的系统,可以通过nmcli命令行工具或图形界面进行修改,以下是nmcli的方法:

  1. 查看网络连接名称

    nmcli connection show

    假设你的连接名称是“有线连接 1”。

  2. 为该连接设置DNS

    Linux改了DNS不生效怎么办?如何刷新生效?

    sudo nmcli con mod "有线连接 1" ipv4.dns "8.8.8.8 1.1.1.1"
  3. 重启网络连接

    sudo nmcli con down "有线连接 1" && sudo nmcli con up "有线连接 1"

常用公共DNS推荐

选择一个可靠的DNS服务器至关重要,以下是一些流行的公共DNS选项:

提供商 主DNS 辅DNS 特点
Google 8.8.8 8.4.4 速度快,稳定可靠
Cloudflare 1.1.1 0.0.1 注重隐私与安全,速度极快
Quad9 9.9.9 112.112.112 自动拦截恶意网站,安全性高
阿里DNS 5.5.5 6.6.6 针对中国大陆用户优化

验证DNS修改是否生效

修改完成后,可以使用nslookupdig命令来验证,只需查询一个域名,观察返回的服务器地址是否是你新设置的DNS。

nslookup google.com

在命令输出的第一行,你会看到Server: 8.8.8.8(或你设置的其他地址),这表明DNS修改已成功生效。


相关问答 (FAQs)

我修改了 /etc/resolv.conf,为什么重启后又变回来了? 解答: 这是因为在现代Linux发行版中,/etc/resolv.conf文件通常是由网络管理服务(如systemd-resolvedNetworkManager)动态生成的,当系统重启或网络状态改变时,这些服务会根据其自身的配置文件覆盖/etc/resolv.conf,直接编辑它只是一种临时方案,要实现永久修改,必须像上文介绍的那样,去修改这些网络管理服务自己的配置文件(如/etc/systemd/resolved.conf)或使用其专用工具(如nmcli)。

修改DNS后,部分网站还是无法访问或速度很慢,怎么办? 解答: 尝试清除系统的DNS缓存,对于使用systemd-resolved的系统,可以执行sudo systemd-resolve --flush-caches,检查你的本地防火墙(如ufwfirewalld)规则,确保没有阻止DNS查询(通常使用UDP 53端口),问题也可能出在你的路由器上,某些路由器会强制所有设备使用其指定的DNS,或者开启了家长控制等功能,你可以尝试登录路由器管理后台,检查并修改其DNS设置,或者在路由器上暂时禁用这些功能进行测试。

发表评论:

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

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

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.