SoftEther VPNサーバーを構築

環境

SoftEther VPNのインストール手順

  1. Raspberry PiにOSをインストール ここではUbuntuをインストールしました。
  2. 必要なライブラリのインストール
sudo apt-get -y install cmake gcc g++ make pkgconf libncurses5-dev libssl-dev libsodium-dev libreadline-dev zlib1g-dev
  1. SoftEther VPNの機能制限を解除するためにソースコードを編集します。
git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git
cd SoftEtherVPN
nano src/Cedar/Server.c

以下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; // ret を false に変更
}
  1. SoftEther VPNのビルド
git submodule init && git submodule update
./configure
make -C build 
sudo make -C build install

ソースコードからビルドした場合はSystemdに対応しているので楽です。

  1. ブリッジを作成 現在は以下のような接続となっています。
graph LR
A[NIC]  --> B[et0] --> C[SoftEther VPN]

以下のようにbr0tapを追加します。

graph LR
A[NIC]  -->  D[br0] --> B[tap] --> C[SoftEther VPN]
D --> E[eth0] 

bridge-utilsをインストールします。

sudo apt-get install bridge-utils

netplanファイルを作成します。

sudo nano /etc/netplan/99-config.yaml
network:  
 version: 2  
 renderer: networkd  
 ethernets:  
  eth0:  
  dhcp4: false  
  dhcp6: false  
bridges:  
 br0:  
 interfaces: [eth0]  
 dhcp4: false  
 dhcp6: false  
 addresses: [192.168.1.xx/24]  
 routes:  
  - to: default  
  via: 192.168.1.1  
 nameservers:  
 addresses: [192.168.1.1]

有効化させます。

sudo netplan apply
  1. SoftEther VPN設定 SoftEther VPN サーバー管理マネージャを使い設定をします。ここではアドレスは192.168.1.xxになります。 管理パスワードを作成し、リモートアクセスVPNサーバーにチェックを入れ、仮想HUB名を設定します。そのほか必要な機能を設定します。 管理画面に戻り、ローカルブリッジ設定を設定します。仮想HUBは先ほど設定した値を選択し、新しいtapデバイスとのブリッジ接続を選択します。そして新しいtapデバイス名softetherにし、ローカルブリッジを追加を選択します。
  2. Desktopファイルの編集、再度読み込み
sudo systemctl edit softether-vpnserver.service
[Service]
ExecStartPost=/bin/sleep 10 ; brctl addif br0 tap_softether
sudo systemctl enable softether-vpnserver.service
sudo systemctl start softether-vpnserver.service

ルーターの設定

v6プラスはIPv4のポート開放は可能ですが条件があります。決められたポートのみ開放できます。http://192.168.1.1:8888/tで確認できます。IPv4設定を選択することで利用可能ポートが表示されています。その中から任意のポート番号を選択し、IPv4パケットフィルタ設定を選択します。エントリを選択し、以下のように設定します。

種別:通過
送信元アドレス:any
宛先アドレス:192.168.1.xx
プロトコル:TCP
送信元ポート:任意のポート番号
宛先ポート:任意のポート番号
方向:WAN=>LAN

また静的NAPT設定

対象プロトコル:TCP
公開対象ポート:任意のポート番号
宛先アドレス:192.168.1.xx
宛先ポート:任意のポート番号

と設定します。 またIPv6に対応させるため、http://192.168.1.1/詳細設定->セキュリティ設定->IPv6パケットフィルタ設定(IPoE)より

フィルタ種別:通過
通信方向:IPoE→LAN
送信元IPアドレス:すべて指定
宛先IPアドレス:すべて指定
プロトコル:すべて指定
送信元ポート:ポート番号指定  任意のポート番号-任意のポート番号
宛先ポート:ポート番号指定  任意のポート番号-任意のポート番号

と設定します。 Ubuntuの場合、ファイアウォールとしてufwを使うことをお勧めします。