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

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

  • [1. 现象](#1. 现象)
  • [2. 解决方法](#2. 解决方法)
    • [2.1 脚本](#2.1 脚本)
    • [2.2 systemd](#2.2 systemd)
  • [3. 重启后检查](#3. 重启后检查)
  • [4. 后续](#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 脚本

bash 复制代码
vim /root/dns.sh

脚本内容如下:

bash 复制代码
#!/bin/bash
# 定义dns
DNS1='10.195.16.5'
DNS2='10.195.16.6'

# 检查是否具有root权限
if [ "$(id -u)" -ne 0 ]; then
  echo "请以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; then
  echo "已成功追加nameserver ${DNS1}到第3行,nameserver ${DNS2}到第4行"
else
  echo "追加失败,请检查脚本或手动修改/etc/resolv.conf文件"
fi

给脚本加上可执行权限

bash 复制代码
chmod 744 /root/dns.sh

2.2 systemd

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

bash 复制代码
vim /etc/systemd/system/dns-add.service 

文件内容如下:

bash 复制代码
[Unit]
Description=DNS Script Service
After=network.target

[Service]
ExecStart=/root/dns.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

使得service开机生效

bash 复制代码
systemctl enable --now dns-add.service

3. 重启后检查

当然不重启也已经生效了

bash 复制代码
root@centos7:~# cat /etc/resolv.conf

nameserver 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. 对某些测试环境进行重启测试确认.(这步可以视情况省略)
相关推荐
7yewh4 分钟前
嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
linux·开发语言·arm开发·驱动开发·qt·opencv·嵌入式linux
小张认为的测试8 分钟前
Linux性能监控命令_nmon 安装与使用以及生成分析Excel图表
linux·服务器·测试工具·自动化·php·excel·压力测试
打鱼又晒网16 分钟前
linux网络套接字 | 深度解析守护进程 | 实现tcp服务守护进程化
linux·网络协议·计算机网络·tcp
終不似少年遊*27 分钟前
华为云计算HCIE笔记05
网络·华为云·云计算·学习笔记·hcie·认证·hcs
良许Linux30 分钟前
0.96寸OLED显示屏详解
linux·服务器·后端·互联网
蜜獾云41 分钟前
docker 安装雷池WAF防火墙 守护Web服务器
linux·运维·服务器·网络·网络安全·docker·容器
小屁不止是运维42 分钟前
麒麟操作系统服务架构保姆级教程(五)NGINX中间件详解
linux·运维·服务器·nginx·中间件·架构
bitcsljl1 小时前
Linux 命令行快捷键
linux·运维·服务器
ac.char1 小时前
在 Ubuntu 下使用 Tauri 打包 EXE 应用
linux·运维·ubuntu
Cachel wood1 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架