在 Amazon Linux AMI 2017.03 上更改为静态 DNS 服务器

在 Amazon Linux AMI 2017.03 上更改为静态 DNS 服务器

我快疯了,因为这应该很容易,尤其是按照亚马逊的文档操作时。我一直在用这个参考自亚马逊

只是尝试更改 AWS EC2 实例用于解析域名的 DNS 服务器。编辑了 /etc/sysconfig/network-scripts/ifcfg-eth0,设置了 PEERDNS=no,添加了 DNS1=10.0.0.11,保存,重新启动,没有成功:仍然在 /etc/resolve.conf 中看到 10.0.0.2 名称服务器,测试对内部服务器 FQDN (server.mycorp.company.com) 的 ping 失败,因为它需要我们的内部 DNS 服务器来解析名称。如果我手动编辑 resolv.conf 并更改名称服务器行以反映我们的 DNS 服务器 10.0.0.11,则 ping 可以正常工作。

据我所知,服务器正在运行最新的 Amazon Linux AMI,2017.03。完成 /etc/sysconfig/networking-scripts/ifcfg-eth0:

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=no
DHCPV6C=yes
DHCPV6C_OPTIONS=-nw
PERSISTENT_DHCLIENT=yes
RES_OPTIONS="timeout:2 attempts:5"
DHCP_ARP_CHECK=no
DNS1=10.0.0.11

* 已更改 IP 地址以保护无辜者

答案1

我认为 AWS 文档不正确。/etc/sysconfig/networking-scripts/ifcfg-eth0 中的设置PEERDNS=no将阻止任何更新将反映到 resolv.conf 文件中。因此您有 2 个选项:

  1. 留下PEERDNS=yes并添加DNS1=DNS2=...
  2. 直接在resolv.conf中设置PEERDNS=no和更改nameserver

使用 Linux AMI 2017.03 进行测试

答案2

对于这个问题的未来读者,请注意问题中的 AWS 文章已经被不同的指令取代

这些建议不是编辑特定的网络接口配置,而是更改 DHCP 客户端配置以忽略 DHCP 提供的 DNS 服务器。

  1. 编辑/etc/dhcp/dhclient.conf
  2. 添加一行形式supersede domain-name-servers a.b.c.d, e.f.g.h;(其中a.b.c.de.f.g.h是一个或多个 DNS 服务器的 IP 地址)。

这通常会在下次系统启动时生效,但您可以通过重新启动网络接口强制立即读取它:

# RedHat based systems (e.g. RHEL, Fedora, CentOS, Amazon Linux)
/etc/init.d/network restart
# Debian based systems (e.g. Debian, Ubuntu)
/etc/init.d/networking restart

答案3

我认为这里的问题是您试图让 EC2 使用 VPC 之外的 DNS 服务器。我认为这是不可能的。您使用的是 VPN,还是仅依赖 Internet 连接?

AWS 发布了一种方法来实现此目的未绑定DNS 解析器这里。它太大了,无法在此处复制,但它基本上充当了转发器的作用。

相关内容