在Linux中,编辑/etc/resolv.conf添加nameserver行,或通过netplan/NetworkManager配置DNS,保存后重启
Linux 设置静态 DNS 的详细指南
在 Linux 系统中,设置静态 DNS(域名系统)可以解决动态分配 DNS 导致的不稳定问题,或绕过 ISP 提供的 DNS 服务,本文将详细介绍如何在主流 Linux 发行版中配置静态 DNS,涵盖多种场景和持久化设置方法。
DNS 基础概念
术语 | 说明 |
---|---|
DNS | 域名系统,负责将域名(如 google.com )转换为 IP 地址(如 250.72.78 )。 |
静态 DNS | 手动指定 DNS 服务器地址,而非通过 DHCP 自动获取。 |
resolv.conf | Linux 系统的 DNS 配置文件,存储 DNS 服务器地址。 |
主流 Linux 发行版设置方法
Ubuntu/Debian 系列
方法 1:直接修改 /etc/resolv.conf
sudo nano /etc/resolv.conf ```示例使用 Google DNS): ```plaintext nameserver 8.8.8.8 nameserver 8.8.4.4
注意:此方法在重启或网络重启后可能失效(由 NetworkManager 覆盖)。
方法 2:通过 NetworkManager 持久化设置
sudo nmcli connection edit "Wired connection 1" # 替换为你的连接名称
在交互式命令中输入:
set ipv4.dns "8.8.8.8 8.8.4.4" save quit
重启网络服务:
sudo systemctl restart NetworkManager
CentOS/RHEL 系列
方法 1:修改 /etc/sysconfig/networkscripts/ifcfgeth0
sudo vi /etc/sysconfig/networkscripts/ifcfgeth0
添加以下行:
DNS1=8.8.8.8 DNS2=8.8.4.4
重启网络服务:
sudo systemctl restart network
方法 2:使用 resolv.conf
结合 chmod
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf echo "nameserver 8.8.4.4" | sudo tee a /etc/resolv.conf sudo chmod 644 /etc/resolv.conf # 防止被 NetworkManager 覆盖
Arch Linux 系列
方法 1:修改 /etc/resolv.conf
sudo nano /etc/resolv.conf
nameserver 1.1.1.1 nameserver 9.9.9.9
持久化:禁用 systemdresolved
服务(如果启用):
sudo systemctl stop systemdresolved sudo systemctl disable systemdresolved
多发行版通用方法
场景 | 命令/操作 |
---|---|
临时设置 | 直接修改 /etc/resolv.conf ,立即生效但非持久。 |
持久化设置 | 通过 NetworkManager 或网络服务配置文件(如 ifcfg* )设置。 |
验证 DNS | 使用 nslookup 或 dig 测试解析:nslookup www.google.com |
常见问题与解决方案
问题 | 原因 | 解决方案 |
---|---|---|
设置后无效 | NetworkManager 覆盖配置 网络服务未重启 |
通过 NetworkManager 设置 执行 sudo systemctl restart NetworkManager |
DNS 解析慢 | 使用了延迟较高的 DNS 服务器 | 更换为就近的公共 DNS(如阿里 5.5.5 )。 |
无法联网 | DNS 配置错误或网络中断 | 检查 /etc/resolv.conf 语法,或暂时恢复默认设置。 |
推荐公共 DNS 服务器
服务商 | IPv4 地址 | 特点 |
---|---|---|
8.8.8 8.4.4 |
全球覆盖,稳定可靠。 | |
Cloudflare | 1.1.1 0.0.1 |
隐私保护,无日志记录。 |
AliDNS | 5.5.5 6.6.6 |
国内优化,低延迟。 |
相关问题与解答
问题 1:如何恢复默认 DNS 设置?
解答:
- 删除或注释
/etc/resolv.conf
中的自定义 DNS。 - 通过 NetworkManager 重置连接配置:
sudo nmcli connection reset "YourConnectionName"
- 重启网络服务:
sudo systemctl restart NetworkManager
问题 2:如何设置多个 DNS 服务器?
解答:
在 /etc/resolv.conf
或 NetworkManager 配置中,按优先级顺序添加多个 nameserver
行。
nameserver 8.8.8.8 # 主用 DNS nameserver 1.1.1.1 # 备用 DNS nameserver 9.9.9.9 # 第三备选
系统会按顺序尝试