« Apple iPhoneを接続して外してから”デバイスが応答しなくなっているか、デバイスとの接続が解除されています。”が多発するようになった件について | トップページ | IO-DATAの古いルータを分解して見る »

2022年9月 4日 (日)

Android12搭載のスマートフォンから自宅ネットワークへVPN接続できる環境を作る

スマートフォンを買い換えたらAndroid12からIKEv2/IPsecでしかVPN接続設定を作れなくなったので、VPN接続できるように自宅ネットワーク側に新たにVPNサーバーを立てることにした。
2023/10/10追記:
VPNに使用していたNanoPiが壊れたのでルーターを新調しOpenVPNからWireGuardへ変更して再構築した記事を追加。

まず最初に考えたのが現在使っているYAMAHAのRTX810へIKEv2/IPsecサーバを立てる事。
これは色々調べた結果、証明書関係を設定する場合に頻繁なメンテナンスが必要で運用上の手間がかかりそうなことが分かったので没に。

次に考えたのがテストで使用しているサーバPCのWindowsのWSL機能を使ってubuntu上にstrongswanでIKEv2/IPsecサーバを立てる事。
これはWindowsのリアルNICからubuntuの仮想NICへトラフィックを転送する設定が別途必要となり、サーバ設定を試行錯誤していてどこが問題か切り分けが難しくなり時間が掛かりそうになったので途中で中止。

この辺でVPNサーバの設置方針を変更し、VPN接続方式をIKEv2/IPsecからOpenVPNへ舵を切った。
それに伴ってVPNサーバには以前作成した未使用PCを使ったDD-WRTルータを使う事にした。
これはDD-WRTではデフォルトでOpenVPNサーバ設定項目があった為、またAndroid12でもアプリストアからOpenVPN接続用ツールを使えばVPN接続可能なことが分かったからだ。

しかしここでも問題が発生。
DD-WRTでOpenVPNサーバの設定を行ってもVPNクライアントから接続できない。
パケットモニターでルータへのコネクションに対してリセットパケットを返しており、原因を色々調べた結果DD-WRT上でOpenVPNサーバが起動していないことを確認した。
コマンドラインからの直接起動を試みたがダメで、別バージョンのファームウェアに変えて再設定しても現象は変わらず。
多分私の環境が問題と思われるが原因切り分けは時間が掛かりそうなのでルータソフトをDD-WRTからOpenWrtへ変更することに。

OpenWrtでもOpenVPNサーバを別途導入すれば設定可能で、仮動作させてサービスが起動していることを確認して作業を続行した。
最終的にVPN接続可能となり、Android12のスマートフォンから自宅ネットワークへ接続で来たので必要な情報を下記に記載。
(設定情報には不要・有効でない設定内容も含む)
早急に対応したかった自宅LANへのVPN接続が達成できたので、今後はstrongswanを用いたIKEv2/IPsecサーバを立ち上げてandroid12の素のVPN接続設定で接続できるように検証後上手く行けばOpenVPNから切り替えの予定。

使用ツール・追加パッケージ
・Android12側
 OpenVPN Connect

・OpenWrt側
 openvpn-easy-rsa 3.0.8-3
 openvpn-openssl 2.5.3-3
 luci-app-openvpn git-22.025.78298-e927a11
 luci-i18n-openvpn-ja git-22.240.58472-bdaec14
注:openvpn-easy-rsaはWindows上のツールで代用したので最終的には使用しなかった。

・WindowsPC
 vpnux PKI Manager
OpenVPN.JPが提供しているeasy-rsaに代わるツール。
GUIからOpenVPNに必要な各種証明書・関連ファイルを作成出来る。

