0

我正在开发udhcpd,这是一个带有繁忙盒的轻型 dhcp 服务器

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

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

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

现在virtual box有多种组网方式。我都试过了。最简单的 NAT 允许 vm 在没有任何配置的情况下使用我的 windows 互联网。

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

两者都在同一个接口上,即 eth0,我可以看到从 0.0.0.0 到 255.255.255.255 的广播请求,用于 dhcp discover。但是 udhcpd - dhcp 服务器,从不接收和回答请求

我还尝试先为 dhcp 客户端分配一个 ip,即 192.168.0.2。

但永远得不到回应。

如果我使用 NAT 或其他运行 Virtual Box 自己的 dhcp 服务器的模式,那么它是响应 dhcp 发现的服务器,而我的 udhcpd 来自繁忙的盒子仍然没有选择数据包。

我感觉跟udhcpd服务器的子网掩码有关系。

任何人有任何想法?

4

1 回答 1

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 端口添加了一个条目,如下所示:

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

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

service iptables restart

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

于 2012-03-27T10:06:01.720 回答