FreeBSD QandA 781

FreeBSD QandA

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 まで お知らせください。