2007年11月14日水曜日

ssh接続がブチブチ切れるのでKeepAliveを導入する

ssh接続がブチブチ切れるのは、sshの接続時間の設定でもあるのかと思っていたけど、そうじゃないんだね。

NATな環境で放置したSSH接続が切断される問題について
これは、 NATをしているルータが一定時間パケットの流れないコネクションを接続断と判断し、 NATテーブルをクリアしてしまうために起こると考えられます。 SSHクライアントがいざパケットを流そうとしたときに、初めて接続断に気づくというわけです。(NATテーブルをクリアする際に両側のソケットに対してハングアップを知らせてくれればすぐに切れると思うのですが、少なくとも職場のブロードバンドルータは何もしないようです)

SSHに限らず、コネクションを作った後で長期間何もパケットが流れないようなサービスであれば同じように切れるはずですが、SSH以外はまず該当しないでしょう。

対策としては、SSHの設定で「KeepAlive」をオンにすれば万事解決… のような気がしますが、これは後述するように全く効果がありません。有効な方法は以下のようにいくつかありますが、どれもメリットとデメリットがあります。


で、実は、端末側から一定時間おきに無害なパケットを送信するKeepAliveという機能が、私の使っているPuTTYもPoderosaも着いているそうだ。

調べてみると、
PuTTYの場合、設定で「接続」をクリックするとKeepAlive送信を秒で指定する出来る。
Poderosaの場合、「ツール」「オプション」「ターミナル」でKeepAlive送信を分で指定する事が出来る。
WinSCPの場合、「接続」をクリックするとラジオボタンで
 ○なし
 ○nullパケットを送信
 ○ダミーコマンドを送信
で下の2つを選ぶと送信時間を秒で指定(初期値は30)出来る。どっちが良いのか分からないのでnullパケットを送信にしといた。

送信間隔は1分としてみた。今のところ、これで、接続は確保されているみたいです。

0 件のコメント: