SoftEtherVPN ServerでRADIUS認証を使えるようにするための方法を解説。

SoftEtherVPNサーバは様々なインストール方法があります。

OSS 版 SoftEtherVPNサーバには標準では無効化されているいくつかの機能があります。
RADIUS 認証や固有証明書認証が主な例ですが、それらをサーバ管理マネージャーから設定しようとすると、画像のようなダイアログボックスが表示されて設定できません。これを回避する方法があります。

それは、ソースコードからビルドする方法です。
この記事では、OSS版のSoftEtherでリージョンロックを解除する方法を解説します。

SoftEther VPN Serverを導入する

SoftEtherVPNは、筑波大学の研究プロジェクトとして開発されている L2-VPN ソフトウェアです。
物理および仮想コンピューターネットワークに低コストでVPNルーターを構築することができます。
デフォルトではリージョン制限がかけられていますが、ソースビルドをすることでリージョンロックを外して利用します。

前提条件

  • CentOS7 最小構成
  • 2つ以上のネットワークカード

手順1:必須ライブラリをインストール

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

手順2:ソースコードを取得

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

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

この記事では「Source Code of SoftEther VPN (Ver 4.38, Build 9760, rtm)」を使用する。

wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-src-v4.38-9760-rtm.tar.gz

手順3:ソースコード修正

Radius認証やNTドメイン認証の外部サーバ認証機能を使うためにリージョンロックを解除します。

tar xvzf softether-src-v4.38-9760-rtm.tar.gz
cd v4.38-9760/

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

vi src/Cedar/Server.c

viで開き、「/SiIsEnterpriseFunctionsRestrictedOnOpenSource」として/を何回か押していると画像のようなところにたどり着くはずです。

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 ret; を return false; に直します。

手順3:ビルドしてインストール

ソースコードのルートフォルダに移動してビルドを開始します。

./configure
make

make install

手順4:サービスファイルを作成する

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

手順5:NATの設定をする

NATは、iptables で行います。基本的にコマンドのコピペでいけるはずです。

yum -y install iptables-services

念の為、iptabelsの設定を全て削除します。

iptables -L
iptables -F

IPフォワード設定を投入します。

echo 1 > /proc/sys/net/ipv4/ip_forward
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -L
service iptables save

手順6:サービスの立ち上げをする

諸々のサービスの起動と自動起動設定をします。

systemctl start iptables vpnserver
systemctl enable iptables vpnserver

SoftEtherVPNサーバの構築が完了しました。