SoftEther VPN サーバをコマンド操作だけで構築 (設定) する方法
前書き
Ubuntu にインストールした SoftEther VPN サーバ (以下 VPN サーバと略す) を構築していきます。VPN サーバのバージョンは 4.34 です。
ssh で Ubuntu にログインしてコマンド操作 (CLI) で構築 (設定) していきます。
重要なこと
実際に設定を始める前に、何を設定していくのかを箇条書きにするべきです。そうすることで行き詰まった時に、「何をやったか」と「何をやっていないか」を振り返ることができるからです。
設定内容を事前にメモとかしないで始めて、何の問題もなくスムーズに設定できれば一番良いわけですが、そうでない時のことも考えておきたいものです。
メモしないで設定をはじめて問題に遭遇した場合、泥沼化する可能性がグンと高くなります。
僕の場合、何を事前に検討したか?
以下を事前に決めてから設定を始めていきました。
項目 | 値 | コマンド |
[1] VPN サーバ管理者パスワード | hoge-mgmt-pass | ServerPasswordSet |
[2] ダイナミック DNS 名 | hoge-ddns | DynamicDnsSetHostname |
[3] 仮想 HUB 名 | hoge-vhub | HubCreate |
[4] 仮想 HUB の管理パスワード | hoge-vhub-pass | SetHubPassword |
[5] ユーザー | hoge-user | UserCreate |
[6] 上記ユーザーのパスワード | hoge-user-pass | UserPasswordSet |
[7] IPsec 事前共有鍵 | hoge-ipsec-key | IPsecEnable |
設定する「各項目」と「それに設定する値」、そしてこれを実施するための「コマンド (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 の機能の中でも (おそらく) とても難解なものなので、次の記事でそれを書くことにします。