如何在Linux中更改DNS?

HCRM技术_小炮 DNS 2026-07-21 138 0

在 Linux 中更改 DNS 主要有临时修改和永久修改两种方式,具体方法取决于你的发行版和网络管理工具(如 NetworkManager、systemd-resolved 或手动配置),以下是最常见的几种场景:

linux中怎么更改dns

1. 临时修改(仅当前会话生效,重启后丢失)

直接编辑/etc/resolv.conf 文件:

sudo vim /etc/resolv.conf

替换为(例如使用 Google DNS 和 114DNS):

nameserver 8.8.8.8
nameserver 114.114.114.114

保存后立即生效。

>注意:许多现代系统(如 Ubuntu 18.04+、使用 NetworkManager 的系统)会自动覆盖此文件,临时修改可能很快被还原。

linux中怎么更改dns

2. 使用 NetworkManager(常见桌面版、Ubuntu、Fedora、CentOS 8+)

方法一:命令行工具 `nmcli`

查看当前连接名称:

nmcli connection show

修改指定连接的 DNS(例如连接名为Wired connection 1):

sudo nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8 114.114.114.114"
sudo nmcli con mod "Wired connection 1" ipv4.ignore-auto-dns yes
sudo nmcli con down "Wired connection 1" && sudo nmcli con up "Wired connection 1"

方法二:图形用户界面

- 打开“设置” → “网络” → 点击当前连接旁的齿轮图标

- 切换到“IPv4”选项卡,将“DNS”改为“自动(仅地址)”或手动输入 DNS 服务器地址

linux中怎么更改dns

3. 使用 systemd-resolved(Ubuntu 18.04+、Debian 11+、Fedora)

修改配置文件/etc/systemd/resolved.conf:

sudo vim /etc/systemd/resolved.conf

去掉DNS= 前面的注释,并写入:

[Resolve]
DNS=8.8.8.8 114.114.114.114
FallbackDNS=1.1.1.1 9.9.9.9

重启服务:

sudo systemctl restart systemd-resolved

或者使用resolvectl 临时更改(重启后失效):

sudo resolvectl dns eth0 8.8.8.8  # eth0 替换为实际网卡

静态网络配置文件(传统服务器)

Debian / Ubuntu(使用 /etc/network/interfaces)

编辑配置文件:

sudo vim /etc/network/interfaces

在对应的网卡(如eth0)下添加:

auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 114.114.114.114

重启网络:

sudo systemctl restart networking   # 或 sudo ifdown eth0 && sudo ifup eth0

RHEL / CentOS 7/8(使用 /etc/sysconfig/network-scripts/ifcfg-*)

编辑对应网卡文件(如ifcfg-eth0):

sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0

添加或修改:

DNS1=8.8.8.8
DNS2=114.114.114.114

重启网络:

sudo systemctl restart network   # CentOS 7
或
sudo nmcli connection reload      # CentOS 8+使用NetworkManager

Ubuntu 17.10+ 使用 netplan

编辑/etc/netplan/*.yaml 文件(例如01-netcfg.yaml):

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]

应用配置:

sudo netplan apply

验证 DNS 是否生效

方法1:查看当前 DNS 设置
resolvectl status
方法2:测试域名解析
nslookup google.com
或
dig google.com +short

常见问题

明明改了 /etc/resolv.conf,重启后又变回原样

这是因为 NetworkManager 或 systemd-resolved 接管了 DNS 管理,请使用对应的工具(如nmcli 或systemd-resolved)进行永久修改。

多网卡/多连接时需注意

每个连接独立维护 DNS 设置,请确保修改的是当前正在使用的连接。

选择最适合你系统的办法即可,通常桌面版推荐使用NetworkManager,服务器推荐使用systemd-resolved 或静态配置文件。

文章摘自:https://idc.huochengrm.cn/dns/27680.html

评论