![是否可以仅为本地主机设置 DHCP 服务器?](https://linux22.com/image/564963/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BB%85%E4%B8%BA%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA%E8%AE%BE%E7%BD%AE%20DHCP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我有一个简单的问题。我在 Ubuntu 服务器上运行了一堆虚拟机(VMWare Workstation),我发现 VMWare NAT(DHCP)服务不可靠且速度很慢。我不得不使用 NAT 而不是桥接,因为我没有足够的静态 IP 供所有虚拟机使用。
是否可以将 Linux 主机(Ubuntu)设置为 DHCP 服务器但仅供本地 VM 使用?
服务器有 2 个 NIC,因此如果我将 eth0 设置为静态 IP,连接到外部工作,并将 eth1 设置为侦听 DHCP。现在,我在想,如果我不想让 DHCP 广播,我只需不将电缆连接到 eth1 并设置虚拟机连接到 eth1 以获取 DHCP 地址。这样,DHCP 就不会通过我的网络广播,而是在该接口上侦听。
这个设置能行吗?
编辑
我必须对 Guest VM 使用 NAT 或 DHCP,因为服务器位于不提供 DHCP 的数据中心,并且我们没有足够的静态 IP。
谢谢。
答案1
我确信您可以使用 iptables 简单地阻止来自其他机器的任何传入 DHCP 请求,但另一个选择是设置您的 DHCP 服务器,使其范围足以为您的虚拟机提供服务,每个虚拟机都应设置预留。这样,即使服务器确实收到了请求,也不会有其他地址可以分发。
答案2
如果你只需要简单的 DHCP 服务器,我建议使用 dnsmasq (http://thekelleys.org.uk/dnsmasq/doc.html)。它是一个强大的 DNS 转发器,但带有集成的 DHCP 服务器。我不确定您是否可以完全禁用 DNS 部分,但如果有问题,您可以在不同的端口上进行配置。
配置 DHCP 是一个配置选项( --dhcp-range ),并且它与更高级的功能相同。
答案3
根据我在 NAT 情况下使用 Virtualbox 4.x 的经验,Virtualbox 在主机内部创建一个虚拟网络,该网络具有自己的 IP 范围和网关(网关是具有静态 IP 的主机),虚拟机位于其中。所有外部访问均通过虚拟网络适配器上的 NAT 网关进行,与任何物理适配器和电缆无关。
因此,在 Virtualbox 下,了解内部 NAT 网络详细信息,可以禁用 Virtualbox DHCP 服务器并在虚拟网络内提供您自己的服务器。
DHCP 不会穿越网关外部,除非经过特殊路由(例如通过 VPN 隧道)。
我无法具体评论 VMWare,但我认为它的工作方式类似。
如果成功,您需要确保提供 DHCP 的虚拟机提供与主机相同的网络详细信息,否则您将无法通过网络访问它们。但是,根据我对 VMWare 的一点经验,您应该有一个可用的控制台会话,以便在失去网络访问权限时配置 DHCP 机器。