LoginSignup
7

More than 1 year has passed since last update.

posted at

updated at

Ubuntu 20.04 arm64bit on Raspberrypi 4にSoftetherを導入する

はじめに

Raspberrypi 4のOSをRaspbean32bitからUbuntu20.04LTSに乗り換えた際に、Softetherのインストールで詰まったので対処法のメモです。

ついでにRadius認証や証明書認証の有効化も行いました。

インストール

問題点:Sofetherの配布ページではARM32bit向けのものしか配布されていない
    →通常のインストール手順を踏むと ARM64bit のRpi4ではmakeで詰まる

対処法:ソースから作る

#前提パッケージのインストール
$ sudo apt install build-essential
$ sudo apt install libreadline-dev libssl-dev libncurses-dev libz-dev

#ソースのダウンロード
$ wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/archive/v4.29-9680-rtm.zip
$ unzip v4.29-9680-rtm.zip
$ cd SoftEtherVPN_Stable-4.29-9680-rtm

OSS版の制限解除

エンタープライズ版との差別化のためか(多分そう)、OSS版ではRadius認証や証明書認証が無効になっているのでついでに解除

$ sudo 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 false; //return ret;をreturn false;に変更

ビルド

$ ./configure

この状態でmakeすると cc: error: unrecognized command line option ‘-m64’ と出てエラーになる

MakeFileにx86_64bitアーキテクチャ向けのコンパイルオプションが入ってしまうことが原因らしい

Makefileの編集

Makefile.
#下記4か所にある -m64 オプションを全て削除
OPTIONS_COMPILE_DEBUG=-D_DEBUG -DDEBUG -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -g -fsigned-char <<-m64>>

OPTIONS_LINK_DEBUG=-g -fsigned-char <<-m64>> -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz

OPTIONS_COMPILE_RELEASE=-DNDEBUG -DVPN_SPEED -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -O2 -fsigned-char <<-m64>>

OPTIONS_LINK_RELEASE=-O2 -fsigned-char <<-m64>> -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz
$make #これで通るはず
$sudo make install

サービス登録

ビルドしたディレクトリにSystemd向けの雛形があるのでコピー

2020/05/24 追記
生成されるサービスファイルが適切なものとなっていませんでしたので、雛形を再作成し掲載しました

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

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

[Install]
WantedBy=multi-user.target
$ sudo systemctl start vpnserver
$ sudo systemctl enable vpnserver

ここまでできれば管理ツールでGUIベースの設定ができるので安心

さいごに

この後TOTP認証を導入したときも詰まったので書きたい(願望

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
7