launchdを使ってOS起動時にvpndを自動起動してみた。
こちらを参考にさせて頂きました。
なお設定環境は以下となります。
MacBookPro (13-inch, Early 2011)
OS X El Capitan 10.11.4
vpn設定ファイルの準備
まず、下記の設定ファイルを作成します。(詳細は割愛)
/Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plist
/etc/ppp/users.plist
launchctlのplist作成
まず、
/Library/LaunchDaemons/com.apple.vpnd.plist(ファイル名は任意)
を作成します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>com.apple.vpnd</string>
<key>Program</key>
<string>/usr/sbin/vpnd</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/vpnd</string>
<string>-x</string>
<string>-i</string>
<string>com.apple.ppp.l2tp</string>
</array>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
launchctlからサービス起動
サービスを起動するには、
launchctl load /Library/LaunchDaemons/com.apple.vpnd.plist
サービスを停止するには、
launchctl unload /Library/LaunchDaemons/com.apple.vpnd.plist
サービスの起動状況を確認するには、
launchctl list
動作確認 → 不具合発生!
1.OS再起動
2.サービス起動状態確認
-->launchctl list より、com.apple.vpndが起動している
ps -ef |grep vpnd より、vpnd -x -i com.apple.ppp.l2tpプロセスが存在
3.Client側からVPN接続
-->接続不可。個人的に色々試してみたところOS起動時すぐにvpnd(L2TP)起動すると何故か接続できない。※一方PPTPは問題無く接続可能だった。
対策
OS起動後少し経ってからvpndを起動させると接続OKだったので適当にスクリプトを作成して、それをlaunchctlで起動させることにした。
少々格好悪いけど…。他に良い方法があれば教えて下さい。
#!/bin/bash
sleep 120
vpnd -x -i com.apple.ppp.l2tp
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>com.apple.vpnd</string>
<key>ProgramArguments</key>
<array>
<string>/Users/hoge/macro/start_vpnd.sh</string>
</array>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
不具合に関して
launchctlに関わらず、ユーザとグループのログイン項目から
vpnd(L2TP)を起動する時も同様で、
OS起動直後だとvpndは起動できてもClient側からVPN接続できない。
(一度vpndを停止させて起動し直せば接続できるようになる。自動起動の意味が無い…。)
原因はよくわかりませんが、sleepを入れてvpndの起動を少し遅らせれば正常にVPNが繋げられるのでとりあえずこのまま様子見としたいと思います。
2chに同様の人がいました。こちらはOSはYosemiteですね。
コメントをお書きください