FreeBSD QandA 1154

FreeBSD QandA

Q. 電話料金を節約するため /etc/ppp/ppp.conf の中で、

     set timeout 300

   などと指定して 5 分間ネットワークにアクセスしない時には回線を切るよ
   うにしてありますが、特にアクセスをしていないのに接続が維持されてし
   まいます。

A. set timeout による idle timer の設定で、一定時間パケットが流れない
   場合には回線を切るようになっていますが、デフォルトでは ping、 
   NetBIOS などのパケットにも反応して、接続を維持してしまいます。例え
   ば、外部から ping を一定間隔で打たれると、その都度 idle timer がリ
   セットされ、見た目にネットワークアクセスをしていなくても ppp(8) は
   接続を維持しようとします。また、接続を維持する上で意味のないパケッ
   トも idle timer に影響を与えることがあります。

   このために、idle timer に影響を与えるパケットと与えないパケットを
   指定して timeout の動作を変更することができます。これは
   alive filter を利用し、例えば、

   [2.2.8-RELEASE 以降]   
     set filter alive 0 deny udp src eq 137
     set filter alive 1 deny udp src eq 138
     set filter alive 2 deny udp src eq 139
     set filter alive 3 deny udp dst eq 137
     set filter alive 4 deny udp dst eq 138
     set filter alive 5 deny udp dst eq 139
     set filter alive 6 deny icmp
     set filter alive 7 permit 0/0 0/0

   [2.2.7-RELEASE 以前]
     set afilter 0 deny udp src eq 137
     set afilter 1 deny udp src eq 138
     set afilter 2 deny udp src eq 139
     set afilter 3 deny udp dst eq 137
     set afilter 4 deny udp dst eq 138
     set afilter 5 deny udp dst eq 139
     set afilter 6 deny icmp
     set afilter 7 permit 0/0 0/0

   などと /etc/ppp/ppp.conf に指定すると、ポート 137 〜 139 を出入りす
   る UDP datagram と ICMP message (ping が代表的)については、idle
   timer に影響を与えませんが、その他のパケットが流れると idle timer 
   をリセットし、接続は維持されます。

   詳しいことは ppp(8) の man ページおよび /usr/share/examples/ppp/
   以下のサンプルファイルを参考にしてください。

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。