我有一组 ec2 实例(ubuntu trusty 14.04),我从未对其进行过任何特殊的 dhcp 配置。它位于具有默认 dhcp 选项的 VPC 上。
出于某种原因,大约每 25 分钟,我就会在日志中看到这个
(IP 和 xid 已被清除)
DHCPREQUEST of 172.16.1.111 on eth0 to 172.16.0.1 port 67 (xid=0x0000000c)
DHCPACK of 172.16.1.111 from 172.16.0.1
bound to 172.16.1.111 -- renewal in 1693 seconds.
(确切的秒数在 1300 至 1700 之间变化。)
有时,例如每 10 天一次,此续订会破坏 DNS,并且我正在运行的应用程序将开始出现错误,例如getaddrinfo: Name or service not known.
一旦续订在大约 25 分钟后再次运行,问题就解决了。我已经通过等待失败并手动续订 dhclient 租约(sudo dhclient -v -r eth0
然后sudo dhclient -v eth0
)进行了测试,并发现可以立即解决问题。
我有两个问题:
为什么更新时间是这个奇怪的~25分钟数字?我知道我可以通过conf文件设置它,但这似乎是一个奇怪的默认值。
为什么有时会中断 DNS 解析?这是这里的主要问题。我的其他 ec2 实例组也有这个较短的 DHCP 续订时间,但只有这一组实例存在问题,即在 DHCP 续订时,DNS 偶尔会中断。
答案1
我猜你收到了一个带有错误 DNS 服务器 IP 的 DHCP 续订 - 你是否在中断期间检查过 /etc/resolv.conf 的内容并将其与正常运行时的内容进行了比较?
但是,最好不要猜测,因为您可以收集更多数据来准确了解正在发生的事情。尝试使用以下命令捕获 DHCP 流量:
tcpdump -c 10000 -w /var/tmp/dhcpdump.tcp -i INTERFACE port bootpc or port bootps
其中“INTERFACE”是 eth0 或任何主接口的名称。这将捕获服务器上的 DHCP 流量(在 10k 个数据包后自动退出,因此如果您忘记正在运行的任务,它不会填满您的磁盘)。再次遇到问题后,使用“tcpdump -v -r FILE”或 Wireshark 查看嗅探文件。这应该会向您展示导致问题的 DHCP 更新的不同之处。
如果您发现导致问题的 DHCP 续订存在明确的模式,请联系 Amazon 支持,并向他们发送嗅探文件或显示良好和不良续订的解码输出。
至于租约时间,这没什么不寻常的。管理 DHCP 服务的人员决定他们想要较短的租约。也许其他客户每 15 分钟创建和销毁一次实例,因此他们希望在 IP 不再使用时为其他客户恢复该 IP。