SoftEther VPN Serverのアップデート方法

うちは「SoftEther VPN Server」を使ってVPNを構築しています。
運用していく上で時々アップデートが必要になるのですが、毎回改めて手順を検索したりしてそれなりに時間を取られているので備忘録的に記事にまとめてみました。

また、一部の手順をスクリプトで自動化してみました。

大まかな流れ

アップデートの際の大きな流れとしては以下の通りです。

  1. 最新のインストール用パッケージファイルをダウンロード
  2. 実行可能ファイルの生成
  3. 旧バージョンをバックアップ
  4. 新バージョンで置き換え
  5. 既存の設定ファイルを戻す

作業手順

実際の作業は以下のような手順になります。
環境によって細かい差異はあるかと思いますが、予めご承知おきください。

  1. SoftEtherダウンロードセンター」から最新のインストール用パッケージファイルをダウンロードします。
  2. ダウンロードしたファイルを適当なディレクトリに置き、展開します。
    tar xzvf {ダウンロードしたtar.gzファイル}
  3. 「vpnserver」というディレクトリが作られるのでそこに移動して実行可能ファイルを生成します。
    cd vpnserver
    make
  4. vpnserverサービスを停止します。
    sudo systemctl stop vpnserver
  5. 旧バージョンをバックアップします。(ディレクトリ名は適宜変更)
    sudo mv /usr/local/vpnserver /usr/local/vpnserver_backup
  6. 新バージョンを移動します。
    cd ..
    sudo mv vpnserver /usr/local
  7. パーミッションと所有者を変更します。
    cd /usr/local/vpnserver
    sudo chmod 600 *
    sudo chmod 700 vpncmd
    sudo chmod 700 vpnserver
    sudo chown -R root:root /usr/local/vpnserver
  8. 旧バージョンのバックアップから設定ファイルをコピーします。
    sudo cp -a {旧バージョンのディレクトリ}/vpn_server.config ./
  9. vpnserverサービスを起動します。
    sudo systemctl start vpnserver

vpnserverサービスの起動が確認できたらクライアントから接続してみて問題なければアップデート完了です。

スクリプトの例

言うまでもなく、上記のコマンド群をスクリプトにまとめてしまえば1コマンドでアップデートを適用させることが可能です。
実行ファイルの生成が完了した後からの手順(4.以降)をスクリプトにしたらこんな感じになるかと思います。

#!/usr/bin/bash
TODAY=$(date "+%Y%m%d")
NEWDIR="/usr/local/vpnserver.new"
CURRENTDIR="/usr/local/vpnserver"
WORKDIR="/home/hogehoge/fugafuga/vpnserver"
BACKUPDIR="/usr/local/vpnserver.${TODAY}"
sudo systemctl stop vpnserver
sudo mv $WORKDIR $NEWDIR
cd $NEWDIR
sudo chmod 600 *
sudo chmod 700 vpncmd
sudo chmod 700 vpnserver
sudo cp -a $CURRENTDIR/vpn_server.config ./
sudo chown -R root:root $NEWDIR
sudo mv $CURRENTDIR $BACKUPDIR
sudo mv $NEWDIR $CURRENTDIR
sudo systemctl start vpnserver

まとめ

公式が出しているLinux環境へのインストール手順はこちらになります。

アップデートのポイントは既存の設定ファイルを再配置することです。
設定ファイルのフォーマットが変わったらこの方法ではうまくいかない可能性がありますのでご注意ください。

また、vpnserverディレクトリにあるログ用ディレクトリは新規に作成されますので中身は空になります。
既存のログファイルが必要であればバックアップしたディレクトリ内を適宜参照してください。

この記事がSoftEther VPN Serverのアップデートをしようとしている方の参考になれば幸いです。