IPoE化で使えなくなったL2TPの代わりにOpenVPNクローンサーバーを立てた

このまえ構築したSoftEther VPNサーバーに接続できなくなってしまいました。 どうやらサーバーを置いてある場所の光回線がIPoEに移行したタイミングで 接続できなくなったようです。

IPv6接続に変更したことによって使えなくなったVPNをOpenVPNで使えるようにしたお話 によると、IPoE環境とL2TP/IPSecは取り合わせがよくないことと、 OpenVPNなら問題なさそうなことがわかりました。

幸いなことにSoftEther VPNサーバーはOpenVPNの機能が実装されていますので、 これを使うことにします。

構築時と同じようにCLIだけで設定してみました。

環境

すでにSoftEther VPNサーバーがインストールされている環境で作業します。

サーバーのインストールについては以前の記事をご覧ください。

一応、現在の環境を載せておきます。

$ uname -a
Linux megmin 5.4.0-65-generic #73-Ubuntu SMP Mon Jan 18 17:25:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.2 LTS
Release:        20.04
Codename:       focal

前回のサーバーと同じですが、ソフトウェアがすこしだけバージョンアップしています。

ルーターのポート開放

OpenVPN用にUDPポートを開けます。IPoE環境では1024番以上のポートにする必要があるようです。 今回は1194番にしました。

準備

SoftEther VPNサーバーは /opt/vpnserver にインストールしていましたので、 まずはそこに移動しておきます。

$ cd /opt/vpnserver

SoftEther VPNサーバーのパスワード入力が面倒なので ServerPasswordSet コマンドで一時的に削除します。

$ sudo ./vpncmd localhost /server /cmd ServerPasswordSet
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.

Password: ***************

Connection has been established with VPN Server "localhost" (port 443).

You have administrator privileges for the entire VPN Server.

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.

途中で3回プロンプトが表示されて入力を促されます。

1回目の Password: プロンプトには現在のパスワードを入力します。

2回目の Password:Confirm input: には何も入力せずに [enter] を押すと パスワードなしになります。設定が終わったら、必ずパスワードを設定しなおしましょう。

OpenVPNクローンサーバー機能の有効化

OpenVpnEnable コマンドを使用して OpenVPNクローンサーバー機能を有効化しましょう。

$ sudo ./vpncmd localhost /server /cmd OpenVpnEnable
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.

Connection has been established with VPN Server "localhost" (port 443).

You have administrator privileges for the entire VPN Server.

VPN Server>OpenVpnEnable
OpenVpnEnable command - Enable / Disable OpenVPN Clone Server Function
Enables OpenVPN Clone Server Function (yes / no): yes

UDP Ports to Listen for OpenVPN (Default: 1194 / Multiple Accepted): 1194

The command completed successfully.

ここでは2回プロンプトが表示されています。

Enables OpenVPN Clone Server Function (yes / no): では OpenVPNクローンサーバー機能を使うかどうかを聞かれています。 yes を入力してください。

UDP Ports to Listen for OpenVPN (Default: 1194 / Multiple Accepted):では 使用するポート番号を入力します。 ルータに開けておいたのポート番号の 1194 を指定しています。

OpenVpnGet コマンドで設定を確認します。

$ sudo ./vpncmd localhost /server /cmd OpenVpnGet
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.

Connection has been established with VPN Server "localhost" (port 443).

You have administrator privileges for the entire VPN Server.

VPN Server>OpenVpnGet
OpenVpnGet command - Get the Current Settings of OpenVPN Clone Server Function
Item                        |Value
----------------------------+-----
OpenVPN Clone Server Enabled|Yes
UDP Port List               |1194
The command completed successfully.

よさそうですね。

設定ファイルの作成

次にVPNクライアントに読み込ませるための設定ファイルを生成します。 OpenVpnMakeConfig コマンドを実行しましょう。

$ sudo ./vpncmd localhost /server /cmd OpenVpnMakeConfig
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.

Connection has been established with VPN Server "localhost" (port 443).

You have administrator privileges for the entire VPN Server.

VPN Server>OpenVpnMakeConfig
OpenVpnMakeConfig command - Generate a Sample Setting File for OpenVPN Client
Output Filename of Setting Files (ZIP compressed file): vpnconfig

The sample setting file was saved as "vpnconfig.zip". You can unzip this file to extract setting files.
The command completed successfully.

Output Filename of Setting Files (ZIP compressed file):プロンプトには 出力ファイル名を指定します。ここでは vpnconfig と入力しています。 すると vpnconfig.zip ファイルができているはずです。

このzipファイルから xxxxx_openvpn_remote_access_l3.ovpn を取り出します。 xxxxxの部分にはサーバー名が入っています。

このファイルの中に

remote vpnXXXXXXXXX.v4.softether.net 1194

のような行があります。 この行の v4v6 に書き換えて下のようにします。

remote vpnXXXXXXXXX.v6.softether.net 1194

編集が済んだらファイルをクライアントに送っておきます。

VPNクライアント(Android)の設定

VPNクライアントに設定をしますが、VPNのアカウントを作っておきます。

作りかたは、 L2TP/IPsecサーバの構築 (3/3) 設定編 にある UserCreateUserPasswordSet コマンドの部分を参照してください。

すでに何らかのアカウントが設定されていれば、それを使うこともできます。

次にVPNクライアントになるAndroidにアプリをインストールします。

Google Playの OpenVPN Connect – Fast & Safe SSL VPN ClientからAndroid用のクライアントをダウンロードしました。

アプリを立ち上げて、メニューから Import Profileで、先ほどの設定ファイルを読み込みます。

VPNアカウントのユーザー名とパスワードを設定すれば完了です。接続してみましょう。

あとしまつ

最後にVPNサーバーの Administrator のパスワードを設定します。

$ sudo ./vpncmd localhost /server /cmd ServerPasswordSet <<password>>

コマンドヒストリにパスワードなどが残っているので消去しておきましょう。

$ history -c
$ history
    1  history

[おわり]