linux – 通过DNS查找通过DHCP分配固定IP地址

前端之家收集整理的这篇文章主要介绍了linux – 通过DNS查找通过DHCP分配固定IP地址前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
前言

我正在使用Ubuntu 14.04和LXC构建虚拟化环境.我不想编写自己的模板,因为从12.04升级到14.04表明无法保证向后兼容性.

因此,我使用默认的Ubuntu模板通过lxc-create部署我的虚拟机.服务器的DNS由Amazon Route 53提供,因此不需要本地DNS服务器.

我还使用Puppet来配置我的服务器,因此我希望尽可能减少部署中的手动操作.

现在,默认的Ubuntu模板通过DHCP分配IP地址.因此,我需要一个本地DHCP服务器为节点分配IP地址,因此我可以通过SSH连接它们并让Puppet运行.由于Puppet需要正确的DNS设置,因此无法分配临时IP地址,客户端需要从一开始就获得正确的主机名和IP地址.

我使用什么DHCP服务器,如何通过对该主机名执行DNS查找,仅根据主机名DHCP选项分配IP地址?

我试过的

我尝试使用ISC DHCP服务器使其工作,但是,手册明确指出:

Please be aware that only the dhcp-client-identifier option and the hardware address can be used to match a host declaration,or the host-identifier option parameter for DHCPv6 servers. For example,it is not possible to match a host declaration to a host-name option. This is because the host-name option cannot be guaranteed to be unique for any given client,whereas both the hardware address and dhcp-client-identifier option are at least theoretically guaranteed to be unique to a given client.

我还尝试创建一个匹配主机名的类,如下所示:

class "my-client-name" {
    match if option host-name = "my-client-name";
    fixed-address my-client-name.my-domain.com;
}

不幸的是,类语句中不允许使用fixed-address选项.我可以将它替换为1个大小的池,它按预期工作:

subnet 10.103.0.0 netmask 255.255.0.0 {
    option routers 10.103.1.1;

    class "my-client-name" {
        match if option host-name = "my-client-name";
    }
    pool {
        allow members of "my-client-name";
        range 10.103.1.2 10.103.1.2;
    }
}

但是,这需要我在两个地方(Amazon Route53和DHCP服务器)管理IP地址,我不想这样做.

关于安全

由于这仅用于内部网络的自举阶段,然后被Puppet的静态网络配置所取代,从安全角度来看,这不应成为问题.但是,我知道虚拟机引导了“ubuntu:ubuntu”凭据,一旦运行,我打算修复它.

解决方法

希望您可以控制虚拟以太网接口的硬件MAC地址.

在那种情况下,我遇到了类似的问题,ISC绑定与我的配置工作同样不合作.我可靠地使用多年的最佳解决方案是编辑leases file,以便将所需的IP地址分配给相应的硬件MAC.

首先,您只需启动客户端来填充租约文件.然后停止客户端并绑定,然后编辑租约文件.

原文链接:https://www.f2er.com/linux/395683.html

猜你在找的Linux相关文章