以前に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を既にインストール済みの人は再インストールする必要はありません。
#適当な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
インストールの確認は以下のコマンドで行います。
$ 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
デーモンサービス化
これもデーモン化してない人は以下のコマンドでサービスの自動起動を設定しておきます。
# サービス起動ファイルの作成 (名前はお好みで)
$ 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サーバの基本設定
# 設定コマンドを起動
$ 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にするかもしれません。
コメント