##はじめに
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
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の編集
#下記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
[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認証を導入したときも詰まったので書きたい(願望