ここ1ヶ月ほどCiscoルータにIPsecで接続することをやってます。もちろんLinuxで。CiscoからLinux版のクライアントが出てるので楽勝と思っていました。が、その予想はあまりにも甘かった。
そのクライアントはどうにも接続が不安定で、接続できないときがやたらと多い。一度接続できなくなってしまうと、モジュールをロードしなおしても直らない。何度か試しているうちに直る。接続できないときは動作が完全に止まってます(straceでみるとselectシステムコールでとまってる)けど何故か止まってる間に、適当にキーをたたいたりマウスを動かしたりするとほぼ100%で動き出して接続が成功する。まったく持って謎。
Windows版ではそんなことは無いので、Linux版の問題みたい。どうにかして欲しいです、Ciscoの中の人。
Cisco互換のオープンソースといえばvpncがあります。こちらは問題なく接続できるのですが、長時間接続しているとエラーで切断されてしまう。どうやらrekeyに問題があるみたい。あまり深くは調査してません。なぜかと言うとvpncはX509証明書認証に対応していないので。CiscoのIPsecに対応するにはPSK認証だけじゃなくてX509証明書認証も必要なので。
最後にOpenswanでの調査。PSK認証では問題なく接続できます。けどやはりX509認証がうまくいかない。仕様ではX509認証に対応してるようだけど、どうにもうまくいかない。malformed packetのエラーがでるので、実装の違いによる可能性大。
と言う感じで、完全に煮詰まっています。Ciscoの純正クライアントの接続が不安定な問題を解決できれば一番良いんだけど、ソースがないのでなんとも。ソースがあったとしても(僕の技量だと)解決できるかどうかわからないけど、少なくとも現状よりは原因には近づけるはずなのに。
はー、欝だ。Ciscoに対応する予定で話が進んでる案件もあるので、それを考えるとさらに鬱になる。
何か降りてこないかなー。