SoftEtherVPN Serverをビルドインストールしてみました。

ITS CLOUD NETWORKは、いつでもどこでも同じインターネット接続をすることができる事が目的で構築しています。
当サービスで活用している技術情報をご共有します。

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.29, Build 9680, rtm)」を使用する。

wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.29-9678-rtm/softether-src-v4.29-9680-rtm.tar.gz

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

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

tar xvzf softether-src-v4.29-9680-rtm.tar.gz
cd v4.29-9680

「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サーバの構築が完了しました。