keep alive有効化

最近、検証用マシン群が手元のマシンとは別のネットワーク上へ移動したのですが、SSHが良く途中で切れるようになってしまいました。これは10分放置すると間にいるルータがNATテーブルをクリアしてしまうからなんだそうで。しかも標準のopenSSLにはKeep Alive機能が無い!

そこでどうにかならないものかと思ってぐぐったら、まとめサイトを発見!

http://www.geocities.co.jp/AnimeComic/1098/documents/unixmemo/ssh-keepalive.html

方法はいろいろあるけど、SSHクライアント側にKeep Alive機能を追加するパッチをあててコンパイルすると良いよ!とのこと。で、採用。

作業ログ

作業前のバージョン

mir@t43:~$ ssh -v
OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006

パッチの入手

パッチの最新対応バージョンが4.4p1のようなので、openssh 4.4p1(移植版)をミラーから入手。

解凍して、パッチをあてて、ビルド。

cd openssh-4.4p1
patch < ../openssh-4.4p1-watchdog.patch
./configure --prefix=/usr && make && sudo make install

デフォルトだと/usr/local/binに入るようなので、--prefix=/usrを付けて/usr/binに入るようにしておいた。

作業後のバージョン

mir@t43:~$ ssh -v
OpenSSH_4.4p1, OpenSSL 0.9.8b 04 May 2006

設定

~/.ssh/configに以下を書いて完了。

Heartbeat 300

これで5分に1度、無害なpacketを流して切断防止。