
以前にRaspberry Piを使ってL2TP/IPsecサーバを構築してたのですが、今回はOpenVPNでの構築方法になります。L2TP/IpsecでのVPNサーバの構築方法については以下の記事を見てください。
今回なんでOpenVPNを構築するというとなんですが、理由は主に2つあります。1つは、既にインストール済みのSoftEtherVPNというソフトがOpenVPNのプロトコルについても標準サポートしているので、簡単に設定が出来るということ。そして、2つ目は、性能検証のためになります。というのもOpenVPNは、アプリ型のVPNなんですが、噂ではL2TP/IPsecよりも軽くて早いという話を聞いたので、今回試しにスピードや使い勝手を試してみたいと思います。
またOpenVPNのもう一つの大きな特徴としては、L2TPではルータ側に特定のポートを開ける必要があるのですが、このポートが中継するルータ全てで解放されている必要があり、経路によってはVPNが接続できないなんていうこともしょっちゅうあるので、L2TP/IPsecが使えない時のサブ(もしくはメイン)としてOpenVPNを準備しておきたいと思います。
この記事の目次
構成
今回の構成は前回の記事の構成をそのまま使用します。特にRaspberry Pi側に新しいソフトなどは入れません。
- SoftEther VPN https://ja.softether.org/
- Raspberry Pi 3 Model B+
VPNサーバのインストール
以下の手順は、L2TP/IPsec構築時にSoftEtherVPNを既にインストール済みの人は再インストールする必要はありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#適当なVersionのファイルをDL(Linux/ARM32bit) $wget http://jp.softether-download.com/files/softether/v4.27-9668-beta-2018.05.29-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/ # パッケージを解凍 tar zxvf softether-vpnserver-v4.27-9664-beta-2018.04.20-linux-arm_eabi-32bit.tar.gz # フォルダごとを移動して、make sudo mv vpnserver /usr/local cd /usr/local/vpnserver/ sudo make # 実行権限を付与 sudo chmod 600 * sudo chmod 700 vpncmd sudo chmod 700 vpnserver |
インストールの確認は以下のコマンドで行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
$ sudo ./vpncmd vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド) Version 4.27 Build 9668 (Japanese) Compiled 2018/05/29 21:51:20 by yagi at pc33 Copyright (c) SoftEther VPN Project. All Rights Reserved. vpncmd プログラムを使って以下のことができます。 1. VPN Server または VPN Bridge の管理 2. VPN Client の管理 3. VPN Tools コマンドの使用 (証明書作成や通信速度測定) 1 - 3 を選択: 3 VPN Tools を起動しました。HELP と入力すると、使用できるコマンド一覧が表示できます。 VPN Tools>check Check コマンド - SoftEther VPN の動作が可能かどうかチェックする --------------------------------------------------- SoftEther VPN 動作環境チェックツール Copyright (c) SoftEther VPN Project. All Rights Reserved. この動作環境チェックツールを実行したシステムがテストに合格した場合は、SoftEther VPN ソフトウェアが動作する可能性が高いです。チェックにはしばらく時間がかかる場合があります。そのままお待ちください... 'カーネル系' のチェック中... [合格] ○ 'メモリ操作系' のチェック中... [合格] ○ 'ANSI / Unicode 文字列処理系' のチェック中... [合格] ○ 'ファイルシステム' のチェック中... [Unit] [合格] ○ 'スレッド処理システム' のチェック中... [合格] ○ 'ネットワークシステム' のチェック中... [合格] ○ すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。 コマンドは正常に終了しました。 VPN Tools>exit |
デーモンサービス化
これもデーモン化してない人は以下のコマンドでサービスの自動起動を設定しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# サービス起動ファイルの作成 (名前はお好みで) $ sudo vim /etc/systemd/system/softether-vpn.service [Unit] Description=Softether VPN Server Service After=network.target [Service] Type=forking User=root ExecStart=/usr/local/vpnserver/vpnserver start ExecStop=/usr/local/vpnserver/vpnserver stop Restart=on-abort WorkingDirectory=/usr/local/vpnserver/ ExecStartPre=/sbin/ip link set dev eth0 promisc on [Install] WantedBy=multi-user.target #実行権限の付与 $ chmod +x /etc/systemd/system/softether-vpn.service # デーモンの再起動と起動確認 $sudo systemctl daemon-reload $ 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 Fri 2018-09-07 17:21:53 JST; 4s ago Process: 26300 ExecStart=/usr/local/vpnserver/vpnserver start (code=exited, status=0/SUCCESS) Process: 26296 ExecStartPre=/sbin/ip link set dev eth0 promisc on (code=exited, status=0/SUCCESS) Main PID: 26303 (vpnserver) CGroup: /system.slice/softether-vpn.service ├─26303 /usr/local/vpnserver/vpnserver execsvc └─26304 /usr/local/vpnserver/vpnserver execsvc 9月 07 17:21:53 raspberrypi systemd[1]: Starting Softether VPN Server Service... 9月 07 17:21:53 raspberrypi vpnserver[26300]: The SoftEther VPN Server service has been started. 9月 07 17:21:53 raspberrypi systemd[1]: Started Softether VPN Server Service. # 自動起動設定 $ sudo systemctl enable softether-vpn |
VPNサーバの基本設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# 設定コマンドを起動 $ sudo ./vpncmd 1. VPN Server または VPN Bridge の管理 2. VPN Client の管理 3. VPN Tools コマンドの使用 (証明書作成や通信速度測定) 1 - 3 を選択: 1 # 仮想ハブを選択。今回は特に複数のハブを使って〜〜とは考えていないので、デフォルトのものを使ってます。 VPN Server>hub default Hub コマンド - 管理する仮想 HUB の選択 仮想 HUB "DEFAULT" を選択しました。 コマンドは正常に終了しました。 # ユーザの作成 VPN Server/DEFAULT>usercreate UserCreate コマンド - ユーザーの作成 ユーザー名: hoge 参加するグループ名: ユーザーの本名: ユーザーの説明: コマンドは正常に終了しました。 # ユーザのパスワードの設定 VPN Server/DEFAULT>userpasswordset UserPasswordSet コマンド - ユーザーの認証方法をパスワード認証に設定しパスワードを設定 ユーザー名: hoge パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。 パスワード: ******** 確認入力 : ******** コマンドは正常に終了しました。 |
VPNサーバ管理ソフトのインストール
OpenVPNを設定するためにはコマンドラインユーティリティ(vpncmd)を使っても良いですが、OpenVPNをCLIで設定するのがなんだかよく分からなかったので、今回はSoftEtherVPN管理ツールを使うことにしました。
以下、Webサイトからダウンロードしていきます。
SoftEther VPN のダウンロード:https://www.softether-download.com/ja.aspx?product=softether

