我正在处理 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服务器。
任何人都有任何想法?
答案 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表可能无法作为服务运行。寻找操作系统特定的操作,这是广泛记录的。