如何使dhcp服务器在虚拟机框中监听广播请求

时间:2012-03-21 11:49:56

标签: virtualbox dhcp busybox

我正在处理 udhcpd ,一个繁忙框附带的轻量级dhcp服务器

我做了一些代码更改并测试了我需要运行udhcpd,从客户端发送请求(获取ip)并查看其响应。

这需要多台机器,对我来说合适的选择是使用多个虚拟机箱。

我使用了两个Linux VM(用于运行udhcpd的Fedora和用于运行udhcpc的ubuntu - 一个用于生成dhcp请求的繁忙盒子的客户端)。

现在,在虚拟盒子中有多种联网模式。我试过了所有这些。最简单的NAT允许vm在没有任何配置的情况下使用我的Windows Internet。

我尝试了各种类型的虚拟盒卡,即仅主机,内部网络,并为fedora分配了192.168.0.1地址,这是udhcpd,并从udhcpc客户端发送dhcp发现请求。

两者都在同一个接口上,即eth0,我可以看到从0.0.0.0到255.255.255.255的dhcp发现的广播请求。但是udhcpd - dhcp服务器,永远不会收到并回复请求

我还尝试首先将ip分配给dhcp客户端,即192.168.0.2。

但永远不会得到回应。

如果我使用NAT或其他运行虚拟机自己的dhcp服务器的模式,那么它是响应dhcp发现的服务器,而忙碌框中的我的udhcpd仍然不会选择数据包。

我觉得它与子网掩码有关,可能是udhcpd服务器。

任何人都有任何想法?

1 个答案:

答案 0 :(得分:0)

我的不好,Fedora VM(ip表)中的防火墙默认阻止了传入连接。

这是允许的方式。

打开并编辑/ etc / sysconfig / iptables

vi / etc / sysconfig / iptables

会有以下几个条目:

  

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5800 -j ACCEPT

     

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5900 -j ACCEPT

     

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6000 -j ACCEPT

我为dhcp端口添加了一个条目,如下所示:

-R RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 67 -j ACCEPT

保存并关闭文件。重启iptables:

service iptables restart

请注意,基于ubuntu或debian的Linux发行版上的命令会有所不同,因为这些平台上的ip表可能无法作为服务运行。寻找操作系统特定的操作,这是广泛记录的。