5154

Good Luck To You!

linux系统怎么修改dns地址

Linux系统中,可通过编辑/etc/resolv.conf文件添加或修改nameserver行来设置DNS地址,如使用Google公共DNS(8.8.8.8和8.8.4.4),若需永久生效,部分系统还需配置网络管理器或`systemd

理解DNS的作用与配置文件位置

DNS(Domain Name System)负责将域名转换为IP地址,在Linux中,核心配置文件为/etc/resolv.conf,其中包含nameserver条目指定使用的DNS服务器地址,不同发行版可能采用网络管理工具(如NetworkManager或systemdresolved)动态生成该文件,导致直接修改后失效的问题需要注意。


常用修改方法及操作步骤

手动编辑/etc/resolv.conf(临时生效)

这是最基础的方法,适合快速测试但重启后可能丢失设置:

  • 命令行操作
      sudo nano /etc/resolv.conf
  • 添加/替换DNS条目:例如使用Google公共DNS或Cloudflare DNS:
      nameserver 8.8.8.8       # Google DNS
      nameserver 8.8.4.4       # Google备用DNS
      # 或者替换为其他服务商如:
      # nameserver 1.1.1.1     # Cloudflare家庭版DNS
      # nameserver 1.0.0.1     # Cloudflare备用DNS
  • 保存退出:按Ctrl+O保存→Ctrl+X退出编辑器。
  • 立即生效验证:执行cat /etc/resolv.conf确认修改后的条目已存在;用dig example.comnslookup example.com测试解析是否成功。 ⚠️注意:若系统使用NetworkManager等工具管理网络,此文件可能在重启后被覆盖!需结合后续永久方案。

通过NetworkManager实现持久化配置(推荐图形化桌面用户)

适用于大多数现代Linux发行版(Ubuntu/Fedora/CentOS等):

  • 步骤①查看当前连接名称:运行nmcli connection show获取接口名(如"eth0")。
  • 步骤②修改指定连接的DNS
      sudo nmcli connection modify <connection_name> ipv4.dns "8.8.8.8 8.8.4.4"

    示例:sudo nmcli connection modify eth0 ipv4.dns "1.1.1.1,1.0.0.1"

  • 步骤③重载配置使更改生效
      sudo nmcli connection up <connection_name>
  • 优点:跨重启保留设置,无需担心文件被覆盖。

修改接口配置文件(针对CentOS/RHEL系列)

适用于服务器环境且需要静态IP的场景:

  • 定位网卡配置文件:通常位于/etc/sysconfig/networkscripts/ifcfg*目录下,例如ifcfgeth0
  • 编辑文件添加DNS参数:在末尾追加以下内容:
      DNS1=8.8.8.8
      DNS2=8.8.4.4
  • 重启网络服务应用更改
      sudo systemctl restart network
  • 效果:系统启动时会自动读取此配置更新/etc/resolv.conf

使用systemdresolved服务(全局统一管理)

适用于基于systemd的系统(如Ubuntu 16.04+):

  • 编辑主配置文件
      sudo nano /etc/systemd/resolved.conf
  • 设置DNS列表:取消注释并修改DNS=行:
      DNS=8.8.8.8 8.8.4.4 [可选多个空格分隔]
  • 重启服务激活配置
      sudo systemctl restart systemdresolved
  • 优势:提供缓存加速和安全性增强功能,适合多应用共享同一DNS策略。

DHCP客户端高级设置(适用于动态获取IP的情况)

当设备通过DHCP自动获取网络参数时,可通过钩子脚本强制注入自定义DNS:

  • 修改DHCP客户端配置
      sudo nano /etc/dhcp/dhclient.conf
  • 添加预置指令:在文件尾部写入:
      prepend domainnameservers 8.8.8.8,8.8.4.4;
  • 刷新租约使设置生效
      sudo dhclient r      # 释放现有租约
      sudo dhclient         # 重新请求并应用新配置

resolvconf工具辅助管理(Debian系专用)

部分旧版本Debian衍生系统支持此工具集中管控DNS:

  • 创建基础配置片段
      echo "nameserver 1.1.1.1" | sudo tee a /etc/resolvconf/resolv.conf.d/head
  • 更新全局解析库
      sudo resolvconf u

    该命令会合并所有片段生成最终的/etc/resolv.conf


验证与故障排查

工具/命令 作用说明 预期输出示例
cat /etc/resolv.conf 显示当前生效的DNS服务器列表 nameserver 8.8.8.8
dig www.baidu.com 诊断域名解析过程(需安装bindutils包) 返回百度首页对应的IP地址
nslookup example.com 交互式查询权威DNS记录 Server: Unanswered, Address: x.x.x.x
ping c 3 google.com 测试连通性及延迟情况 Request sent to IP地址,收到响应包

若出现解析失败,请检查防火墙是否放行53端口(UDP/TCP),以及上游DNS本身的可用性。


相关问题与解答

Q1: 为什么修改了/etc/resolv.conf后重启又变回原样?

A: 因为某些网络管理器(如NetworkManager)会在每次启动时覆盖该文件,解决方案是改用nmcli命令或编辑对应连接的配置,确保改动由管理器持久化保存。

Q2: 如何同时使用多个DNS服务器实现负载均衡?

A: 在配置文件中按优先级顺序列出多个nameserver即可。

nameserver 8.8.8.8      # 首选Google DNS
nameserver 1.1.1.1      # 次选Cloudflare DNS
nameserver 208.67.222.222 # OpenDNS作为备选
```系统会自动尝试下一个服务器直至成功解析

发表评论:

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

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.