OpenVPN(6)
OpenVPNサーバーの自動起動
手動でのOpenVPNサーバー起動が成功したら、^C で一旦実行を打ち切り、Macブート時に自動的にOpenVPNサーバーが起動するようにします。
ブート時に自動起動させるには、
- StartupItem に起動スクリプトを置く方法
- LaunchDaemons を使う方法
の2つがあるようです。どちらの方法でも構わないのですが、現在では後者の方法の方が推奨されているようですので、ワタシも後者を使いました。
また、本来は開始、終了、設定変更時の強制リスタートなどに対応できるようにすべきなのでしょうが、以下の記述はどちらも「とりあえず起動すれば良い」という適当な状態です。アシカラズ(^^;)。
- StartupItem に起動スクリプトを置く方法
"/Library/StartupItems" の下にディレクトリを作り、その下に起動スクリプトと初期設定ファイル(.plist )を置きます。
$ cd /Library/StartupItems
$ sudo mkdir OpenVPN
$ cd OpenVPN
$ sudo vi OpenVPN
|
"OpenVPN" 起動スクリプトに書く内容は、こんな感じ。
#!/bin/sh
##
# OpenVPN
##
. /etc/rc.common
StartService ()
{
ConsoleMessage "Staring OpenVPN server"
/usr/local/sbin/openvpn --config /etc/openvpn/server.conf
}
StopService ()
{
if pid=$(GetPID openvpn); then
ConsoleMessage "Stopping OpenVPN server"
kill -TERM "${pid}"
else
ConsoleMessage "OpenVPN server is not running."
fi
}
RestartService () { StopService; StartService; }
RunService "$1"
|
書き終わったら保存して実行権を付けておきます。
初期設定ファイルは "StartupParameters.plist" というファイル名にします。内容はこんな感じ。
{
Description = "OpenVPN server Starting";
Provides = ("OpenVPN");
Requires = ("Network Configuration");
OrderPreference = "None";
Messages = {
start = "OpenVPN server starting";
stop = "OpenVPN server stopping";
};
}
|
- LaunchDaemons を使う方法
"/Library/LaunchDaemons" の下に、"org.openvpn.plist" という名前のファイルを起きます。
$ cd /Library/LaunchDaemons
$ sudo vi org.openvpn.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>Label</key>
<string>org.openvpn</string>
<key>OnDemand</key>
<false/>
<key>Program</key>
<string>/usr/local/sbin/openvpn</string>
<key>ProgramArguments</key>
<array>
<string>openvpn</string>
<string>--config</string>
<string>/etc/openvpn/server.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>TimeOut</key>
<integer>90</integer>
<key>WorkingDirectory</key>
<string>/etc/openvpn</string>
</dict>
</plist>
|
上記いずれかの方法で設定しておき、Macを再起動。psコマンドやアクティビティモニタで openvpn プロセスが起動していることが確認できればOK。また、コンソールで /var/log/openvn.log を見て、正しくログが書き出されていればOKです。
LaunchDaemons を使った場合、上記だけで起動、終了、再起動(リスタート)が以下の方法で可能なのでした。
- 起動
# launchctl load /Library/LaunchDaemon/org.openvpn.plist
|
- 終了
# launchctl unload /Library/LaunchDaemon/org.openvpn.plist
|
- 再起動
# launchctl stop org.openvpn
|
|