MacのVPN+SSHを延命させるためにやった2つのこと
社内だとVPNを使ってサーバー等に接続することが多いのですが、そのVPN接続がやたら落ちる、などいうことは往々にしてあると思います。
VPNが落ちる原因として、単純にVPN鯖のスペッコがアレで社内の多くの人が繋げるとトラフィック云々で死ぬというのが大きなものです。
それにWindowsもMacも関係ありません。
しかし、MacにはWindowsと違って他にも原因があります。
それを解消することでWindowsよりも長く接続させることも可能だったりします。
そもそもMacのCiscoIPSec VPNクライアントは接続してから45分程度経つと接続がぶった切られる糞仕様。 ぶった切られるというか、パスワードを求められたりする。
Built-in IPsec VPN randomly drops to Cisc… - Apple Community
まずはそれを解除します。
このサイトの通り。
Getting a Cisco IPSec VPN to not disconnect after 45 minutes on Mac OS X Mountain Lion · wincent.com
- まず普通にVPMを繋げる(設定ファイルが作られる)
- 作られた設定ファイルを/etc/racoon にcopyする
$ sudo cp /var/run/racoon/x.x.x.x.conf /etc/racoon
x.x.x.xはVPNサーバーのアドレス - 設定ファイルを編集
$ sudo vim /etc/racoon/racoon.conf
- 下の方にある
include "/var/run/racoon/*.conf" ;
という文字列をコメントアウトする →#include "/var/run/racoon/*.conf" ;
- コメントアウトした代わりに行を追記する
include "/etc/racoon/x.x.x.x.conf" ;
←さっきのVPN鯖のファイル名にする - コピーしたファイルを編集する
$ sudo vim /etc/racoon/1.1.1.1.conf
- dead peer detectionを無効にする
dpd_delay 0 ;
DPDに関して
IPsec DPD
* proposal checkを obeyからclaimに変更する proposal_check claim;
* proposed lifetime を3600秒から24時間(任意)に変更する liftetime time 24 hours
ここで重要なのはlifetime の部分は数カ所あるのでそれぞれ全て変更すること。
それと、24時間だと長すぎて反映されないこともある。12時間、ないしは8時間などで試すのも良い
実際、これで結構VPN持つようになります。MacのIPsecクライアントは鯖の負荷で接続が切れてもそのまま接続を張ろうとすると再接続してくれたりするのでWindowsよりなんとかなります。
しかし、もう一つ問題が。
上記の接続を張ればなんとかなる、というものやつは、クライアントからサーバーに向かって何かしらのアクションをおこしていなければならないということ。
簡単に言うとSSH張ってる時に一瞬VPN落ちたらひたすらEnter押してればいい。
が、現実問題そんなことは不可能なのでSSH接続してるよ〜〜ってクライアントから言ってあげてればいい。
.ssh/configを編集(デフォルトでは存在しない)
$ vi ~/.ssh/config
ServerAliveInterval 15
これを入れることで5秒毎にサーバーへ応答をしてあげるのでSSH接続が切れない(そもそもVPNなしでもこの設定入れないとSSHは適当なタイミングで死ぬ)
ここまでやると、1時間に1回VPN+SSH接続が切れて、俺がキレるみたいなことが減り10時間接続しっぱなし!みたいな状況が実現されてるのでとても幸福感があります。