L2TP/IPsecサーバの構築 (2/3) ビルド編

SoftEther VPN のサーバーを導入してiPadやAndroidから接続できるようにします。

CLIだけで構築してみました。

前回からの続きです。

SoftEther VPNのインストール

公式のダウンロードページ から必要なものをダウンロードします。今回の目的と環境に適合するのは...

  • ダウンロードするソフトウェア: SoftEther VPN(Freeware)
  • コンポーネント: SoftEther VPN Server
  • プラットフォーム: Linux
  • CPU: Intel x64 / AMD64 (64bit)

ダウンロード可能なファイルがたくさん表示されますが、最新のRTM版を使用することにします。今回は SoftEther VPN Server (Ver 4.34, Build 9745, rtm)でした。

適当なディレクトリにダウンロードした後、ファイルを展開します。

$ zcat softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz | tar xf -

ファイルは vpnserver ディレクトリに展開されるので、その中に入ってビルドします。

$ cd vpnserver/
$ make

make するとビルドが始まりますが最初に次の3つの質問がされます。

  1. License Agreementを読みますか?
  2. License Agreementを読んで理解しましたか?
  3. License Agreementに同意しますか?

ライセンスに同意すればビルドが続行されます。

ビルドのログ:

make[1]: Entering directory '/home/yuzu/vpnserver'
Preparing SoftEther VPN Server...
ranlib lib/libcharset.a
ranlib lib/libcrypto.a
ranlib lib/libedit.a
ranlib lib/libiconv.a
ranlib lib/libintelaes.a
ranlib lib/libncurses.a
ranlib lib/libssl.a
ranlib lib/libz.a
ranlib code/vpnserver.a
gcc code/vpnserver.a -fPIE -O2 -fsigned-char -pthread -m64 -lm -lrt -lpthread -L./ lib/libssl.a lib/libcrypto.a lib/libiconv.a lib/libcharset.a lib/libedit.a lib/libncurses.a lib/libz.a lib/libintelaes.a -ldl -o vpnserver
ranlib code/vpncmd.a
gcc code/vpncmd.a -fPIE -O2 -fsigned-char -pthread -m64 -lm -lrt -lpthread -L./ lib/libssl.a lib/libcrypto.a lib/libiconv.a lib/libcharset.a lib/libedit.a lib/libncurses.a lib/libz.a lib/libintelaes.a -ldl -o vpncmd
./vpncmd /tool /cmd:Check
vpncmd command - SoftEther VPN Command Line Management Utility
SoftEther VPN Command Line Management Utility (vpncmd command)
Version 4.34 Build 9745   (English)
Compiled 2020/04/05 23:39:56 by buildsan at crosswin
Copyright (c) SoftEther VPN Project. All Rights Reserved.

VPN Tools has been launched. By inputting HELP, you can view a list of the commands that can be used.

VPN Tools>Check
Check command - Check whether SoftEther VPN Operation is Possible
---------------------------------------------------
SoftEther VPN Operation Environment Check Tool

Copyright (c) SoftEther VPN Project.
All Rights Reserved.

If this operation environment check tool is run on a system and that system passes, it is most likely that SoftEther VPN software can operate on that system. This check may take a while. Please wait...

Checking 'Kernel System'... 
              Pass
Checking 'Memory Operation System'... 
              Pass
Checking 'ANSI / Unicode string processing system'... 
              Pass
Checking 'File system'... 
              Pass
Checking 'Thread processing system'... 
              Pass
Checking 'Network system'... 
              Pass

All checks passed. It is most likely that SoftEther VPN Server / Bridge can operate normally on this system.

The command completed successfully.


--------------------------------------------------------------------
The preparation of SoftEther VPN Server is completed !


*** How to switch the display language of the SoftEther VPN Server Service ***
SoftEther VPN Server supports the following languages:
  - Japanese
  - English
  - Simplified Chinese

You can choose your prefered language of SoftEther VPN Server at any time.
To switch the current language, open and edit the 'lang.config' file.


Note: the administrative password is not set on the VPN Server. Please set your own administrative password as soon as possible by vpncmd or the GUI manager.


*** How to start the SoftEther VPN Server Service ***

Please execute './vpnserver start' to run the SoftEther VPN Server Background Service.
And please execute './vpncmd' to run the SoftEther VPN Command-Line Utility to configure SoftEther VPN Server.

Of course, you can use the VPN Server Manager GUI Application for Windows / Mac OS X on the other Windows / Mac OS X computers in order to configure the SoftEther VPN Server remotely.

*** For Windows users ***
You can download the SoftEther VPN Server Manager for Windows
from the http://www.softether-download.com/ web site.
This manager application helps you to completely and easily manage the VPN server services running in remote hosts.


*** For Mac OS X users ***
In April 2016 we released the SoftEther VPN Server Manager for Mac OS X.
You can download it from the http://www.softether-download.com/ web site.
VPN Server Manager for Mac OS X works perfectly as same as the traditional Windows versions. It helps you to completely and easily manage the VPN server services running in remote hosts.



*** PacketiX VPN Server HTML5 Web Administration Console (NEW) ***
This VPN Server / Bridge has the built-in HTML5 Web Administration Console.

After you start the server daemon, you can open the HTML5 Web Administration Console is available at

https://127.0.0.1:5555/
or
https://ip_address_of_the_vpn_server:5555/

This HTML5 page is obviously under construction, and your HTML5 development contribution is very appreciated.

--------------------------------------------------------------------

make[1]: Leaving directory '/home/yuzu/vpnserver'

ビルドが完了したらインストール先へのコピーとパーミッションの設定をしましょう。今回は /opt/vpnserver/ にインストールします。

$ cd ..
$ sudo mv vpnserver/ /opt
$ cd /opt
$ sudo chown -R root /opt/vpnserver/
$ sudo chmod 600 /opt/vpnserver/*
$ sudo chmod 700 /opt/vpnserver/vpncmd
$ sudo chmod 700 /opt/vpnserver/vpnserver

参考: Linux へのインストールと初期設定 - SoftEther VPN プロジェクト

SoftEther VPNの自動起動設定

SoftEther VPNの公式サイトには init の起動スクリプトがありますが、Ubuntu 20.04 LTS には systemd スクリプトが必要です。

先人が貴重な情報をシェアしてくださっているので、ありがたく使わせてもらいましょう。

SoftEther VPN Serverをsystemd対応にする - Qiitaを参考にしました。

今回の環境用に編集した結果 /etc/systemd/system/softether-vpn.service はこうなりました。

[Unit]
Description=Softether VPN Server Service
After=network.target

[Service]
Type=forking
User=root
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
Restart=on-abort
WorkingDirectory=/opt/vpnserver/
ExecStartPre=/sbin/ip link set dev ens10 promisc on

[Install]
WantedBy=multi-user.target

変更点:

  • インストール先を /opt/vpnserver に変更
  • ローカルブリッジ用インターフェイス名を ens10 に変更

それでは vpnserver を設定するために起動しておきましょう。

$ sudo systemctl start softether-vpn
$ sudo systemctl status softether-vpn
● softether-vpn.service - Softether VPN Server Service
     Loaded: loaded (/etc/systemd/system/softether-vpn.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-10-10 10:10:10 UTC; 10s ago
    Process: 2175 ExecStartPre=/sbin/ip link set dev ens10 promisc on (code=exited, status=0/SUCCESS)
    Process: 2186 ExecStart=/opt/vpnserver/vpnserver start (code=exited, status=0/SUCCESS)
   Main PID: 2191 (vpnserver)
      Tasks: 33 (limit: 629145)
     Memory: 16.2M
     CGroup: /system.slice/softether-vpn.service
             ├─2191 /opt/vpnserver/vpnserver execsvc
             └─2192 /opt/vpnserver/vpnserver execsvc
(以下略)

active (running)とあるので正常に起動できているようです。

ens10 がプロミスキャスモードになっていることも確認しておきましょう。

$ ip link show ens10
3: ens10: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:f2:7e:d7 brd ff:ff:ff:ff:ff:ff

応答内容に PROMISC があるので大丈夫なようです。

[つづく] →SoftEtherでL2TP IPSecのVPNサーバを構築 その3