本文档针对旧版本使用网卡强制写入自定义DNS导致服务器无法连接外网的问题进行修改重发。
一、汇总说明
1、注意
注意:
注意:
注意:
Ⅰ、本文档只做技术记录和分享,由此带来的其它后果与博主无关;
Ⅱ、自己操作服务器有风险,请自行斟酌风险;
Ⅲ、以下内容原生系统只在阿里云、腾讯云、百度云的CentOS7测试通过;
Ⅳ、以下内容衍生系统只在OpenCloudOS 8测试通过;
Ⅴ、有对不同系统、不同版本的处理有成功经验的大佬可以留言放出文档链接;
Ⅵ、对于放出文档链接的留言,在看到后,我会在文档内容中展示出来,如:Ubuntu系列修改请参考 [文章标题](文章链接);
Ⅶ、为避免外链带来风险问题,只接受展示CSDN博客内的公开链接(不支持付费订阅和外站链接)。
2、省流
- ①、本文档(推荐,优雅,使用
Network Manager
自动生成配置)
sudo nmcli connection modify "外网网卡名称" ipv4.dns "8.8.8.8,8.8.4.4"
sudo nmcli connection up "外网网卡名称"
sudo systemctl restart network
- ②、直接修改(不推荐,暴力,直接修改配置文件)
- Ⅰ、
/etc/sysconfig/network-scripts/ifcfg-eth0
(外网网卡配置)文件添加以下内容
DNS1=8.8.8.8 DNS2=8.8.4.4
- Ⅱ、重启网卡
systemctl restart network
- Ⅰ、
二、详细步骤
- 注意:本文的操作都默认网卡为
eth0
,如果自己服务器默认网卡不为eth0
,请处理时自行斟酌- 处理思路:使用
Network Manager
的cli
命令更新DNS配置
1、确保网络设置被Network Manager
接管
注意:没有做过配置修改的这一步骤一般都不需要处理。
①、启动Network Manager
并设置开机启动
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager
②、查看网卡配置
在/etc/sysconfig/network-scripts/ifcfg-eth0
中以下内容前面加上#
注释或者修改为NM_CONTROLLED=yes
NM_CONTROLLED=no
③、重启网卡
注意:如果没有做内容修改,不用重启。
sudo systemctl restart network
2、修改网卡设置
①、查看网卡信息
查看命令sudo nmcli connection show
的执行结果,我这里的结果如下:
NAME UUID TYPE DEVICE
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
br-d7d0a86a8a34 e9e937c7-ca1b-48c0-bbf4-0b6e4118cb29 bridge br-d7d0a86a8a34
通过上面的结果可以看到,我这里的默认网卡是eth0
,网卡名称为System eth0
。
②、修改DNS设置
如我要修改的DNS为8.8.8.8
和8.8.4.4
,可以执行如下命令
sudo nmcli connection modify "System eth0" ipv4.dns "8.8.8.8,8.8.4.4"
命令参数解读:
- sudo nmcli connection modify:使用
Network Manager
的cli
命令行连接并修改- “System eth0”:上一个步骤得到的默认网卡(
eth0
)的名称System eth0
- ipv4.dns:修改内容为
ipv4
的dns
- “8.8.8.8,8.8.4.4”:要修改的
DNS
的值,中间用英文逗号,
或者空格都可,请确保每个
DNS
值都是正确的。注意:可以生效的DNS数量一般在2个到3个,具体数量取决于服务器供应商的网络配置,这里设置1个或者2个都可,超过2个的设置一定不会生效。
③、更新DNS设置
sudo nmcli connection up "System eth0"
执行结果如下:
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
上述结果表明DNS配置已经修改成功。
3、重启网卡
PS. 其实这里在不重启的情况下DNS就会直接生效,但是为了第四步骤验证不会对服务器网络造成影响的情况下成功修改DNS,这里先重启一下。
sudo systemctl restart network
4、临时/重启验证效果
①、验证DNS修改结果
- 直接执行或者重启后执行
cat /etc/resolv.conf
会得到如下内容
# Generated by NetworkManager
nameserver 183.60.83.19
nameserver 183.60.82.98
nameserver 8.8.8.8
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 8.8.4.4
- 内容说明
# Generated by NetworkManager
表明此配置文件由Network Manager
自动创建nameserver 183.60.83.19 nameserver 183.60.82.98
我这里是云服务器获取公网ip时自动创建的,是为了确保服务器可以连接公网网络的。注意:你们自己的服务器可能不会有nameserver 8.8.8.8
:自定义DNS的第一个值# NOTE: the libc resolver may not support more than 3 nameservers. # The nameservers listed below may not be recognized.
因为使用了两个云服务器自带的两个DNS,所以这里提示超过3个就会不支持。注意:可以生效的DNS数量一般在2个到3个,我这里因为云服务器自带2个,强制覆盖就会导致无法联网,所以它们再支持了一个DNS可以供用户自行修改。nameserver 8.8.4.4
:自定义DNS的第二个值,也是我这里不会生效的值。
如果想修改为正常的DNS,只需要重复执行之前的步骤即可,只不过只能使用一个自定义DNS:
sudo nmcli connection modify "System eth0" ipv4.dns "8.8.8.8"
sudo nmcli connection up "System eth0"
sudo systemctl restart network
此时再执行cat /etc/resolv.conf
命令就会得到如下结果:
# Generated by NetworkManager
nameserver 183.60.83.19
nameserver 183.60.82.98
nameserver 8.8.8.8
②、验证网络情况
执行命令ping baidu.com
查看是否有返回结果:
PING baidu.com (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=248 time=27.7 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=248 time=27.6 ms
三、其它说明
如果执行全部步骤还失败,请查找以下可能的原因或联系服务商请求技术支持。
- 服务器系统是否是CentOS及衍生系列
- 默认网卡名称是否是eth0
- DNS是否被KVM虚拟主机的VM强制接管导致无法自行修改(
/etc/resolv.conf
文件中注释内容如# Generated by xxxxVM
)