|
>>4215 seki > tcp_time_wait_interval=240000(4分)になっていたので、 tcp_time_wait_intrval は TIME_WAIT な時間を設定するものなので、 関係ありません。 http://docs.sun.com/app/docs/doc/816-0607/6m735r5ga?a=view > ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -t20 -l -d タイムアウト設定をしたいのは ftp であり、ftpd ではないので 関係ありません。そもそもネットワーク障害や他ホストが down して いるのであれば、ftpd まで行き着いていません。 今回設定したいのは、 http://X68000.q-e-d.net/~68user/net/tcp-connect-1.html における connect のタイムアウト時間と思われますが、OS の設定で 変更できるかどうかは知りません。ただし、普通は OS の設定は変更 しません。たとえば今後、 - FTP 接続だけは 10秒でタイムアウトさせたい - それ以外のプログラムでは 4分待たせたい というときにどうしようもなくなるからです。 対策としては、 - ftp に -T [タイムアウト秒数] オプションを付ける (試していませんが) - ftp の前に ping してみる (タイムアウト秒数を指定) - 監視用プロセスをたて、一定時間反応がなければ ftp を kill する てな感じでしょうか。 |
|
>>4216 68user > たとえば今後、 > - FTP 接続だけは 10秒でタイムアウトさせたい > - それ以外のプログラムでは 4分待たせたい > というときにどうしようもなくなるからです。 → 誠に早急なご返答、及びご教示の程、ありがとうございます。 上記の返答、ごもっともです。 - ftp に -Tをつけるのは、一つの手だと思いますが、APLに手を 入れる事なく設定変更で済ませれるのであれば済ませたいです。 申し訳ございませんが、ftpのソースコードなどは開示されていないので しょうか?? (4分でタイムアウトするという事は必ずどこかを見て判断しているはずですので ソースにじか書きしている可能性もある?かと思われるため確認したいです。) |
|
>>4218 seki 横からすみません. ftpのポート21でconnectできるかチェックするPerlスクリプトを 書いてみました.試していただけますか? use Socket; $SIG{'ALRM'} = sub { close(SOCK); $sTimeout='(timeout)'; }; # ConnectTest(IPアドレス,ポート,タイムアウト秒数) if (!&ConnectTest('192.168.x.x',21,5)){ print "cannot make a ftp connection.\n"; exit; } # 正常ならばftpコマンドを実行 system ('ftp hogehoge'); exit; sub ConnectTest { local($sIP,$nPort,$nTimeout)=@_; local($iaddr,$paddr,$flag,$protoTCP,$sTimeout); $iaddr = inet_aton($sIP) || die "no host: $sIP"; $protoTCP = getprotobyname('tcp'); $paddr = sockaddr_in($nPort, $iaddr); $flag=socket(SOCK, PF_INET, SOCK_STREAM, $protoTCP); if (!$flag){ goto J1_1; } $flag=0;$sTimeout=''; eval { alarm($nTimeout); $flag=connect(SOCK, $paddr); alarm(0); }; if (!$flag){ goto J1_1; } if ($sTimeout){ goto J1_1; } close (SOCK); return 1; J1_1: close (SOCK); return 0; } |
|
>>4218 seki > ftpのソースコードなどは開示されていないのでしょうか?? Solaris8 のソースは配られていたかどうかは忘れましたが、いずれにせよ ソース中には 4分という記載はありません (見てませんが)。connect(2) の タイムアウトを決めるのはカーネルの仕事です。 で、 http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-3.html#ss3.5 によると、 # ndd -set /dev/tcp tcp_ip_abort_cinterval 180000 で変更可能なようです。 > APLに手を入れる事なく設定変更で済ませれるのであれば済ませたいです プログラムに手を入れるよりもカーネルの設定を変える方がよいというのは 間違った判断だと思います。 まぁ客や上司の意向とか、ソース触ったら契約がどうこうとか、世の中には うっとうしいことがいろいろあるので別にいいですが。 >>4219 Netboy ウチの環境では動きました。 |
|
usen-221x242x135x85.ap-US01.usen.ad.jp (221.242.135.85) の方、 /~68user/net/sample/http-auth/secret.html に 21分間で 25万回アクセスするのは、ぜひともやめていただきたい。 って言っても、どうせ見てないんだろうし、deny したところでおそらく動的に IP アドレスを振ってるだろうし、こういう輩はどうしたらいいんですかねぇ。 |
|
>>4221 68user いや、もう、それは管理部門に連絡するのが良いでしょう。 満足いく内容かどうかはともかく、大抵は何らかの返答はありますよ。 #釈迦に説法のような気がしてなりませんが。 |
|
>>4222 へにか なるほど、そういうものですか。usen ならここらへんでしょうか。 http://www.fttx.co.jp/jp/contact/abuse.html ただ、マシンが落ちるなどの実害はなかったことと、usen の web によると 実名を書けだの、仲介しかしないだの、めんどくさそうなので今回は 放置します。 ちなみに「どうしたらいいのか」というのは技術的な解決方法はないですかねぇ、 という意味でした。たとえば一定時間に指定の閾値を超えた IP アドレスは deny するような apache のモジュールがどこかにありそうですよね。 というわけで探したらありました。 http://www.netnice.org/pukiwiki.php?%B4%FB%C2%B8%A4%CEApache%A5%C8%A5%E9%A5%D5%A5%A3%A5%C3%A5%AF%C0%A9%B8%E6%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB まぁほんとにしつこくやってくるようなら usen ごと deny するので 別にいいんですけどね。 |