3

私の疑問はかなり奇妙です..

私のLinuxサーバーでは、DHCPサーバーアプリケーションがポート番号547でdhcpクライアントメッセージを待機しています。

Wiresharkでdhcpクライアントからのメッセージが表示されていますが(Linuxサーバーで実行されています)..dhcpサーバーが応答していません。

パケットが実際にdhcpサーバーによって処理されているか、Linux IPスタックによってその間にドロップされていることを確認する方法はありますか?

DHCPサーバーは独自のコードであるため、ログを追加したり、recv関数で確認したりするために変更することはできません。

DHCP固有ではなく、ソケットに基づく一般的な質問と考えてください。私の興味は、統計やその他のものから、パケットが適切なソケットバッファで受信されたことをどのように知ることができるかということです。

4

2 に答える 2

0

これを行うには、デバッグシンボルを使用してDHCPサーバーを構築します。ディストリビューションにはすでに*-dbgパッケージが用意されている可能性があります。gdbのようなデバッガーをプロセスにアタッチすることで、メッセージをインターセプトしてデバッグし、問題がどこにあるかを確認できます。

ただし、最初は通常の可能性、つまりログメッセージを使用して作業しようとします。DHCPデーモンでデバッグログをアクティブ化しようとしましたか?

于 2011-09-10T12:33:50.107 に答える
0

dhcpサーバーでstraceを実行しても、selectから何も返されない場合は、フレームを受信して​​いない可能性があります。確認すべき点がいくつかあります

  • クライアントがIPv4(ポート67)ではなくIPv6 DHCP要求を送信していることを確認しますか?
  • サーバーのポート547で他のプロセスがリッスンしていないことを確認してください。

straceコマンドラインオプションを再確認し、デバッグと冗長性を有効にします。straceを使用するときに確認するもう1つのことは、フォークをフォローすることです... -Ff

お役に立てば幸い

于 2011-09-10T17:41:48.080 に答える