この記事で扱うこと
ChromeOS (Chromebook)でAndroidアプリ torne mobile を使う際、nasneとペアリングできない問題のワークアラウンド
TL;DR
LAN内でSoftEther VPNサーバを立ち上げ、Androidアプリの OpenVPN Connect を使ってVPN接続した状態でtorne mobileのペアリングを実施すれば成功した。VPN接続するのは3ヶ月に一度のペアリング時のみでよい。
以下、詳細
事象
事象としては、torne mobileアプリは立ち上がり、LAN内のnasneの検索はできてアプリ上に登録はできるものの、ペアリングができず、放送中・録画番組の視聴が行えないというものでした。
Twitterなどで「Chromebook OR ChromeOS torne OR nasne」のように検索すると、多くの人がさまざまなChromebook(以下、基本的にChromeOSと記載する)でAndroidアプリの「torne mobile」を使おうと試みているのがわかります。
しかしやはりtorne mobileではペアリングに失敗しているようで、ほかのアプリの「DiXiM Play」や「Video & TV SideView」などを使って回避しているようでした。
もちろんそれらのアプリでnasneの録画番組視聴をしてもよいのですが、torne mobileの使い勝手に慣れておりできればそちらを使いたいという人は多いようです。
調査
ChromeOSデバイスとして、ここではGoogle Pixel Slate (ChromeOS バージョン107.0.5304.92)を使いました。
torne mobileアプリはAndroidアプリであり、そこに割り当てられるIPアドレスはChromeOSの認識するLAN内IPアドレスそのものではなく、ISP Shared Address 100.64.0.0/10でNATされたアドレスでした。上記ツイートでarc0と言及した点です。
以下のスクリーンショットがAndroidアプリ「he.net – Network Tools」と「Network Analyzer」(スクショはPro版ですがフリー版でOK)での認識例です。LAN内では本来、 192.168.*.*
のアドレスを使っているのですが、それはどこにも表示されていません。
ChromeOS側にもネットワーク機能はいくつかありますが、有線LAN接続、Wi-Fi接続、VPN接続いずれの場合でも、Android側からは同様にNATされたアドレスしか認識されませんでした。どうやら、ChromeOS側のネットワークにそのまま参加することはできなさそうです。
それならば、AndroidのVPNアプリを使うとどうでしょう?
結論から書くと、VPNアプリで割り当てられるIPアドレスはそのものが使え、NATされたりはしませんでした。
ワークアラウンド
私のLAN内には既にSoftEther VPN ServerがWindowsサーバ上で稼働中でしたので、それに繋いでみます。
LAN内からLAN内のVPNサーバに接続するのはとても違和感があるかもしれませんが、今回はそれで良いのです。
AndroidのVPNアプリとして、ここでは「OpenVPN Connect – OpenVPN App」を使ってみます。SoftEther VPN ServerでOpenVPN用の設定ファイルを書き出して、OpenVPN Connectアプリに読み込ませましょう。
PCでのSoftEther VPN Serverの設定の詳細は省きますが、ウィザードどおりにローカルブリッジを設定していれば、あとはOpenVPNを有効化するだけで良いかと思います。
OpenVPN用の設定ファイルはzipファイルとして出力されますが、必要なのはその中身の *_openvpn_remote_access_l3.ovpn
だけです。
このovpnファイルをテキストエディタで開き、 remote *.*.*.* 1194
の設定を書き換えます。おそらくデフォルトでグローバルIPアドレスが記載されていますが、今回はここをVPNサーバのLAN内プライベートIPアドレスに書き換えます。
例として remote 192.168.252.2 1194
のようになるでしょう。
※グローバルIPアドレスのままでもヘアピンNATなどのネットワーク構成により繋がる場合もありますが、今回はRTTの要件などもありますので、ここではより安定するであろうプライベートIPアドレスにしています。
PCからChromeOSへのovpnファイルの転送にはGoogleドライブを使いました。
OpenVPNアプリで、本来のLAN内のIPアドレス 192.168.*.*
が使えています。しかしこれはSoftEther VPN Serverの実装によるものであり、Subnet Maskは 255.255.255.252
に狭められています。
SoftEther VPN Serverではブロードキャストなどのパケットを良い感じに取り次いでくれるため、L3 VPNであるのにまるでL2で参加しているかのように多くのアプリが使えます。torne mobileもその一つです。
このように、AndroidのVPNアプリを経由することで、ChromeOSでもtorne mobileのペアリングに成功しました。
一度ペアリングに成功すれば、3ヶ月は再ペアリングせずとも使用できるため、普段はVPN接続する必要もありません。ペアリング以外は、ChromeOSによってNATされていてもおおよそLAN内のように動きます。
ところで
今回、ChromeOSにおいてtorne mobileアプリとnasneのペアリングがLAN内では失敗するのでVPNを経由するという方法を取りましたが、RTT 7msの条件さえ満たせば、宅外からでもVPNでペアリングは成功します。
現実的にはRTT 7msを満たせる場合はあまりないかと思われますが、知っておくと今回のようになにか便利な活用方法があるかもしれませんね。