設定情報
・OpenVPNサーバ用.ovpnファイル
persist-key
persist-tun
ca /etc/openvpn/ca.crt ->プライベートCA証明書
cert /etc/openvpn/xxxx-xxx.crt ->プライベートサーバ証明書
comp-lzo adaptive
dev tun
dh /etc/openvpn/dh2048.pem ->暗号関連用ファイル
ifconfig-pool-persist /tmp/ipp.txt
keepalive 10 120
key /etc/openvpn/xxxxx-xxx.key ->プライベートサーバ証明書の秘密鍵
port 1194
proto tcp-server
push "redirect-gateway"
push "192.168.250.0 255.255.255.0"
server 10.80.0.0 255.255.255.0
status /tmp/openvpn-status.log
user nobody
verb 5

・OpenVPNクライアント用.ovpnファイル
remote 公開VPNサーバのURL 1194
client
remote-cert-tls server
dev tun
proto tcp
resolv-retry infinite
nobind
persist-key
persist-tun
float
cipher AES-256-CBC
comp-lzo
tls-client
key-direction 1

<ca>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
</key>


OpenWrt WEBコンソール設定画面

・インターフェース関連
Interface
他の設定画面での設定の都合上”VPN”の名前でtun0インタフェースを登録

 デバイス
Device
VPN設定を追加すると”tun0”がデバイスとして自動作成される

・OpenVPN関連
Vpnserver
最初から用意されているサンプル設定を修正して使用の為、名前が”sample_server”のまま

 VPN-基本設定
Settei1
追加項目からprotoを追加、デフォルトのUDPからTCPへ変更


 詳細設定-サービス
Vpnservice


 詳細設定-ネットワーク
Vpnnetwork


 詳細設定-VPN
Vpnvpn
追加項目からpushを追加、クライアントデバイスから自宅ネットワーク向けのルーティングテーブルを設定。
redirect-gatewayはクライアントデバイスのインターネット接続を自宅ネット―ワーク経由で行う設定。


 詳細設定-暗号設定
Vpnencrypt
VPN暗号化関連設定。
別途作成した各ファイルをここからアップロードして設定。

ファイアウォール
Firewall
クライアントデバイスが自宅ネットワークへアクセス出来る様に設定を追加。
VPN=>lanが追加した設定。
これが無いとVPNを接続した意味がなくなる。

 ファイアウォール - ゾーン
Firewallzone
上記設定の詳細

NAT設定
Nat
今回の設定ではVPNのネットワークと自宅ネットワークは別ネットワーク体系なのでクライアントデバイスはVPNルータのLAN-IPアドレスをNATで使用して自宅ネットワークへアクセスする設定にした。
ゲートウェイルータが1台でVPNサーバも兼ねているならNAT設定がなくても通信できる。
又はデフォルトゲートウェイルータにVPNルータへパケット転送する設定を追加しても通信可能。
設定ではVPNルータのWAN側はインターネットへ直接接続していない為、”from”のzoneは制限していないが一般にはVPNのネットワークゾーンに制限する。

ソフトウェア
Software
OpenWrtに追加インストールしたパッケージ。
OpenVPN関連とコンソールの日本語化関連。
あとこれ以外にUSB-NICのドライバも導入、eth1として使用中。

ステータス
Status
OpenWrtを実行している端末のステータス情報。

あとバグと思われるが、VPNの詳細設定を使用すると基本設定で追加した”proto”項目が消えてデフォルトのUDPに戻る。
詳細設定変更後に基本設定から再度追加設定するとちゃんと反映される。

VPNサーバーのテスト構築が上手くいったのでこの辺のルータを調達して本番稼働用に交換するか思案中。

--------------------------------------------------------------------------------------
2022/09/08追記:

本格運用に当たってやはり専用のハードを調達。
上でLinkを張っているFriendlyElec製のNanopi R2Sを購入した。
R2a_buy

カタログでは重さ140g、ケース込み150gとなっているが
Weight
実際は153gであった。
あと添付品としてペラ1枚のユーザーガイドが入っていた。
Manual_blog 
記載URLにアクセスして必要な情報を見るようにとの事だが、このURLはアクセスできなかった
実際はwwwを付けずにyouyeetoo.com/blog/ へアクセスする。
せめてサイトで転送設定位はしておけよとは思う。

