如何防止部署过程访问DNS服务器?

如何防止部署过程访问DNS服务器?

我注意到,在使用预置种子部署虚拟机时,预置种子中指定的主机名将被忽略,而使用 DNS 服务器中的主机名。

详细说明

Ubuntu Server 计算机的部署使用:

virt-install \
    --name custom-name \
    --initrd-inject /some-path/preseed.cfg \
    --extra-args "preseed/file=preseed.cfg" \
    ...

预置文件包含以下几行(请注意custom-name第二行的值):

...
d-i netcfg/disable_dhcp boolean true
...
d-i netcfg/get_hostname string custom-name
d-i netcfg/get_domain string pelicandd.com
d-i netcfg/get_ipaddress string 192.168.1.35
...

另一方面,DNS 服务器包含 A 记录:

demo    IN A       192.168.1.35

以及 PTR 记录:

35      IN  PTR     demo.example.com.

一旦创建了机器,它就会/etc/hostname包含以下内容:

demo

其中/etc/hosts包含:

127.0.0.1       localhost
192.168.1.35    demo.example.com     demo

问题

我对部署过程访问 DNS 服务器来获取信息这一事实并不满意。这不仅耗时,而且在某些情况下,DNS 服务器可能会宕机(例如正在部署 DNS 服务器本身的情况)。

我应该在预置中指定什么来阻止安装程序访问 DNS 来检索预置中已有的信息?

答案1

RTFM 有帮助。来自Debian 的预置示例

# Any hostname and domain names assigned from dhcp take precedence over
# values set here. However, setting the values still prevents the questions
# from being shown, even if values come from dhcp.
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain

# If you want to force a hostname, regardless of what either the DHCP
# server returns or what the reverse DNS entry for the IP is, uncomment
# and adjust the following line.
#d-i netcfg/hostname string somehost

这意味着这netcfg/get_hostname无关紧要:其唯一目的是首先阻止安装程序提出问题。

确实,当我设置的值时netcfg/hostname/etc/hostname和都/etc/hosts包含预置种子中指定的值,忽略 DNS PTR 记录。

相关内容