我在网络上有一些机器。这个网络有一个 DHCP 服务器 - 我无法控制它,也没有 DNS 服务器,也就是说,DHCP 租约将您引向一些 ISP 的服务器,并且不为本地机器名称提供 IP。我计划安装一个 dnsmasq 来解决这个问题。但是,我将在其上安装 dnsmasq 的机器本身通过 DHCP 获取其 IP。因此,我需要其他机器动态地确定 dnsmasq 机器的 IP 地址。
我想到的解决方案是使用 DHCP 客户端从此 dnsmasq 服务器获取租约。现在,我能想到两种可行的方法:
- 每台机器 M 从主 DHCP 服务器获取其 IP;在接口启动时,它们运行另一个 DHCP 客户端实例,这次仅限于发出一些请求,并由 dnsmasq 服务器进行应答。然后 M 接受我们获得的租约,不更新 IP,而是将 DHCP 写入 /etc/resolv.conf
- 每台机器 M 仅使用一次 DHCP 客户端,从 dnsmasq 机器获得响应;该机器也将运行 DHCP 代理,但在从原始 DHCP 服务器返回回复时,它将 (a) 重写租约,将自己作为 DNS 服务器,以及 (b) 记下 M(由 MAC 标识)获得某个 IP xyzw 。假设它有一个 MAC 到名称表,那么它可以动态地提供给 DHCP 服务器。
有这样的软件包吗?这样做可取吗?您认为这两种选择哪种更好?
笔记:当然,在这种情况下,合理的做法是集中设置一个由中央 DHCP 服务器提供的 DNS;或者为 DNS 服务器获取一个静态 IP,在这种情况下,您可以忽略您获得的 DHCP 租约的 DNS 服务器条目。但这不是一种选择,原因与此无关。不可能访问或控制任何中央行为或服务,也不可能为任何东西获取固定的 IP 地址。
答案1
非常简单,使用 DHCP 预留。记下您要运行的机器的 MAC 地址dnsmasq
,然后配置您的 DHCP 服务器以始终为该 MAC 提供特定的 IP 地址。
您没有提供有关您正在使用的 DHCP 服务器的任何详细信息(或者它是 Windows 还是 Linux),但这里有一些指南:
设置 DHCP 保留后,只需在 DHCP 的 DNS 配置中使用您保留的 IP。
第二种完全不同(且更标准)的方法是使用 DHCP 范围之外的静态 IP 手动配置 DNS 服务器。
答案2
我认为你的做法完全错误。有些东西必须有一个固定地址,这就是你提议的 DNS 的工作方式希思罗宾逊会感到自豪。
将当前 DHCP 服务器配置为充当 DNS 服务器和转发器。
编辑:这里正确的做法是与控制 DHCP 服务器的人员交谈并与他们合作以按照您需要的方式配置机器。
答案3
您可以在 IPv6 中使用路由通告来实现这一点(如果设置了正确的位,RA 会导致 SLAAC 或其他机制分配地址,然后导致主机向 DHCPv6 服务器查询选项)。但是,在 IPv4 中,除非 DHCP 服务器分发地址,否则它不能分发任何选项。地址协商是 DHCPv4 的核心功能;其他一切都是附加的。