SystemctlでSoftEtherVPNをデーモン化する

SoftEtherVPNはたくさんの接続オプションを持っていて、無料のVPNサーバーソフトの中ではおそらく”最もつなげやすい”ソフトではないかなと思います。

そんなSoftEtherVPNですが、Linux版の場合はソースの状態で配布されており、各マシンにダウンロードしてからmakeでビルドする形になっています。
なのでmakeに必要なライブラリさえOS側で用意されていれば、ディストリビューションやアーキテクチャ関係なく使用することができるようになっています。

その関係か、パッケージにはデーモン化のスクリプトは含まれておらず、自力でデーモン化する必要があります。

といっても、作業自体は起動スクリプトを/etc/init.dに置いてchkconfigやsystemctlで有効化すだけです。
起動スクリプトはSoftEtherVPNの公式ドキュメントに記載されています。

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

ところが、今回Ubuntu 18.04のサーバーに組み込んだ所、うまく動作せず。
いろいろ調べたところ、SystemdのUnitファイルで動作させる方法があったのでこちらを試してみました。
(※管理者権限が必要です。)

Ubuntu上でSoftEther VPN Server構築 – Qiita

[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target

[Service]
ExecStart=vpnserverがインストールされているパス/vpnserver start
ExecStop=vpnserverがインストールされているパス/vpnserver stop
Type=forking
RestartSec=3s

[Install]
WantedBy=multi-user.target

上記の内容でUnitファイルを作り、下記の場所に保存します。
/etc/systemd/system/vpnserver.service

保存したら次のコマンドを実行します。

systemctl daemon-reload

これで準備は完了いつも通りに起動します。

systemctl start vpnserver

これで起動したかと思います。
自動起動する場合は

systemctl enable vpnserver

も実行しておきます。

Systemdがいまいちわかりづらいのでinit.dを使っていましたが、これならsystemdネイティブでも使えそうです。
init.dスクリプトでうまく起動できない、という方はぜひ試してみてください。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG