使用 dhclient.conf 的 resolv.conf 自定义名称服务器在 Google Cloud 上被删除

使用 dhclient.conf 的 resolv.conf 自定义名称服务器在 Google Cloud 上被删除

根据https://cloud.google.com/compute/docs/internal-dns 我在末尾添加了这个,/etc/dhcp/dhclient.conf以便在 resolv.conf 上有一个自定义名称服务器

prepend domain-name-servers x.x.x.x;

service networking restart在resolv.conf 文件中填充自定义名称服务器之后。

问题是几个小时后(大约 12 个小时),有时会更多(我找不到确切的时间)dhcp 租约从 resolv.conf 中删除名称服务器

这是发生该事件时的系统日志输出:

normal syslog output
...
dhclient[30756]: DHCPREQUEST of 10.207.0.40 on eth1 to 169.254.169.254 port 67
dhclient[30756]: DHCPACK of 10.207.0.40 from 169.254.169.254
liblogging-stdlog:  [origin software="rsyslogd" swVersion="8.24.0" x-pid="11655" x-info="http://www.rsyslog.com"] exiting on signal 15.
systemd[1]: Stopping System Logging Service...
systemd[1]: Stopped System Logging Service.
systemd[1]: Starting System Logging Service...
dhclient[30756]: bound to 10.207.0.40 -- renewal in 35134 seconds.
liblogging-stdlog:  [origin software="rsyslogd" swVersion="8.24.0" x-pid="26725" x-info="http://www.rsyslog.com"] start
systemd[1]: Started System Logging Service.
...
normal syslog output

我不知道为什么 syslog 停止并再次启动......

对于写入 resolv.conf 文件的内容有什么想法吗?

答案1

文件 resolv.conf 被反复覆盖的原因是您的实例上的 DHCP 租约已过期。文档 [1] 中写道:

每次实例的 24 小时 DHCP 租约到期时,手动编辑 resolv.conf 将导致其恢复为默认 DHCP。在使用区域 DNS 的实例上,DHCP 租约每小时到期一次。为了在 resolv.conf 文件中进行静态修改,多个 Linux 发行版允许将项目添加到 DHCP 策略的前面或后面。

24 小时租约不是 SLO,因此这可能会更早发生。

由于您处于云环境中,因此您可以resolv.conf通过在云 DNS 上进行一些配置来实现编辑的相同行为:

A)如果要覆盖 DNS 以使用 ON PREM DNS,可以创建“DNS 服务器策略”[2] [3] [4]

B)如果您想使用自己的绑定(在您的项目内部)创建内部区域,则可以使用 Cloud DNS 私有区域 [5]

在云环境中,覆盖永远不是一个好主意resolv.conf

[1]https://cloud.google.com/compute/docs/internal-dns#resolv.conf

[2]https://cloud.google.com/dns/docs/overview#dns-server-policy

[3]https://medium.com/fourcast-premier-google-cloud-partner/google-cloud-platform-dns-forwarding-is-a-big-thing-for-enterprises-305df0c6cf73

[4]https://cloud.google.com/dns/docs/best-practices-dns#best_practices_for_private_zones

[5]https://cloud.google.com/dns/zones/#creating_private_zones

相关内容