VPC DHCP类型的ECS修改DNS

简介: 本文从strace工具使用角度分析来提供一种解决VPC实例DNS配置重启失效的思路。

问题背景

客户内部有域名解析,需要用到自己的DNS服务器,客户VPC下的实例开的是DHCP的网络类型,导致客户更改/etc/resolve.conf文件之后,一重启就失效。

怎样解决重启之后DNS失效?

DHCP的虚机如何修改DNS

Centos的虚机

Centos的虚机修改DNS比较简单,有两种方法:

1.vim /etc/sysconfig/network-scripts/ifcfg-eth0 , 在结尾追加:

       DEVICE=eth0
       BOOTPROTO=dhcp
       ONBOOT=yes
       DNS1=10.0.1.1
       DNS2=10.0.1.2

重启网络之后,如图所示,/etc/resolv.conf中的DNS已经变成我自己的了。

2.直接修改/etc/resolv.conf文件,将DNS修改成自己的,然后chattr +i /etc/resolv.conf。

Ubuntu虚机

如果是ubuntu 16的虚机,可以通过上述方法2,将DNS配置文件写保护来达到修改DNS的目的。如果是ubuntu 14的虚机,用chattr系统会提示错误:chattr: Operation not supported while reading flags on /etc/resolv.conf.

可以通过这种方式:

1.vim /etc/resolvconf/resolv.conf.d/head

将DNS信息写进去:
    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    nameserver 10.0.1.1
    nameserver 10.0.1.2
    nameserver 10.0.1.3

2.执行resolvconf -u,/etc/resolv.conf就变成自己想要的了:

听起来ubuntu 14的系统修改DNS也不是那么难,如果仅仅是这样,确实是不难,我们在给客户解决方案的时候,踩了不少的坑,根据网络上给两种方式,最终查看 /etc/resolv.conf ,最顶部的还是默认的两个 DNS 服务器:

    A:  vi /etc/network/interfaces 新增:
    
    dns-nameservers 10.0.1.1
    
    dns-nameservers 10.0.1.2
    
    B: sudo vim /etc/resolvconf/resolv.conf.d/base 新增:
    
    nameserver 10.0.1.1
    
    nameserver 10.0.1.2
    
    resolvconf -u

最终利用大杀器,用strace来看resovlconf -u到底是如何工作的,才找到为何每次都将/etc/resolv.conf覆盖的元凶。

strace -s 256 -ff -o /tmp/strace.log resolvconf -u

find . -type f | xargs grep -ri 'resolv.conf' | less 将所有跟修改这个配置文件相关的日志都过滤出来,一行一行查看。


接着查看strace.log,发现resolvconf 执行路径中打开了 /etc/resolvconf/resolv.conf.d/head 并将他的内容写到了DNS配置文件中。

于是才有了上述的方法,修改/etc/resolvconf/resolv.conf.d/head,再执行resolvconf -u果然得到了我想要的结果。将结果反馈给客户,客户尝试也解决了ubuntu 14 DNS重启失效的问题了。

注:/etc/resolvconf/update.d 下面的两个脚本文件也比较有意思,大家可以阅读一下。

还有一种比较推荐的方式:禁止DHCP client去更新DNS配置:
1.修改/etc/dhcp/dhclient.conf 中添加一行在requst前面:supersede domain-name-servers 你的DNS地址1, DNS地址2;
2.重启网络,让dhcp配置生效。
supersede man中的说明, 对有些选项来说,客户端要想使用一个本地配置(locally-configured),就可以在supersede选项中定义。

The supersede statement

       supersede [ option declaration ];

       If for some option the client should always  use  a  locally-configured
       value  or  values rather than whatever is supplied by the server, these
       values can be defined in the supersede statement.
目录
相关文章
利用Private Zone DNS - 搭建AD但不搭建DNS服务器如何加域
利用Private Zone DNS - 搭建AD但不搭建DNS服务器如何加域
利用Private Zone DNS - 搭建AD但不搭建DNS服务器如何加域
|
网络协议 安全 Devops
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
702 4
|
域名解析 网络协议 Ubuntu
DHCP与DNS的配置
通过这些步骤,您可以在Linux环境下成功配置和验证DHCP和DNS服务。希望这些内容对您的学习和工作有所帮助。
1575 27
|
网络协议 安全 Linux
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
5457 0
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
2561 2
|
监控 网络协议 安全
DNS服务器故障不容小觑,从应急视角谈DNS架构
DNS服务器故障不容小觑,从应急视角谈DNS架构
470 4
|
弹性计算 安全 网络协议
如何创建VPC并配置安全组以保护您的阿里云服务器
如何创建VPC并配置安全组以保护您的阿里云服务器
|
弹性计算 网络协议 Ubuntu
如何在阿里云国际版Linux云服务器中自定义配置DNS
如何在阿里云国际版Linux云服务器中自定义配置DNS
ly~
|
网络协议 应用服务中间件 Apache
如何在 DNS 记录中设置反向代理服务器?
要设置反向代理服务器,首先需安装配置软件(如 Nginx 或 Apache),并确保域名正确指向服务器 IP。接着,在 DNS 中设置 A 或 CNAME 记录,将域名指向反向代理服务器。然后编辑 Nginx 或 Apache 的配置文件,将请求转发至后端服务器。最后,通过浏览器访问域名测试配置是否成功,并使用工具检查请求流向和响应情况。
ly~
1982 3
ly~
|
域名解析 网络协议 Linux
如何测试 DNS 记录中的反向代理服务器是否生效?
本文介绍了三种测试反向代理服务器配置的方法。首先,通过命令行工具如 `ping`、`nslookup` 和 `dig` 检查域名解析是否指向正确的 IP 地址。其次,利用 Web 浏览器访问域名,验证页面加载正常且请求头信息无误。最后,借助网络抓包工具如 `Wireshark` 和 `tcpdump` 分析数据包,确保请求正确转发并返回预期响应。
ly~
1708 2

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS