せっていちぅ。なうろーでぃんぐ。

【OpenVPN】iPhoneで接続できなかった原因にドはまりしたけど解決できた話

最近、家の共有フォルダーに出先からアクセス出来るようにVPNサーバー構築(SoftEther VPN Server)を参考にしてVPNサーバーを構築しました!
構築して家の内部ネットからは繋がったのですが、外部(iPhoneのモバイルネット)から全く繋がらず。。。

解決した過程と結果を共有していきます。

外部からiPhoneが接続できなかった理由

色々試行錯誤した結果、接続に必要なL2TP/VPNパススルー機能付きルーターでないことが原因でした。

L2TP/VPNパススルーがある場合はVPNに関連する通信をそのまま流してくれるのですが、我が家はGMOとくとくBB 光アクセスのV6プラスを契約しており、ポート開放を自由にすることはできません。
※プロバイダから提示された限定的な範囲であれば可能

iPhone(外部)から我が家のネットにアクセスするためには[UDP 500、UDP 1701、UDP 4500、ESP(50)]のポート開放が必要なのですが、プロバイダから開放することは許可されておらず、待受ポートも変更できなかったためにドはまりしていました。

そこに気づきを与えてくれたのがこちらのサイトです。
IPoE(IPv6)向けSoftEtherでOpenVPNを構築する

OpenVPNを使えば解決する

上記のサイトでOpenVPNを知り、待受ポートを変更できるってことを知りました。

本当に革命だと思いましたね。

OpenVPNであれば開放できるポートが限定的な我が家でも可能です。ルーターの一覧画面から使えるポートを確認し、待受ポートをそれに変更してあげるだけで解決します。

全体的な解決方法の流れ

本記事でご説明する内容はSoftEther VPN ServerでVPNサーバを構築していることを前提にしています。
我が家はAlmaLinuxで構築していますが、Windows版のSoftEther VPN Serverでも同じ内容で可能だと思いますので、参考になるかもしれません。

  1. ルーターで開放できるポートを確認
  2. firewallからポートを許可する(必要な場合のみ)
  3. VPN サーバー管理マネージャから待受ポートを追加
  4. OpenVPNを有効化
  5. OpenVPNアプリをインストール

↑の流れでやっていきます。

都度補足していきますね。

ルーターで開放できるポートを確認

ルーターの管理画面にログインし、開放できるポートを確認します。
メーカー毎にログイン方法、ポート開放の方法は異なるのでメーカー別ルーターポート開放手順を参考にしてみてください。

我が家では「64768」を開放することにしました!

firewallからポートを許可する(必要な場合のみ)

我が家はAlmalinuxで外部に公開するのでセキュリテイ的にfirewallを有効化しています。
明示的に「64768」ポートを許可してあげないと接続できないため、publicとdomesticゾーンに対してUDP/TCPを許可する設定を入れ込みました。

#ポートの許可
firewall-cmd –add-port=64768/udp –zone=public –permanent >/dev/null
firewall-cmd –add-port=64768/tcp –zone=public –permanent >/dev/null
firewall-cmd –add-port=64768/udp –zone=domestic –permanent >/dev/null
firewall-cmd –add-port=64768/tcp –zone=domestic –permanent >/dev/null

#firewalldサービスリロード
systemctl reload firewalld.service

VPN サーバー管理マネージャから待受ポートを追加

SoftEther VPN Server管理マネージャを起動します。
SoftEther VPN サーバー管理マネージャより、リスナー一覧(TCP/IP ポート)の「新規作成」ボタンから、ルーターで開放したポート番号64768を入力して「OK」をクリックします。


「リスナー一覧」にポートが追加されていることを確認してください。
「開始」をクリックし、待受ポートを有効化してあげてください。

※開始済みなので「開始(G)」がグレーアウトしてます。

OpenVPNを有効化

「OpenVPN / MS-SSTP 設定」をクリックします。


以下を設定してください。

  • 「OpenVPNサーバー機能を有効にする」をチェック
  • OpenVPNサービスを提供するUDPポート:開放したポート番号(例:64768)

完了したら「OK」をクリックします。

クライアント設定用ファイルのエクスポート

後述「OpenVPNアプリをインストール」でアプリに設定するファイルをエクスポートします。
エクスポートしたzipを解凍し、「_l3.ovpn」となっているファイルをクラウド、メールなどで共有してiPhone/Androidで開けるように準備してください。

「OpenVPNクライアント用のサンプル設定ファイルを生成(C)」をクリック
設定のために「_l3.ovpn」ファイルを共有したい

OpenVPNアプリをインストール

使っている機種ごとに「OpenVPN Connect」を入れます。
以下Storeリンクから直接インストールできます。

iPhone版:OpenVPN Connect – OpenVPN App

Andoroid版:OpenVPN Connect – OpenVPN App

OpenVPNアプリの設定

OpenVPNアプリを設定していきます。
iPhoneでご説明しますが、Andoroidもそう変わらないのでご安心を。

「_l3.ovpn」ファイルを開く

ファイラーで「_l3.ovpn」を選択します。
左下共有アイコンを選択し、メニューから「OpenVPN」を選択します。

プロファイルをインポートする

OpenVPNアプリが開いたら「ADD」を選択します。
[Profile Name]、[Server Hostname(locked)]が正しいことを確認したら、「UsernameにOpenVPNで使用するアカウント名」を入力し、「CONNECT」を選択します。

パスワードの入力が求められたら「UsernameにOpenVPNで使用するアカウント名」のパスワードを入力してください。

「ADD」を選択してプロファイルを追加
「OpenVPNアカウント名」を入力して「CONNECT」を選択

 

まとめ

どうでしょうか?繋がりましたか?

私はこの手順で無事に繋がったので備忘代わりに記事を書きました。

ダメだったら「ルーターのポート開放設定」見直したり、「OpenVPNアカウント」を再確認したりが必要かもしれませんね。