SystemctlでSoftEtherVPNをデーモン化する

takahashi 著者:takahashi

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スクリプトでうまく起動できない、という方はぜひ試してみてください。

  • この記事いいね! (0)

著者について

takahashi

takahashi administrator

Webエンジニア。 趣味で自宅サーバーを稼働中。 ファンタジーが好き。