首先让我描述一下我的环境:
- 有一个 VM (CentOS) 充当网关
- 网关虚拟机有两个网卡,eth0 连接公网,eth1 连接私网
- eth0 从公网 DHCP 服务器获取 IP
- 网关包含一个 DHCP 服务器,它通过 eth1 为私有网络提供 IP
- 由于内网需要访问公网,所以在网关虚拟机上开启了NAT,因此在网关虚拟机上将ip_forward设置为1。
现在我面临的问题是,当我在公共网络上部署新的虚拟机时,虚拟机从网关虚拟机的 DHCP 服务器获取 IP。但网关的 DHCP 服务器应该只向私有网络提供 IP。
如何防止网关的DHCP服务器向公网提供IP?
答案1
DHCP 使用广播流量进行发现过程。路由器不转发广播流量。
如果您路由器“内部”/eth1 侧的虚拟机从“外部”/eth0 侧的调制解调器/路由器获取租约,则两个网络之间某处存在一座桥;要么您的“路由器”实际上是一座桥(路由器上是否有一个名为br0
或类似的接口?),要么您使用的是同一个交换机,或者某些地方打了错补丁等等。
编辑:我刚刚重读了你的问题,我可能误解了。你想阻止“公共”网络上的客户端从该网络上的 DHCP 服务器获得租约,但该服务器不是你的“网关”服务器?
答案2
如果您在 DHCPDARGS=eth1 之后已经重新启动了 DHCP 服务器,但问题仍然存在,则需要采取一些措施来找出问题所在。
检查 DHCP 是否确实在 eth0 上运行。例如,使用“netstat -tulpn”。如果它仍在 eth0 上运行 - 则 DHCP 服务器的配置存在问题。
如果没有,请检查虚拟机,看看它从哪里获取 IP。例如:
少/var/lib/dhcp3/dhclient.leases
正如 fukawi2 所写,也许您的 DHCP 配置没有问题,只是您的公共网络和私有网络已连接/桥接?
再次,您在“公共”网络中有多少台主机?由于您在那里有 2 个 DHCP 服务器,它们的配置现在是否也乱套了?如果一个虚拟机从错误的 DHCP 获取 IP,其他主机应该也会有类似的问题。