SoftEther VPN サーバをコマンド操作だけで構築 (設定) する方法

前書き

Ubuntu にインストールした SoftEther VPN サーバ (以下 VPN サーバと略す) を構築していきます。VPN サーバのバージョンは 4.34 です。

ssh で Ubuntu にログインしてコマンド操作 (CLI) で構築 (設定) していきます。

重要なこと

実際に設定を始める前に、何を設定していくのかを箇条書きにするべきです。そうすることで行き詰まった時に、「何をやったか」と「何をやっていないか」を振り返ることができるからです。

設定内容を事前にメモとかしないで始めて、何の問題もなくスムーズに設定できれば一番良いわけですが、そうでない時のことも考えておきたいものです。

メモしないで設定をはじめて問題に遭遇した場合、泥沼化する可能性がグンと高くなります。

僕の場合、何を事前に検討したか?

以下を事前に決めてから設定を始めていきました。

項目コマンド
[1] VPN サーバ管理者パスワードhoge-mgmt-passServerPasswordSet
[2] ダイナミック DNS 名hoge-ddnsDynamicDnsSetHostname
[3] 仮想 HUB 名hoge-vhubHubCreate
[4] 仮想 HUB の管理パスワードhoge-vhub-passSetHubPassword
[5] ユーザーhoge-userUserCreate
[6] 上記ユーザーのパスワードhoge-user-passUserPasswordSet
[7] IPsec 事前共有鍵hoge-ipsec-keyIPsecEnable

設定する「各項目」と「それに設定する値」、そしてこれを実施するための「コマンド (VPN サーバの管理コマンド)」 をリストアップしておくわけです。

VPN サーバをコマンドで構築する様子

まずは VPN サーバを起動します。

$ cd /usr/local/vpnserver/
$ sudo ./vpnserver start
The SoftEther VPN Server service has been started.

Let's get started by accessing to the following URL from your PC:

https://172.16.1.2:5555/
  or
https://172.16.1.2/

Note: IP address may vary. Specify your server's IP address.
A TLS certificate warning will appear because the server uses self signed certificate by default. That is natural. Continue with ignoring the TLS warning.
$

これで VPN サーバのプロセスが起動しました。ここから VPN サーバの設定をしていきます。

$ sudo ./vpncmd
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.

By using vpncmd program, the following can be achieved.
 
1. Management of VPN Server or VPN Bridge
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool) 

Select 1, 2 or 3: 1

Specify the host name or IP address of the computer that the destination VPN Server or VPN Bridge is operating on.
By specifying according to the format 'host name:port number', you can also specify the port number.
(When the port number is unspecified, 443 is used.)
If nothing is input and the Enter key is pressed, the connection will be made to the port number 8888 of localhost (this computer).
Hostname of IP Address of Destination:

If connecting to the server by Virtual Hub Admin Mode, please input the Virtual Hub name.
If connecting by server admin mode, please press Enter without inputting anything.
Specify Virtual Hub Name:
Connection has been established with VPN Server "localhost" (port 443).

You have administrator privileges for the entire VPN Server.
VPN Server>

ここから VPN サーバの設定を実施していきます。

[1] VPN サーバの管理者パスワード

VPN Server>ServerPasswordSet
ServerPasswordSet command - Set VPN Server Administrator Password
Please enter the password. To cancel press the Ctrl+D key.

Password: **********
Confirm input: **********

The command completed successfully.

VPN Server>

これで VPN サーバの管理者パスワードが設定されました。

1 つ頭の片隅に置いておきたいことがあります。それは、いま設定したのは「VPN サーバの管理者パスワード」だということです。パスワードといっても色々あります。「何のパスワードなのか」を把握することはとても重要です。

このあたりをあやふやにすればするほど、途中でわけがわからなくなってしまう確率が上がります。

[2] ダイナミック DNS 名

VPN Server>DynamicDnsSetHostname
DynamicDnsSetHostname command - Set the Dynamic DNS Hostname
Dynamic DNS Hostname (3 - 31 letters): hoge-ddns

