从resolv.conf中删除EC2的条目

时间:2014-06-07 15:04:53

标签: amazon-ec2 debian resolve

我有私有DNS服务器,我想在AWS / EC2上的Debian上用resolv.conf将它们写入resolvconf。 名称服务器条目的顺序存在问题。 在我的resolv.conf中,EC2的默认名称服务器总是写在第一行,如下所示:

# 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 172.16.0.23
nameserver 10.0.1.185
nameserver 10.100.0.130
search ap-northeast-1.compute.internal

172.16.0.23是EC2的默认名称服务器,其他人是我的。

如何删除EC2条目?或者,如何将EC2进入第三名?

这里有一个接口文件:

% ls -l /etc/resolvconf/run/interface/
-rw-r--r-- 1 root root  62 Jun  7 23:35 eth0

似乎文件eth0是由dhcp自动生成的,因此无法永久删除它。

% cat /etc/resolvconf/run/interface/eth0
search ap-northeast-1.compute.internal
nameserver 172.16.0.23

我的私人DNS条目在这里:

% cat /etc/resolvconf/resolv.conf.d/base
nameserver 10.0.1.185
nameserver 10.100.0.130

请帮忙。

7 个答案:

答案 0 :(得分:9)

我想我刚刚解决了一个非常类似的问题。我被Amazon EC2糟糕的内部DNS服务器所困扰,所以我想运行一个本地缓存dnsmasq守护进程并在/etc/resolv.conf中使用它。起初我刚刚做了echo nameserver 127.0.0.1 > /etc/resolv.conf但后来我意识到在重启或DHCP租约刷新后,我的更改最终会被DHCP客户端覆盖。

我现在所做的是编辑/etc/dhcp3/dhclient.conf并取消注释行prepend domain-name-servers 127.0.0.1;。您应该能够以非常类似的方式使用prepend指令。

更新:这些说明基于Ubuntu Linux,但我认为一般概念也适用于其他系统,即使其他DHCP客户端也必须具有类似的配置选项。

答案 1 :(得分:5)

我从另一个方向接近这个问题(想要内部名称服务器),我所学到的很多东西都可能是有意义的。

有几个选项可以控制VPC管理控制台中的名称解析。

VPC -> DHCP option sets -> Create dhcp option set

您可以在那里指定自己的名称服务器。 http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html 请务必将此dhcp选项集附加到您的VPC以使其生效。

或者(我发现错误)如果在VPC设置中禁用了以下设置,则不会设置本地DNS服务器:

DnsHostnames

DnsSupport

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html

也可以在本地覆盖设置(如果您在vpcs之间移动实例,则会注意到这一点)。 /etc/dhcp/dhclient.conf

以下行可能会引起关注:

prepend domain-name-servers

当然,更改会在dhclient start上生效。

答案 2 :(得分:2)

How do I assign a static DNS server to a private Amazon EC2 instance running Ubuntu, RHEL, or Amazon Linux?

简短说明

  

与虚拟私有云(VPC)关联的EC2实例的默认行为是在启动时使用动态主机配置协议(DHCP)请求DNS服务器地址。 VPC使用内部DNS服务器的地址响应DHCP请求。 DHCP响应中返回的DNS服务器地址被写入本地/etc/resolv.conf文件,并用于DNS名称解析请求。重新启动实例后,对resolv.conf文件的任何手动修改都会被覆盖。

分辨率

  

要配置运行Linux的EC2实例以使用静态DNS服务器条目,请使用文本编辑器(例如vim)编辑文件/etc/dhcp/dhclient.conf并将以下行添加到文件末尾:

supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;

Ubuntu - dhclient.conf - DHCP client configuration file

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.

The prepend statement

prepend [ option declaration ] ;

If for some set of options the client should use a value you  supply,  and  then  use  the
values  supplied  by  the  server,  if  any,  these  values  can be defined in the prepend
statement.  The prepend statement can only be used for options which allow more  than  one
value  to  be  given.   This restriction is not enforced - if you ignore it, the behaviour
will be unpredictable.

The append statement

append [ option declaration ] ;

If for some set of options the client should first use the values supplied by the  server,
if  any,  and  then  use  values  you  supply,  these  values can be defined in the append
statement.  The append statement can only be used for options which allow  more  than  one
value  to  be  given.   This restriction is not enforced - if you ignore it, the behaviour
will be unpredictable.

答案 3 :(得分:1)

这就是我们为环境中的服务器所做的工作。

interface "eth0"
{
 prepend domain-name-servers 10.x.x.x;
 supersede host-name "{Hostname}";
 append domain-search "domain";
 supersede domain-name "DOMAIN";
}

希望这会有所帮助。

答案 4 :(得分:0)

在这里有人带来解决方案,基本上使用rc.local

替换启动时的文件

https://forums.aws.amazon.com/thread.jspa?threadID=74497

  
      
  1. 编辑/ etc / sysconfig / network-scripts / ifcfg-eth0说PEERDNS = no
  2.   
  3. 使用您想要的内容创建名为/etc/resolv.backup的文件
  4.   
  5. 将以下两行添加到/etc/rc.local:
  6.         

    rm -f /etc/resolv.conf cp /etc/resolv.backup /etc/resolv.conf

答案 5 :(得分:0)

以下内容适用于AWS EC2的Debian扩展。

只需创建/etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

#!/bin/sh
make_resolv_conf(){
        :
}

然后,您可以修改/etc/resolv.conf,它将在重新启动后保留您的更改。

答案 6 :(得分:-3)

在crontab中设置为

@reboot cp -r /home/.../resolv.conf /etc/resolv.conf