Ubuntu 从 DHCP 获取错误主机名

Ubuntu 从 DHCP 获取错误主机名

在配置新的 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)以请求域搜索参数并执行正确的操作。

相关内容