The command completed successfully.

VPN Server>

設定した内容を確認すると、

VPN Server>DynamicDnsGetStatus
DynamicDnsGetStatus command - Show the Current Status of Dynamic DNS Function
Item                                    |Value
----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------
Assigned Dynamic DNS Hostname (Full)    |hoge-ddns.softether.net
Assigned Dynamic DNS Hostname (Hostname)|hoge-ddns
DNS Suffix                              |.softether.net
Global IPv4 Address                     |ww.xx.yy.zz
Global IPv6 Address                     |Connection to the server failed. Check network connection and make sure that address and port number of destination server are correct.
The command completed successfully.

VPN Server>

こんな感じで確認できるだろう。

[3] 仮想 HUB 名

$ VPN Server>HubCreate
HubCreate command - Create New Virtual Hub
Name of Virtual Hub to be created: hoge-vhub

Please enter the password. To cancel press the Ctrl+D key.

Password: **********
Confirm input: **********

The command completed successfully.

VPN Server>

作った仮想 HUB を見てみると、

VPN Server>HubList
 HubList command - Get List of Virtual Hubs
 Item              |Value
 ------------------+-------------------
 Virtual Hub Name  |DEFAULT
 Status            |Online
 Type              |Standalone
 Users             |0
 Groups            |0
 Sessions          |0
 MAC Tables        |0
 IP Tables         |0
 Num Logins        |0
 Last Login        |2020-12-30 23:21:08
 Last Communication|2020-12-30 23:21:08
 Transfer Bytes    |0
 Transfer Packets  |0
 ------------------+-------------------
 Virtual Hub Name  |hoge-vhub
 Status            |Online
 Type              |Standalone
 Users             |0
 Groups            |0
 Sessions          |0
 MAC Tables        |0
 IP Tables         |0
 Num Logins        |0
 Last Login        |2020-12-30 23:43:49
 Last Communication|2020-12-30 23:43:49
 Transfer Bytes    |0
 Transfer Packets  |0
 The command completed successfully.

 VPN Server>

のように確認できる。

[4] 仮想 HUB の管理パスワード

【2021/09/01 追記】この [4] は不要な工程かもしれません。知人の Ubuntu に SoftEther VPN サーバーを構築してあげたときに「あれ?」と感じたのですが、友人のサーバーにはこの [4] を設定しませんでした。

これは必須項目ではないのですが、仮想 HUB に対しても管理パスワードを設定しておきます。

Hub コマンドで仮想 HUB を指定します。

VPN Server>Hub hoge-vhub
Hub command - Select Virtual Hub to Manage
The Virtual Hub "hoge-vhub" has been selected.
The command completed successfully.

VPN Server/hoge-vhub>

プロンプトが変わりました。SetHubPassword コマンドで仮想 HUB の管理パスワードを設定できます。

VPN Server/hoge-vhub>SetHubPassword
SetHubPassword command - Set Virtual Hub Administrator Password
Please enter the password. To cancel press the Ctrl+D key.

Password: **********
Confirm input: **********

The command completed successfully.

VPN Server/hoge-vhub>

[5] ユーザーと [6] パスワード

ユーザ名とパスワードは仮想 HUB に紐づくものなので、対象となる仮想 HUB を指定したまま下記を実行していきます。

VPN Server/hoge-vhub>UserCreate
UserCreate command - Create User
User Name: hoge-user

Assigned Group Name:

User Full Name:

User Description:

The command completed successfully.

VPN Server/hoge-vhub>

作ったユーザーにパスワードを設定します。

VPN Server/hoge-vhub>UserPasswordSet
UserPasswordSet command - Set Password Authentication for User Auth Type and Set Password
User Name: hoge-user

Please enter the password. To cancel press the Ctrl+D key.

Password: **********
Confirm input: **********

The command completed successfully.

VPN Server/hoge-vhub>

