在 Ubuntu 中查看或修改 DNS 配置可以通过多种方式实现,具体取决于你使用的网络管理工具(如 NetplanNetworkManagersystemd-resolved)。以下是详细的步骤:


一、查看当前 DNS 配置

方法 1:通过 resolvectl(systemd-resolved)

  1. resolvectl status
  • 输出中会显示当前 DNS 服务器地址(查找 DNS Servers 字段)。

方法 2:检查【ubuntu/centos】 /etc/resolv.conf

  1. cat /etc/resolv.conf
  • 注意:此文件可能被符号链接到 systemd-resolved 或其他工具的配置(如 /run/systemd/resolve/stub-resolv.conf)。
  • 如果显示 nameserver 127.0.0.53,说明 DNS 由 systemd-resolved 管理。

方法 3:通过 nmcli(NetworkManager)

  1. nmcli dev show | grep DNS

如果设定了固定IP

  1. # ubuntu
  2. ls -a /etc/netplan/
  3. cat /etc/netplan/00-installer-config.yaml
  4. # centos查看是否设置了固定IP
  5. ls /etc/sysconfig/network-scripts/ 目录下,文件名类似 ifcfg-ens33 或者 ifcfg-enp2s0,存在BOOTPROTO=static,并设置了IPADDRNETMASKGATEWAY等参数。
  6. 在终端中输入 ip addr show命令,查看你的网络接口信息。找到你正在使用的网络接口(如 ens33 eth0),观察其IP地址行。如果该行显示包含 scope global且通常不包含 dynamic关键字,则表明当前可能使用的是静态IP
  7. # 以下为centos设置固定IP示例:
  8. vi /etc/sysconfig/network-scripts/ifcfg-enp2s0
  9. TYPE=Ethernet
  10. PROXY_METHOD=none
  11. BROWSER_ONLY=no
  12. # BOOTPROTO=dhcp
  13. DEFROUTE=yes
  14. IPV4_FAILURE_FATAL=no
  15. IPV6INIT=yes
  16. IPV6_AUTOCONF=yes
  17. IPV6_DEFROUTE=yes
  18. IPV6_FAILURE_FATAL=no
  19. IPV6_ADDR_GEN_MODE=stable-privacy
  20. NAME=enp2s0
  21. UUID=3571e9e9-07cd-4de3-ba2d-b359622127a6
  22. DEVICE=enp2s0
  23. ONBOOT=yes
  24. # 指定在启动时使用的协议为DHCP(动态主机配置协议)
  25. # 意味着网络接口将从DHCP服务器自动获取IP地址、子网掩码、网关等配置信息
  26. # 静态ip为static
  27. BOOTPROTO=static
  28. ...
  29. # 下面分别设置静态IP地址、子网掩码和默认网关
  30. IPADDR=192.168.3.29
  31. NETMASK=255.255.255.0
  32. GATEWAY=192.168.3.1
  33. # 被注释掉的行,如果启用,它将设置首选DNS服务器为114.114.114.114
  34. #DNS1=114.114.114.114
  35. 保存以上内容,然后以下命令以重启:
  36. systemctl restart network

二、修改 DNS 配置

方式 1:通过 Netplan(推荐,适用于 Ubuntu 18.04+)

  1. 编辑 Netplan 配置文件(通常位于 /etc/netplan/,文件名类似 01-netcfg.yaml):

    1. sudo nano /etc/netplan/01-netcfg.yaml
  2. 添加或修改 DNS 设置
    示例配置(静态 IP + DNS):

    1. network:
    2. version: 2
    3. ethernets:
    4. eth0:
    5. addresses: [192.168.64.156/24]
    6. gateway4: 192.168.64.1
    7. nameservers:
    8. addresses: [8.8.8.8, 1.1.1.1] # Google 和 Cloudflare DNS
  3. 应用配置

    1. sudo netplan apply

方式 2:通过 NetworkManager(适用于图形界面或 nmcli 用户)

  1. 通过命令行修改

    1. nmcli con modify <连接名称> ipv4.dns "8.8.8.8 1.1.1.1"
    2. nmcli con up <连接名称>
    • 替换 <连接名称> 为你的网络连接名称(通过 nmcli con show 查看)。
  2. 通过图形界面修改

    • 打开 SettingsNetwork → 选择当前网络 → 点击齿轮图标 → IPv4/IPv6 选项卡 → 手动设置 DNS。

方式 3:直接修改 /etc/resolv.conf(不推荐,可能被覆盖)

  1. 临时修改(重启后失效):

    1. sudo echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
  2. 永久修改(需解除符号链接):

    • 备份原文件:
      1. sudo mv /etc/resolv.conf /etc/resolv.conf.backup
    • 创建新文件:
      1. sudo nano /etc/resolv.conf
    • 添加内容:
      1. nameserver 8.8.8.8
      2. nameserver 1.1.1.1
    • 设置文件不可变(防止覆盖):
      1. sudo chattr +i /etc/resolv.conf

三、验证 DNS 修改

  1. 检查 DNS 解析是否生效

    1. ping google.com
    2. nslookup google.com
  2. 查看当前 DNS 服务器

    1. resolvectl status | grep "DNS Servers"

四、常见 DNS 服务器推荐

提供商 IPv4 地址
Google 8.8.8.8, 8.8.4.4
Cloudflare 1.1.1.1, 1.0.0.1
OpenDNS 208.67.222.222, 208.67.220.220

注意事项

  1. 优先级问题
    • 如果同时配置了静态 IP 和 DHCP,确保 DNS 设置不冲突。
  2. systemd-resolved 的 DNS 缓存
    • 清除缓存:sudo resolvectl flush-caches
  3. 网络服务重启
    • 修改配置后,如果遇到问题,重启网络服务:
      1. sudo systemctl restart systemd-networkd
      2. sudo systemctl restart NetworkManager

通过以上方法,你可以灵活管理 Ubuntu 的 DNS 配置。如果遇到问题,请检查配置文件语法或网络服务状态。