在 CentOS 6 系统想修改 DNS 我们都知道修改/etc/resolv.conf 文件,添加上需要的 DNS,并重启网卡即可

vim /etc/resolv.conf
# 添加下面的 dns
nameserver 8.8.8.8
nameserver 114.114.114.114
# 重启网卡命令
systemctl restart network

最近开了台服务器在 Centos7 上。ping 百度死活 ping 不通,下载宝塔面板也下载不了,提示 wget: 无法解析主机地址 “download.bt.cn” 很是蛋疼。初步分析应该是服务器自带的 dns 有问题,我们就需要自己添加合适的 dns。

直接按照 CentOS 6 原来的方法修改了 /etc/resolv.conf 文件,发现每当重启网卡后 /etc/resolv.conf 文件会被重置为默认 isp 的 dns. 即 “generated by NetworkManager”。原因是 Centos7 的网络配置服务已经替换成 NetworkManager。

方法 1,使用 nmcli:

查看当前启动的连接

nmcli connection show
名称             UUID                                  类型            设备 
System eth0      5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0 

注意看我这里的网卡名称比较特殊,是有空格的。一般是直接输入名称修改就行了,但是由于我的网卡名称有空格,通过名称修改的方式不行,需要使用 UUID 的方式修改。这点一定要注意。

下面我写了两种修改的方式,任选一种:

# 通过名称修改
nmcli con mod eno0 ipv4.dns "8.8.8.8 114.114.114.114"
# 通过 UUID 修改
nmcli con mod 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ipv4.dns "8.8.8.8 114.114.114.114"

修改后再执行以下指令使 DNS 设定立即生效:

# 通过名称重启,任选一种
nmcli con up eno0
# 通过 UUID 重启
nmcli con up 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03

方法 2,修改 NetworkManager 配置的方式后,使用原来的方式修改

修改 /etc/NetworkManager/NetworkManager.conf 文件,在 main 部分添加 “dns=none” 选项:

main]
plugins=ifcfg-rh
dns=none # 注意是这句

再手动修改 /etc/resolv.conf 文件,添加下面的 DNS

nameserver 8.8.8.8
nameserver 114.114.114.114

最后重启网卡

systemctl restart network