作ったユーザー情報を確認します。

VPN Server/hoge-vhub>UserList
UserList command - Get List of Users
Item            |Value
----------------+-----------------------
User Name       |hoge-user
Full Name       |
Group Name      |-
Description     |
Auth Method     |Password Authentication
Num Logins      |0
Last Login      |(None)
Expiration Date |No Expiration
Transfer Bytes  |0
Transfer Packets|0
The command completed successfully.

VPN Server/hoge-vhub>

Hub コマンドを引数を付けずに実行すると、仮想 HUB を指定した状態のプロンプトから抜けます。

VPN Server/hoge-vhub>Hub
Hub command - Select Virtual Hub to Manage
The Virtual Hub selection has been unselected.
The command completed successfully.

VPN Server>

[7] IPsec 事前共有鍵

僕は VPN プロトコルとして L2TP/IPsec を使うつもりなので IPsec の設定をする必要があります。IPsecEnable コマンドを使います。

VPN Server>IPsecEnable
IPsecEnable command - Enable or Disable IPsec VPN Server Function
Enable L2TP over IPsec Server Function (yes / no): yes

Enable Raw L2TP Server Function (yes / no): no

Enable EtherIP / L2TPv3 over IPsec Server Function (yes / no): no

Pre Shared Key for IPsec (Recommended: 9 letters at maximum): hoge-ipsec-key

Default Virtual HUB in a case of omitting the HUB on the Username: hoge-vhub

The command completed successfully.

VPN Server>

IPsec の設定内容を確認するには IPsecGet コマンドを使います。

VPN Server>IPsecGet
IPsecGet command - Get the Current IPsec VPN Server Settings
Item                                               |Value
---------------------------------------------------+-----------
L2TP over IPsec Server Function Enabled            |Yes
Raw L2TP Server Function Enabled                   |No
EtherIP / L2TPv3 over IPsec Server Function Enabled|No
IPsec Pre-Shared Key String                        |hoge-ipsec-key
Name of Default Virtual Hub                        |hoge-vhub
The command completed successfully.

VPN Server>

ここから先は?

これで VPN サーバの設定はひと区切りです。しかし、これで VPN 接続ができるようになっているわけではありません。

なぜかというと、VPN クライアントは VPN 接続する時に IP が必要になるわけですが、それについての設定をしていないからです。ここでいう IP とは、VPN トンネル (もしくは VPN セッションと言っても良いでしょう) を張るために使う IP ではなく、VPN 通信をする為に使う IP とでも言うものです。

このあたりの理解が難しい場合、とりあえず VPN サーバの SecureNAT 機能の中にある仮想 DHCP サーバ機能を ON にすれば VPN 接続ができるようになる可能性が高いです。事実、なんだかよくわからないけど仮想 DHCP サーバを動かさないとつながらないから ON にするというレベルの人が多い印象があります。

僕は仮想 DHCP サーバ機能を使いたくないので、その代わりにローカルブリッジを使います。

ローカルブリッジとは SoftEther VPN サーバの機能の 1 つですが、これを使うことで、

  • VPN クライアントは VPN セッション越しにすでにある DHCP サーバへアクセスし、
  • そこから IP をもらって、
  • VPN 通信するための IP を設定する

というステップを踏むことができます。

僕の環境を例に言い換えると、以下のようになります。

  • 自宅に VPN サーバがあります。
  • 外出先からインターネットを経由して VPN サーバへ接続します。
  • VPN クライアントは iPhone もしくは chromebook です。
  • iPhone もしくは chromebook は自宅にあるヤマハルータ (DHCP サーバ) から IP をもらいます。

以上をもって実際の VPN 通信ができるようになります。

長ったらしく書きましたが、ここから先は、ローカルブリッジの設定を VPN サーバにしていくことになります。ローカルブリッジは SoftEther VPN の機能の中でも (おそらく) とても難解なものなので、次の記事でそれを書くことにします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください