在配置新的 Ubuntu Precise (12.04) 服务器时,它们获取的主机名似乎是从 DNS 搜索路径生成的,而不是对主机名的反向查找。
采取以下配置
BIND 配置了主机名和反向名称
正常区域 $TTL 600 $ORIGIN srv.local.net。
@ IN SOA ns0.local.net. hostmaster.local.net. (
2014082101
10800
3600
604800
600 )
@ IN NS ns0.local.net.
@ IN MX 5 mail.local.net.
my-new-server IN A 10.32.2.30
并反向 @ IN SOA ns0.local.net.hostmaster.local.net。(2014082101 10800 3600 604800 600)
@ IN NS ns0.local.net.
$ORIGIN 32.10.in-addr.arpa.
30.2 IN PTR my-new-server.srv.local.net.
然后配置 DHCPD 根据 mac 地址发放静态租约,如下所示
subnet 10.32.2.0 netmask 255.255.254.0 {
option subnet-mask 255.255.254.0;
option routers 10.32.2.1;
option domain-name-servers 10.32.2.1;
option domain-name "util.of1.local.net of1.local.net srv.local.net";
site-option-space "pxelinux";
option pxelinux.magic f1:00:74:7e;
if exists dhcp-parameter-request-list {
option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
}
group {
option pxelinux.configfile "pxelinux.cfg/pxeboot";
host my-new-server {
fixed-address my-new-server.srv.local.net;
hardware ethernet aa:aa:aa:bb:bb:bb;
}
}
}
因此主机名应该是my-new-server.srv.local.net
,但是在构建 Ubuntu 12.04 节点时,主机名最终为my-new-server.util.of1.local.net
构建 Lucid (10.04) 主机时,主机名将是正确的,只有在 Precise/12.04 节点上才会出现问题。
对主机和 IP 进行正常和反向查找均返回正确结果
Sams-MacBook-Pro:~ sam$ host my-new-server
my-new-server.srv.local.net has address 10.32.2.30
Sams-MacBook-Pro:~ sam$ host my-new-server.srv.local.net
my-new-server.srv.local.net has address 10.32.2.30
Sams-MacBook-Pro:~ sam$ host 10.32.2.30
30.2.32.10.in-addr.arpa domain name pointer my-new-server.srv.local.net.
hosts 文件的内容也不正确
127.0.0.1 localhost
127.0.1.1 my-new-server.util.of1.local.net of1.local.net srv.local.net my-new-server
因此,看起来当它创建 hosts 文件时,它会将 DNS 搜索路径的全部内容放入本地地址,因此根据服务器的 FQDN 是定义的短主机名,然后是搜索路径中的第一个域。
有没有办法解决此问题,或者修复此问题以便正确获取主机名?它拾取主机名的第一部分,其余部分是错误的。
答案1
在您的文件中修复它/etc/hosts
,这就是错误所在。主机文件中的名称将覆盖 DNS 中的名称。至于它在安装过程中从哪里获取 util.of1.local.net,它就在您的 DHCP 配置中:
选项域名“util.of1.local.net of1.local.net srv.local.net”;
您可以看到它逐字逐句地插入到/etc/hosts
文件中,包括空格和所有内容......
请记住,domain-name
选项按定义只能包含一个域名,即默认域。但事情就在这里变得复杂了。在较旧的 Linux 平台上,正如这里所见,它会将域名选项中的字符串盲目地粘贴到位置,例如/etc/hosts
,它还会将其放入/etc/resolv.conf
搜索参数中,这实际上为您提供了一个搜索列表集。今天传达这一点的正确方法是使用选项domain-search
,例如,
选项域搜索“util.of1.local.net”,“of1.local.net”,“srv.local.net”;
不幸的是,旧版本 12.04 会忽略该功能,并且不会为您提供搜索列表集。
因此,我认为您只能/etc/hosts
在每次安装后修复其中的问题,因为这是一个一次性的接触点。
您可能知道这一点,但截至撰写本文时,最新的 Ubuntu LTS 版本是 14.04.1。与 12.04 相比,该 LTS 版本修复了大量错误,如果可能的话,您确实应该使用 14.04.1。您可以配置 DHCP 客户端(在 中/etc/dhcp/dhclient.conf
)以请求域搜索参数并执行正确的操作。