無事アクセス出来たら右側のsearch窓からこの機種用のDocument CodeであるYS00118を入力。
Blogserch
出てきたリンクをクリックするとこの機種用ページへアクセスできる。
Blogr2s

まあ大した内容は無くてほとんどは関連資料へのリンクだけ。
実際はこちらのWikiに飛ばされるので必要な情報はこちらで確認することになる。


Amazoの商品ページの説明文で本体とUSB Type-Cケーブル付属となっているがケーブルはついていなかった。
実際梱包の箱の大きさはルータの大きさとほぼ同じの為、ケーブルを添付するスペースが無いので恐らく最近の物には最初から付いていないのではと思われる。
どちらにせよSDカードとUSB給電アダプタも別途いるので適当に余っているもので対応することに。

本体確認後は必要なファームウェアをダウンロード。
OpenWrtで事前設定したのでOpenWrtをダウンロードすることに。
この機種用のファームウェアはOpenWrtのサイトからダウンロードできる。

OpenWrtのDownloadsからstable版若しくはSnapshot版をクリックし、
Ovpndl

ファームウェアのバージョンを選択後にtargetsからrockchipを選択、
Target

armv8フォルダ配下にあるイメージファイルから必要なイメージファイルをダウンロードする。
Dlimage
私は今回一番上のfrendryarm_nanopi-r2s-ext4-sysupgrade.img.gzを使用した。

ダウンロードしたファイルを展開してimgファイルをSDカードに書き込む必要があるが、私はRuftを使用して特に問題なく書き込み出来た。
SDカードの容量は1GBもあれば十分と思うが、そんな容量のカードを用意する方が困難なので16GBを使用。
(上の記事で動作確認用に作成したOpenWrtは8GBの物を使用している)

一応正常に起動しているかどうかの判断はLANポートがリンクアップするかどうかで判断可能。
書き込んだファームウェアが読み込めていないとLANポートが動作開始しない。
本体にWAN・LAN・SYSのLEDがあるが、SYSは赤色から変化しないので見た目では起動の判断は不可能。
LANポートがリンクアップすればWAN・LANは緑に点灯するのでこちらで判断する。
Ledstatus
写真に写っているが放熱と滑り止めにゴム足を付けている。

以下R2SのWEBコンソールから。
初期設定時は192.168.1.1へ接続、パスワードなしでアクセスできる。

・ルータ ステータス画面
Status_r2a

設定は上の記事で述べている通りだが、ファイアウォールに1点だけルール追加が必要であった。
Fwvpn 
X86-64版では自動設定してくれたみたいだったが、OpenVPNの接続用ポートの開放が必要であった。
それ以外に追加の設定は必要なかったが、最初どうしてもLANからVPNへのパケットが通過せず色々設定変更したが結局設定を元に戻してリブートしたら解決した。
設定変更が即時反映とはいえ動作異常を起こす場合もあるので、設定変更後はリブートするのが間違いないかも。

設定完了後にGateWayRouter配下に設置、speedtest.netへ接続し速度測定を行った。
Speedtest2
・WEBコンソールでの表示
Speedtest_20220908233201
実際の回線でこれ位出るのであれば特に問題はなさそう。
現在は並行稼働中だが、この後問題なさそうであれば未使用PCにインストールした方は取り外してR2Sの方で常時運用する予定。

|

« Apple iPhoneを接続して外してから”デバイスが応答しなくなっているか、デバイスとの接続が解除されています。”が多発するようになった件について | トップページ | IO-DATAの古いルータを分解して見る »

自宅サーバ関連」カテゴリの記事

ハードウェア」カテゴリの記事

ソフトウェア」カテゴリの記事

R2S」カテゴリの記事

Nanopi」カテゴリの記事

OpenWrt」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« Apple iPhoneを接続して外してから”デバイスが応答しなくなっているか、デバイスとの接続が解除されています。”が多発するようになった件について | トップページ | IO-DATAの古いルータを分解して見る »