CentOS 7にSoftEther VPN Serverをビルドインストールする

SoftEther VPN ServerにはユーザーのRadius認証やNTドメイン認証の外部サーバ認証機能があるが、
「外部サーバ認証」機能はオープンソース版には定義されていない旨のエラーが発生する。
(NTドメイン認証はWindowsNT系専用の模様)

ソースコードを改変してビルドすることで使用できるようになるとのことなので、やってみた。

参考:SoftEther のリージョンロックを外して RADIUS や証明書認証を有効にする

■ソースコードを取得

公式サイトのダウンロード->ソースコードとたどり、
「最新のソースコードパッケージのダウンロード」リンクに飛ぶ。

以下を選択してソースコードをダウンロードする。
コンポーネント:Source Code of SoftEther VPN
プラットフォーム:tar.gz package

この記事では「Ver 4.28, Build 9669, beta」を使用する。

SoftEther VPN プロジェクト – SoftEther VPN プロジェクト

■ソースコード修正

SCPなどでソースコードをアップし、サーバ上で解凍する。

tar xvzf softether-src*
cd v*

「Server.c」ファイルの「SiIsEnterpriseFunctionsRestrictedOnOpenSource」関数を修正する。

vi src/Cedar/Server.c
bool SiIsEnterpriseFunctionsRestrictedOnOpenSource(CEDAR *c)
{
/*
        char region[128];
        bool ret = false;
        // Validate arguments
        if (c == NULL)
        {
                return false;
        }


        SiGetCurrentRegion(c, region, sizeof(region));

        if (StrCmpi(region, "JP") == 0 || StrCmpi(region, "CN") == 0)
        {
                ret = true;
        }

        return ret;
*/
        return false;
}

■ビルドしてインストール

ビルドに必要なパッケージをインストールする。

yum -y groupinstall "Development Tools"
yum -y install readline-devel ncurses-devel openssl-devel

ソースコードのルートフォルダでビルドする。

./configure
make

make install

インストール完了で以下のメッセージが表示される。

--------------------------------------------------------------------
Installation completed successfully.

Execute 'vpnserver start' to run the SoftEther VPN Server background service.
Execute 'vpnbridge start' to run the SoftEther VPN Bridge background service.
Execute 'vpnclient start' to run the SoftEther VPN Client background service.
Execute 'vpncmd' to run SoftEther VPN Command-Line Utility to configure VPN Server, VPN Bridge or VPN Client.
--------------------------------------------------------------------

■サービス登録

サービスファイルを作成する。

vi /etc/systemd/system/vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target

[Service]
Type=forking
ExecStart=/usr/bin/vpnserver start
ExecStop=/usr/bin/vpnserver stop

[Install]
WantedBy=multi-user.target

VPNサーバーを起動して自動起動設定する。

systemctl start vpnserver
systemctl enable vpnserver

■外部サーバ認証機能

「SE-VPN サーバー管理 」などからRadius認証などが設定できるようになったことを確認する。