最近、自宅ネットワークで新しいパソコンが、ネットワークに接続できなくなるトラブルが発生する。 再起動などがかかれば、普通にネットワークにつながるので、多少不気味ながらもそのままだった。 しかし、うちの奥さんのノートPCも、出先から帰ってきたらつながらない。 IPアドレス取得に失敗しているっぽいので、dhcpサーバの設定を疑う。
今まで、長年運用していた dhcpd.conf ファイルなので、壊したとも思えなかったが、 試しに、dhcpサーバの再起動をすると、普通に接続が回復した。 ということで、 "grep dhcpd /var/log/syslog"で履歴を眺めると、下記のようなメッセージが あったので、色々と調べてみた。
...: DHCPINFORM from 192.168.X.XX via eth0: not authoritative for subnet 192.168.X.0 ...: If this DHCP server is authoritative for that subnet, ...: please write an `authoritative;' directive either in the ...: subnet declaration or in some scope that encloses the ...: subnet declaration - for example, write it at the top ...: of the dhcpd.conf file.
DHCPサーバは、クライアントが使いたいIPアドレスを要求してきたとき、 サーバがこのセグメントでは正しくないと"DHCPNAK"を返すことで、 クライアントは新しいIPアドレスを要求する。 どうも、この辺で"威厳のない"設定だと、再取得に問題がでるみたい。 "とっとと新しいアドレスを要求してこんかぃ"と、「威厳をもって」返答するために、 subnet文の内部に"authoritative;"を書くといいみたい。 当初、"authoritative"を記載させてみたけど、端末をau回線に切り替えてから、自宅回線にもどすと、やはりDHCPでアドレスが取れなかった。逆に、"not authoritative"を記載したら、うまく繋がった。うーん、よくわからん….
subnet 192.168.X.0 netmask 255.255.255.0 { not authoritative; (略) }