ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

突然SSHが切断され、pingもつながらなくなる現象、ほぼ解決。

ほぼ解決しましたので、コメントで教えてくれましたid:ichikaway様に御礼申し上げます。

元ネタ:SSHで、数分するといきなり切断され、pingも通らなくなる件。 - ぐらめぬ・ぜぷつぇんのはてダ
コメントで教えてくれた方:VMwareServer使ってたらGuestOSへのSSHが妙に不安定だ - サラリーマンから起業するリアル
他、Googleで見つけた参考:http://as-is.net/blog/archives/001196.html

現象や原因は異なるのですが、ARPの存在を今までど忘れしていました。id:ichikaway様のコメントと記事で、目が覚めました。

結論から言うと、まずSSHが切られてしまう理由はSSHクライアントソフトからのハートビートパケットを設定で抑止していたことです。
puttyの日本語版を使っていたのですが、NULLパケット送信のためのKeepaliveの間隔を"0"にしてしまっていました。これを15などの適当な値になおしたところ、接続は維持されました。ちなみにTeraTermからはそういった現象が起きなかったのですが、TeraTermの設定で元々60秒間隔でハートビートを打っていたから、のようです。

ホストはWindowsで、ホストOS上のputtyからゲストOSに接続していたわけですが、2分前後でARPテーブルで未使用のものが削除されてしまうようです。そのため、puttySSH接続が切断されてしまっていたようです。
逆に言えば、ハートビートパケットの送信間隔を3分とかにしてしまうと、(SSHコンソールに何も入力していなければ)ARPテーブルの削除の2分間が先に来てしまう場合、やはり切断されてしまいました(実験済)。

ゲストOS起動後にpingをホストOSのIPに向けて打たないと、ホストOSからSSH接続できない、というのも同様の理由。ゲストOS起動直後にはホストOS側のARPテーブルに、ブリッジ接続(VMnet0)のゲストOSのIPとMACアドレスが登録されていないので、ホストOS側からは接続できない状況だったようです。(それだと何でゲストOSからのpingでホストにARP登録できるのか不明と言えば不明ですね・・・。逆じゃだめなのか?)

pingが暫くして突然止まる現象ですが、これは相変わらず原因不明です。ただし、1-2分後には実は復旧するようです。
例えばゲストOS(Linux)から -i 15 というように15秒間隔でpingを打ってみたところ、10 - 12分くらいのところで、突然ホストOSのARPテーブルからゲストOSのIP:MACエントリが消えました。同時に、ゲストOS側からのpingについてもrequestはホストに届いているのですが、replyが返されません。
ところが、1-2分経つと、またホストOSのARPテーブルに、ゲストOSのIP:MACエントリが登録され、replyが返るようになります。

ひょっとして、ARPテーブルってICMP通信だけじゃ「使われていない」と判断されて削られてしまうのでしょうか?IPパケットが流れていないとダメ?

とまれ、対応策は見えました。助かりました〜。

追記
id:ichikaway様のコメント欄に触発され、もう少し調べてみたところほぼ自分のケースとマッチする事例が見つかった。2chVMwareスレのPart6.

573 :login:Penguin :2006/09/08(金) 01:46:43 id:G9c0lM/q
窓用のVMware Player1.01にVine3.2入れたんだけど、
リモートで何か操作してると特に負荷は掛けていないのに、
数分間ぐらいの間隔で10秒ぐらい、ゲストへの
ネットワークアクセスが急にふんずまる。
例えばホスト側からのpingが止まったりtelnet
コネクションが切れたりゲストOS上のWeb鯖へも繋がらなくなる。
ブちっと切れるわけではない。
(コネクションが切れずに復旧することもある。)
なおPlayerの仮想画面からは普通に操作できる。
vmware-toolsも入れたけど改善せず。
同症状の人いませんか?(ホストはXPSP2、ブリッジ接続)
VMwareServer入れろってことかな。

で、

581 :573 :2006/09/08(金) 15:28:56 id:Y9xz91gM
>>576
ネットで調べたら、どうもアダプタのドライバの問題っぽいです。
eth0をvmxnetにするとふんずまりを解消できるかも。
うちは今のところpcnet32からvmxnetに変えて以降問題ないです。
/etc/init.d/network stop
rmmod pcnet32
rmmod vmxnet
depmod -a
modprobe vmxnet
/etc/init.d/network start

ちょうどVMwareも5.5.5から5.5.6にUPしたところだったのでやってみたところ、大丈夫そうです。正確に言えば10-12分でやっぱりWindowsホスト側でarpがリセットされる問題はあるモノの、以前はその後もpingしつづけるといきなりHost unreachedになって何処にもつながらなくなる状態とかがありましたが、解消されたようです。
vmware-tools入れる時に知ったのですが、↑のコマンド、vmware-config.pl叩いた時に表示されてたんですね・・・。気づかなかった。

あと、セキュリティソフト(トレンドマイクロのウィルスバスター2007)のFW機能をとめても、やっぱり、起動直後のVMwareゲストOSへは、WinXPホストOSからpingとかしても応答がありませんでした。やっぱりVMwareゲストOSからWinXPホストOSにpingすれば、ホストOSのarpテーブルにもエントリが追加されるのですが・・・。

疲れたので、もうお休みです・・・。というか、なぜお金払っているVMware Workstation5でSolaris10用のvmware-toolsが無くて、VMware Serverである(らしい)のか、すごい意図不明・・・。