3

我的怀疑很奇怪..

在我的 Linux 服务器上,DHCP 服务器应用程序正在端口号 547 上等待 dhcp 客户端消息。

即使我在wireshark(在我的Linux服务器上运行)上看到来自dhcp客户端的消息..dhcp服务器没有回复。

无论如何确认数据包实际上是由 dhcp 服务器处理还是由 Linux ip stack 丢弃?

DHCP 服务器是专有代码,因此我无法修改它以添加更多日志或检查 recv 功能。

只需将其视为基于套接字而不是特定于 DHCP 的通用问题。我的兴趣是我们如何从统计信息或其他内容中知道数据包已在适当的套接字缓冲区中收到。

4

2 回答 2

0

如果您在 dhcp 服务器上运行 strace 并且它没有从 select 中得到任何返回,那么它很可能没有收到帧。有几件事要检查

  • 您确定您的客户端发送的是 IPv6 DHCP 请求而不是 IPv4(端口 67)吗?
  • 确保没有其他进程正在侦听服务器上的端口 547。

重新检查您的 strace 命令行选项并启用调试和详细程度。使用 strace 时要确保的另一件事是遵循分叉... -Ff

希望有帮助

于 2011-09-10T17:41:48.080 回答
0

您可以通过使用调试符号构建 DHCP 服务器来做到这一点 - 您的发行版可能已经为此准备好了 *-dbg 包。通过将 gdb 之类的调试器附加到进程中,您可以截获消息并对其进行调试以查看问题所在。

但是,我首先会尝试使用通常的可能性,即日志消息。您是否尝试过在您的 DHCP 守护程序中激活调试日志记录?

于 2011-09-10T12:33:50.107 回答