ppp-2.3b2で接続していてftpかけているときに 回線を強制切断すると。
Sep 26 13:07:56 cs1 pppd[2017]: Connect: ppp1 <--> /dev/ttyd0 Sep 26 13:07:59 cs1 pppd[2017]: local IP address 202.227.75.** Sep 26 13:07:59 cs1 pppd[2017]: remote IP address 202.227.75.** Sep 26 13:09:14 cs1 pppd[2017]: Modem hangup Sep 26 13:09:14 cs1 pppd[2017]: Connection terminated. Sep 26 13:09:15 cs1 pppd[2053]: pppd 2.3.0 started by root, uid 0とpppdは終了し、正常に再起動していますが、
cs1# netstat -nr Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 202.227.75.34 UGSc 8 12144 ed0 127.0.0.1 127.0.0.1 UH 0 268 lo0 202.227.75.* 202.227.75.35 UGHD 1 2246 ed0 202.227.75.** link#1 UC 0 0 202.227.75.** 0:0:e8:ce:34:33 UHLW 2 924 lo0 202.227.75.** 0:40:c7:57:e3:c1 UHLW 6 1685 ed0 976 202.227.75.** 0:40:c7:57:de:19 UHLW 5 605 ed0 1112 202.227.75.** link#1 UHLW 1 5 202.227.75.** 202.227.75.35 UGHD 0 0 ed0 224 link#1 UCS 0 0 これはarp tableに不完全な情報が残っているためで、
arp -aで確認するとcs1# arp -a cs1.y-min.or.jp (202.227.75.**) at 0:0:e8:ce:34:33 permanent center.y-min.or.jp (202.227.75.**) at 0:40:c7:57:e3:c1 gw.y-min.or.jp (202.227.75.**) at 0:40:c7:57:de:19 du0.y-min.or.jp (202.227.75.**) at (incomplete)となっています。
arp -d 202.227.75.**としてもしばらくすると経路情報ともども復活してしまいます。この状態で同じaddressにppp接続すると、
Sep 26 22:28:04 cs1 pppd[26282]: pppd 2.3.0 started by root, uid 0 Sep 26 22:29:03 cs1 pppd[26282]: Connect: ppp1 <--> /dev/ttyd0 Sep 26 22:29:04 cs1 pppd[26282]: Couldn't set interface address: Address already exists Sep 26 22:29:04 cs1 pppd[26282]: local IP address 202.227.75.** Sep 26 22:29:04 cs1 pppd[26282]: remote IP address 202.227.75.**というようになり、接続できません。この問題を FreeBSD-users-jp mailing list で相談したところ、
(匿名希望)さんから情報をいただきました。
この現象は、2.1R 以前のkernelのBUG らしい。とのこと。
freebsd-questions に投稿されていた"Jay L. West"氏(jlwest@tseinc.com)のmailによると、
/sys/netinet/in_rmx.cをstableのものと入れ替えてkernel remakeすればよい。
そこで、
FreeBSD-stableの/usr/src/sys/netinet/in_rmx.c をget。
私のgetしたものはversion 1.13.4.3でした。/sys/netinet/in_rmx.cを退避しておいて、getしたものをcopy。
kernelをrecompileしてrebootしてみました。
この処置によっても、ppp接続の異常終了により不完全なarpが残る現象は改善されません。
しかし、次のpppd接続のとき、これまでのように"Address already exists"とはならず、
正常に使用できます。この問題は FreeBSD 2.1.5Rでは改善されているそうです。
in_rmx.cのversionが$Id: in_rmx.c,v 1.13.4.3 1996/03/04 04:56:21 davidg Exp $以上であれば大丈夫でしょう。
[ Nob's Home | FreeBSD | ppp ]
nob@makioka.y-min.or.jp