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