我有几台运行 bind9 的服务器、一台客户端和一台 DNS 服务器。所有服务器都在虚拟机中运行 Ubuntu 18.04。
我想更改 DNS 正向区域文件以更改其中一台服务器的 IP 地址。在 DNS 服务器中更改后,我运行:
sudo systemctl restart bind9
然后在客户端中,我清除浏览器中的历史记录和文件。然后我还使用以下命令刷新 DNS:
sudo /etc/init.d/networking restart
但是当我访问刚刚在 DNS 中更改其 IP 的服务器时,客户端仍然在浏览器中看到旧的 IP 内容。即 DNS 似乎解析为旧 IP(这是一个活动服务器)。
但是,当我重新启动客户端和 DNS 服务器时,分辨率会更新,服务器会解析为新的 IP,而客户端会获得我假设的页面。
我觉得有些东西没有立即刷新 DNS 区域文件更改。请注意,我在保存区域文件之前更新了序列号。
还有一些其他值,我不知道它们是否会导致更改生效延迟?
这些是正向区域文件开头的值:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns222.com. boss.com. (
9 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
答案1
你可以使用以下方式设置默认时间,以在区域开始时
$TTL 604800
也就是7天。
尽管当您在主区域文件中进行了更改并重新加载区域时,您的名称服务器将立即开始返回更新的记录;除非您在特定记录上设置了不同的生存时间(在您打算更改它们之前),否则这就是记录将被任何合理的解析器缓存多长时间以及您的更新需要多长时间才能生效。
与其使用 Web 浏览器测试 DNS 问题,不如使用更合适的工具dig
我目前没有可用的 Ubuntu 18,但据我所知,它默认也使用 systemd 解析器,如果清除 DNS 缓存只需要适当的 systemd 子命令而不是重新启动网络,我也不会感到惊讶
sudo systemd-resolve --flush-cache