当前位置: 首页 > news >正文

阿里云ECS重启后自定义DNS配置丢失解决方法

阿里云ECS重启后自定义DNS配置丢失解决方法

  • 1. 现象
  • 2. 解决方法
    • 2.1 脚本
    • 2.2 systemd
  • 3. 重启后检查
  • 4. 后续

1. 现象

公司内部和阿里云打通,并上线一段时间后发现服务器解析内网域名有问题.
手动在/etc/resolv.conf中添加内网DNS后恢复正常,重启后该记录丢失.尝试修改/etc/sysconfig/network-scripts/ifcfg-eth0,追加DNS1和DNS2,重启系统后配置一样丢失.
咨询阿里工单,提示需要将/etc/sysconfig/network-scripts/ifcfg-eth0由DHCP改成静态获取,由于ECS已经分配并使用了600台以上了,这个修改显然太麻烦了.

2. 解决方法

思路是这样的:

  1. 写一个脚本对/etc/resolv.conf进行修改
  2. 写一个service,开机启动网络后自动执行该脚本

2.1 脚本

vim /root/dns.sh

脚本内容如下:

#!/bin/bash
# 定义dns
DNS1='10.195.16.5'
DNS2='10.195.16.6'# 检查是否具有root权限
if [ "$(id -u)" -ne 0 ]; thenecho "请以root用户身份运行此脚本"exit 1
fi# 备份原始resolv.conf文件
cp /etc/resolv.conf /etc/resolv.conf.bak# 使用sed在第3行追加nameserver 10.1.1.1,在第4行追加nameserver 10.1.1.2
sed -i "1a\nameserver ${DNS2}" /etc/resolv.conf
sed -i "1a\nameserver ${DNS1}" /etc/resolv.conf# 检查是否成功追加
if grep -q "nameserver ${DNS2}" /etc/resolv.conf && grep -q "nameserver ${DNS1}" /etc/resolv.conf; thenecho "已成功追加nameserver ${DNS1}到第3行,nameserver ${DNS2}到第4行"
elseecho "追加失败,请检查脚本或手动修改/etc/resolv.conf文件"
fi

给脚本加上可执行权限

chmod 744 /root/dns.sh

2.2 systemd

rhel7之前我习惯将脚本放在/etc/rc.local,但考了RH442之后我习惯将开机运行的脚本做成service,这样更易于管理和故障排查.当然放着tuned里面也更不易于被其他人修改和发现.

vim /etc/systemd/system/dns-add.service 

文件内容如下:

[Unit]
Description=DNS Script Service
After=network.target[Service]
ExecStart=/root/dns.sh
Restart=on-failure[Install]
WantedBy=multi-user.target

使得service开机生效

systemctl enable --now dns-add.service

3. 重启后检查

当然不重启也已经生效了

root@centos7:~# cat /etc/resolv.confnameserver 10.195.16.5
nameserver 10.195.16.6
nameserver 114.114.114.114

4. 后续

接下来就是批量生效了.由于是生产环境这里就不截图了.
说个思路吧.

  1. 先将脚本放到某个apache或者nginx上,可以让所有的服务器通过wget或者curl获取到
  2. 通过阿里云oos或者ansible实现批量执行
    阿里云oos(https://help.aliyun.com/zh/oos/getting-started/manage-multiple-instances)
  3. 对某些测试环境进行重启测试确认.(这步可以视情况省略)

http://www.mrgr.cn/news/10574.html

相关文章:

  • 分享:一种基于NTP的网络时钟同步服务器
  • 鸿蒙内核源码分析(文件句柄篇) | 你为什么叫句柄
  • 在遍历过程中修改 List 的几种方式
  • 信息学奥赛知识点(十三)----树和二叉树(上)
  • 【Linux】日志函数
  • Java笔试面试题AI答之线程(20)
  • 【算法进阶1】贪心算法、背包问题(0-1背包、分数背包)、拼接最大数字问题、活动选择问题
  • 网络安全——基础知识记忆梳理
  • 突破编程:C++中的组合模式(Composite Pattern)
  • 期权投资者新手要注意的问题——持仓结构不科学!
  • 在scss中如何使用hover(Vue项目)
  • IO--标准函数使用方法
  • Git的使用教程及常用语法01
  • 力扣2845.统计趣味子数组的数目
  • Springboot- RestTemplate发送请求并希望将返回的JSON数据转换为Map对象
  • Android AOP拯救混乱的代码架构
  • Java-数据结构-时间和空间复杂度 (ಥ_ಥ)
  • VTK随笔一:初识VTK(QT中嵌入VTK窗口)
  • 景商场双目客流量摄像机,具有100°宽视角,识别范围广
  • 深入了解:浅拷贝深拷贝