2014年2月7日金曜日

Mac OS XでVPN接続が切れたら自動的に再接続する

先日構築したSoftEther VPNによるVPN環境で、遠隔地のMacでVPNを接続しておいたはずが、いつの間にか接続が切れているという問題が度々発生していた。

OS XのL2TPクライアントにKeep-Aliveの機能はついてないみたいだし、かと言ってSSHみたいに接続先のターミナル上で定期的になにか出すというわけにもいかない。

じゃあ、接続を切れないようにするんじゃなくて、切れたら再接続するようにできればいいんじゃないか、と思って探したらあった。

Mac OS X起動時にVPNで自動接続&途切れても再接続するように設定できる : ライフハッカー[日本版]

なるほど。しかし上記リンク先のコードはなぜかインデントが全角空白になってて面倒だと思うので、直したコードを以下に貼っとく。なお"VPN Service Name"の部分は接続したいVPN接続設定の名前に置き換えること(「システム環境設定」の「ネットワーク」に表示されている名前)。あと接続有無の監視間隔が120秒だったのを60秒に変更してある。

on idle
  tell application "System Events"
    tell current location of network preferences
      set myConnection to the service "VPN Service Name"
      if myConnection is not null then
        if current configuration of myConnection is not connected then
          connect myConnection
        end if
      end if
    end tell
    return 60
  end tell
end idle

AppleScriptエディタを開いて上記コードを貼り付け、メニューの「ファイル>保存...」を選択する。ダイアログで
  • ファイルフォーマットは「アプリケーション」を選択
  • オプションの「ハンドラの実行後に終了しない」にチェック
して保存する。


あとは保存したアプリケーションを実行すれば接続が開始され、60秒間隔で接続の有無を監視してもし接続が切れていたら自動的に再接続してくれる。

実際先日構築したVPN環境で試したら、接続が切れた時にちゃんと再接続してくれていたことが確認できた。これでVPNが落ちてないか心配せずに済む。

ちなみに、起動時に自動的にVPNに接続させるには、「システム環境設定>ユーザとグループ」でユーザを選び「ログイン項目」に追加しておけばいい。さらに実行中にDockにアイコンを出さない方法も上のリンク先に書いてあるので必要なら参照のこと。僕の場合、実行されているのが明示的にわかったほうがいいと思ったのでアイコン消す設定はしてない。

Apple Script も極めれば色々自動化できそうで面白そうだな。また機会があったら調べてみよう。

※この記事について指摘・意見・提案・感想などありましたら下のコメント欄にどうそ。

0 件のコメント:

コメントを投稿