CentOS重启后resolv.conf被重置的解决方案(永久修改DNS)

9 篇文章 1 订阅
1 篇文章 0 订阅

本文档针对旧版本使用网卡强制写入自定义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 Managercli命令更新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.88.8.4.4,可以执行如下命令

sudo nmcli connection modify "System eth0" ipv4.dns "8.8.8.8,8.8.4.4"

命令参数解读:

  • sudo nmcli connection modify:使用Network Managercli命令行连接并修改
  • “System eth0”:上一个步骤得到的默认网卡(eth0)的名称System eth0
  • ipv4.dns:修改内容为ipv4dns
  • “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)
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值