Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@Shachihoko

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認証を導入したときも詰まったので書きたい(願望

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
7
Help us understand the problem. What are the problem?