FreeBSD QandA 781
Q. ダイアルアップルータや ppp の -auto モードを使用しています。
次のような操作により、意図していないのに勝手にダイアルしてしまいます。
これを抑制するにはどうすればいいですか?
1. sendmail 等、アプリケーションの起動時
2. 夜中の 3 時頃
3. なにかしら DNS への問い合わせが発生する操作
A. 一般的に on-demand dialup では、DNS サーバへの参照をトリガーとしてダイ
アルします。これを抑制すれば意図しないダイアルを防げます。
(1) 名前解決の順序
(2) 自ホストの名前解決
(3) 外部への接続が不要な DNS への問合せを抑制する。
(1) 名前解決の順序
デフォルトでは /etc/host.conf は
hosts
bind
となっています。これを逆順にすると、必ず DNS サーバーへの問い合わせ
が行われるという問題が起きます。念の為、確認してください。
(2) 自ホストの名前解決
sendmail 等のアプリケーションは、起動時に自ホストの名前解決を行います。
これによる DNS への問合せを避ける為、/etc/rc.conf で hostname 変数に指
定した自ホスト名を、/etc/hosts に登録する必要があります。
すなわち、hostname(1) コマンドの結果が `myhost.example.jp' なら、
127.0.0.1 localhost localhost.example.jp myhost.example.jp
または、ネットワークインタフェースが使えるなら、その IP アドレスを使って、
127.0.0.1 localhost localhost.example.jp
192.168.0.1 myhost.example.jp myhost
のようにします。
LAN 上に DNS サーバを立ち上げてないような小規模サイトでは、その LAN に
あるそれ以外のホストについても、ホスト名と IP アドレスのペアを登録して
おきましょう。これはこちら側から直接 telnet などするつもりがなくても、
逆から接続されるとき、IP アドレスからホスト名を逆引きするときにも使わ
れるからです。
(1) 及び (2) は、ローカルで DNS サーバーを動かしていない場合の必須事項
で、これをしてないがために、アプリケーション起動のたびに PPP 接続して
しまったり、起動に時間がかかるといった現象に出食わすことになります。
(3) 外部への接続が不要な DNS への問合せを抑制する。
典型的な例として、netstat(1) があります。このコマンドはデフォルトで
DNS への問合せを発行します (-n オプションで抑制できます)。
4.1.1-RELEASE 以降のデフォルトでは、/etc/periodic/dayly から、
netstat が実行されます (4.9-RELEASE で確認)。その為、
/etc/periodic/dayly が実行される午前3時頃にダイアルアップすることに
なります。これを避けるには、/etc/periodic.conf に次の行を追加してく
ださい。詳しくは periodic.conf(5) をご覧ください。
daily_status_network_usedns="NO"
daily_status_named_usedns="NO"
なお、ppp(8) のパケットフィルタを設定すれば、DNS への問い合わせにより
自動的にダイアルしないようにもできますが、on-demand dialup の目的から
すると本末転倒かもしれません。もちろん設定するしないは自由ですので、ケー
スバイケースで判断してください。
set filter dial 0 deny icmp
set filter dial 1 deny udp src eq 53
set filter dial 2 deny udp dst eq 53
set filter dial 3 permit 0 0
詳しくは man ページや、/usr/share/examples/ppp/ 以下、または /etc/ppp/
にあるサンプルファイルを見てください。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。