ファイルが結構重い(275MB程度)ので、ダウンロードに時間がかかるかもしれません。SoftEtherVPN自体がRaspberry Piにインストール済みの方であれば、ダウンロードするのは”Server Maneger”だけOKです。
ダウンロード出来たら、単純に自分のPCにインストールするだけです。
OpenVPNの設定方法
インストールが完了したら、設定は全然難しくありません。アプリをダブルクリックで起動してください。
下の画面では、既にL2TP/IPsecの時に作成した接続設定が残っていますので、このままConnectをクリック。

RaspberryVPNに接続出来たら、次に右下のOpenVPN/MS-SSTPをクリック。

OpenVPNを起動するにクリックしてから、中ほどにある設定ファイルの生成をクリックして、設定ファイル(zip)をダウンロードしてください。

ダウンロードしたzipファイルを見ると、以下の2つのファイルがあると思います。
- xxxxxxxx_openvpn_remote_access_l3(普通のスマホ/パソコン用)
- xxxxxxxx_openvpn_site_to_site_bridge_l2(ブリッジ接続用)
通常の使い方(スマホ/パソコンでVPNサーバに接続する)であれば、remote_access_l3の方だけで十分です。このファイルを後ほど使いますので、VPN接続したいスマートフォンもしくはパソコンにコピーしてください。
VPN Clientの設定方法
iPhoneでのOpenVPN
iPhoneでの設定にはまずは以下のアプリをインストールしてください。
インストールが完了して、最初の画面を開くと、以下のページが出ると思います。一番下のOVPN Profileをクリックしてください。

するとovpnファイルをこのアプリにコピーするようにメッセージが出てきますので、先ほどダウンロードしたxxxxxxxx_openvpn_remote_access_l3ファイルをコピーしてください。
因みにコピーの仕方はいくつかありますが、メールで送るか、itunesで送るか、もしくはファイルサーバ経由で送り込むなどどれも大丈夫です。

ファイルがコピー出来たら、あとは接続するだけです。尚、接続にはユーザーネームとパスワードが必要ですが、L2TP/IPsecの際に使用したものと共通で使用できます。
因みにSoftEtherVPNでは、デフォルトでDDNS機能がされており、”vpn111222333.softehter.net”というホスト名を使用することが出来ます。そしてこのホストネームは、自動生成されているファイルにも記載済みですので、特に拘りがなければこのまま使用してもOKだと思います。
ルーターでのポート解放
最後に自宅のルーターでポート解放(ポートフォワード)してあげる必要があります。OpenVPNでは、1194/udpを使用していますので、私のElecomの設定画面では以下のような感じで登録してあげます。
因みにローカルIPアドレスは、SoftEtherがインストールされているRaspbery PiのIPアドレスになります。

ログの確認方法(デバッグ)
この手順でやってもタイミングなどによってはうまくいかないケースもあります。その場合は以下の2つを試してみてください。
- .ovpnファイルを編集して、remote vpn111222333.softether.netの部分をVPNサーバのローカルIPアドレス(192.168.12.xx)に変更し、同じWiFi LANの中から接続確認をする
- tail -f /usr/local/vpnserver/server_log/vpn_201901xx.logのコマンドを打った後に、もう一度接続を試してみてログをリアルタイムで確認する。
1つ目の確認で上手くいかない場合は、softether自体のインストールに失敗しているかユーザー/パスワードを間違えている可能性があります。もしくはRaspberry Piのファイアウォールの機能もあるかもしれません。
2つ目のポイントでは、メッセージが何も動かない場合はルーターのポート開放が上手く出来ていない可能性があるので、もう一度ルーターの設定を確認してください。
OpenVPN vs ??
OpenVPNと他のVPN、L2TPやIKEv2とガチンコでどちらが使いやすく、速度が早いのかなど、後ほど詳細に比較していきたいと思います。
最後に
OpenVPNはアプリ層での比較的に上のレイヤーでのVPNになりますので、たまに使用しているサービスの一部が使用できないケースもありますが、ほとんどは大丈夫だと思います。
オープンソースかつ軽いソフトなので、L2TPやIKEv2の比較によってはこちらをメインVPNにするかもしれません。