中村です。

現在、FreeBSD 6.2-STABLEで自宅サーバーを運用しています。
PPPoEで直接光フレッツ回線に接続し、NATとか設定しないでシンプルに単独の
サーバーとして使っています。

サーバーではbind9を運用しているのですが、サーバーの起動時にPPPoEが
グローバルIPを掴む前にbind9が起動されてしまい、一見して起動しているの
ですが名前解決できない状態になってしまいます。

駄目なケース
Sep 16 16:31:51 ns named[508]: starting BIND 9.3.4-P1 -t /var/named -u bind
Sep 16 16:31:51 ns named[508]: loading configuration from
'/etc/namedb/named.conf'
Sep 16 16:31:51 ns named[508]: listening on IPv4 interface lo0, 127.0.0.1#53
Sep 16 16:31:51 ns named[508]: command channel listening on 127.0.0.1#953
Sep 16 16:31:51 ns named[508]: command channel listening on ::1#953
Sep 16 16:31:51 ns named[508]: zone 0.0.127.IN-ADDR.ARPA/IN: loaded
serial 20061120

サーバー起動後にbind9を立ち上げなおすと解決します。

解決したケース
Sep 16 16:33:36 ns named[960]: starting BIND 9.3.4-P1 -t /var/named -u bind
Sep 16 16:33:36 ns named[960]: loading configuration from
'/etc/namedb/named.conf'
Sep 16 16:33:36 ns named[960]: listening on IPv4 interface lo0, 127.0.0.1#53
Sep 16 16:33:36 ns named[960]: listening on IPv4 interface tun0,
2ww.xxx.yyy.zzz#53
Sep 16 16:33:36 ns named[960]: command channel listening on 127.0.0.1#953
Sep 16 16:33:36 ns named[960]: command channel listening on ::1#953
Sep 16 16:33:36 ns named[960]: zone 0.0.127.IN-ADDR.ARPA/IN: loaded
serial 20061120

恐らく、PPPoEの起動後充分な時間を取ってからbind9を起動すればいいの
だと思いますが、/usr/local/etc/rc.d にsleep付きでbind起動スクリプトを置く
くらいしか思いつきません。何かスマートな方法はありませんでしょうか?
今は単純に /etc/rc.conf に

ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="pppoe"
ppp_nat="NO"
named_enable="YES"

と記述しています。

よろしくお願いします。

-- 
中村正也

メールによる返信