RC版はRC版です。(ISC DHCPの4.1.0rc1の不具合)

土偶家のネットワークは繋いできたPCに対してDHCPサーバーからIPアドレスを割当てるようになっているのだが、新しく作ったサーバーでコンパイルしたdhcpdがまともに動いていなかったことに気づいた。
デーモン自体は特に問題なさそうに起動しているものの、クライアントを変えても、confを変えても駄目。
エラーログを吐くでもなく、パニックして落ちるでもなく、クライアントはアドレスをもらえない。
dhcpd -f -d でフォアグラウンドで起動しつつ、ログをファイルでなく標準エラー出力に出すように設定してデバッグするも特に怪しいところは見つからない。
一応クライアントが繋ぎに来ると

Dec 3 00:22:39 サーバーホスト名 dhcpd: [ID 702911 daemon.info] DHCPDISCOVER from 00:80:45:XX:XX:cd via dmfe0
Dec 3 00:22:40 サーバーホスト名 dhcpd: [ID 702911 daemon.info] DHCPOFFER on 192.168.X.xxx to 00:80:45:XX:XX:cd (クライアントホスト名) via dmfe0

と応答しているっぽいのだが、クライントPCのIPアドレスは更新されない。なんでやねん。
わかりにくさという点で一番性質の悪い不具合である。


数日考えに考えたけど全くわからない。
ということで、試しに、枯れに枯れてバグとセキュリティフィックスしかされないことが宣言されている古いバージョンをコンパイルして、生成されたdhcpdだけをコピーして動作させてみると、まともに動くではないか。
ちゃんとIPアドレスも割当てられ、DNSにも登録された。
ちなみに動かなかったのはisc-dhcpのバージョン4.1.0rc1で、動いたのはバージョン3.0.7である。
動かなかった4.1.0rc1はrc版ということで不具合があるかもという位置づけやけど、ここまで動かないのは珍しいのではないだろうか?
と言うことで、正常に動作するときのログはこんな感じ。

Dec 3 00:48:52 サーバーホスト名 dhcpd: [ID 702911 daemon.info] DHCPDISCOVER from 00:80:45:XX:XX:cd via dmfe0
Dec 3 00:48:53 サーバーホスト名 dhcpd: [ID 702911 daemon.info] DHCPOFFER on 192.168.X.xxx to 00:80:45:XX:XX:cd (クライアントホスト名) via dmfe0
Dec 3 00:48:53 サーバーホスト名 dhcpd: [ID 702911 daemon.info] DHCPREQUEST for 192.168.X.xxx (192.168.Y.yyy) from 00:80:45:XX:XX:cd (クライアントホスト名) via dmfe0
Dec 3 00:48:53 サーバーホスト名 dhcpd: [ID 702911 daemon.info] DHCPACK on 192.168.X.xxx to 00:80:45:XX:XX:cd (クライアントホスト名) via dmfe0

動作しないときのログと、動作するときのログの違いを見る限り、クライアントからの要求であるDHCPREQUESTがサーバーに届いていないようだ。
調べてみるとこのDHCPREQUESTはブロードキャストで送られるらしく、クライアントがパケットを送っていないというのは考えにくいので、サーバーがブロードキャストのパケットを受け取っていないということになりそうだ。
家のDHCPサーバーになっている新ソラリス君は物理NICが二つ搭載されており、一方がもうひとつのフェイルオーバーとして動作する設定にしているので、二つの物理NICでIPアドレスが三つ、更にsolarisコンテナ内の一つのゾーンにIPアドレスが二つ割り当ててあるので、合計5つのIPアドレスが割当てられた仮想NICが動いているという微妙に複雑な構成になっている。
dhcpdのデバッグ中にこの仮想NICの一つを待ち受けインターフェイスにしようとしてもならず、物理NICでしか待ち受け出来なかったので、恐らく、DHCPサーバーの待ち受けていない仮想NICが一番にブロードキャストを受け取ってしまったりするような類の問題が起こっているのだろう。
と言うことで、フェイルオーバー動作、solarisコンテナを使っている場合のDHCPサーバー作りには注意である。
しかしこの顛末で、やっぱりベータ版とかrc版てのはあくまでテスト版やねんから、ちゃんと使うには向いてないことを改めて痛感したのであった。

コメントする

メールアドレスが公開されることはありません。

PAGE TOP