2022年12月27日火曜日

IPv6接続でBuffaloNASやフナイのHDDレコーダーにWEB経由でアクセスできるようになった

うちにはBuffaloのNASがありWEBアクセス設定をして便利に使っていたのだが、2年前、IPv6接続にした途端アクセスできなくなった。

原因はPR-500MIのIPv4でのポート開放設定がIPV6に切り替えた時に無くなったため。
改めて設定しようとしたら管理画面にIPv4用の静的IPマスカレードの項目自体が無い。
調べると「http://PR-500MIのipアドレス:8888/t」にアクセスし、「IPoE IPv4」を開くとその中に項目が移っているのでそこから設定してやればいいらしい。
しかし、その時自分のところのPR-500MI:8888/tにアクセスしても、「IPoE IPv4」はあったが、開いても肝心の「静的IPマスカレード」の設定メニューが無かった。

で他の方法もいろいろ試したが上手くいかなくて、ああ、うちのプロバイダ(DTI)では使えないのかもしれないと諦め、そのままにしていたのだけど、先程久しぶりにアクセスしたら「静的IPマスカレード」などの設定メニューが出現していた。ありがたい。早速試してみた。

件のページを開くと使えるポート番号の一覧があるので、そこから手頃のポート番号を選び、静的IPマスカレードでプロトコル:TCP、公開対象ポート:選んだポート、LAN側宛先IPアドレス:NASの固定IP、LAN側宛先ポート:80で設定。

持っているNASは「LS520Dfaa」という機種。
最初はスタンダードにBaffaloNAS.comネームを設定しUPnP有効で進めてみたがうまくいかない。結局、BaffaloNAS経由だと上手くいかないようなので、とりあえず「IPoE IPv4」のトップページに出ているIPアドレスに直接アクセスする方法を試すことにした。

「LS520Dfaa」にWEBブラウザでログインし、「環境設定」→「WEBアクセス」を開き、「リモート接続のオプション」にチェックし、「BaffaloNAS.comサーバー経由でアクセスする」と「UPnP」を共に無効にし、「外部ポート」に「80」を設定。
これで、外部から「http://IPoE IPv4でわかるうちのIPアドレス:選んだポート」でアクセスしたら、NASを開くことが出来た。

ちなちに、Buffaloで配布してるnasにアクセスするアプリでも、nasの設定で「外部のDNSサーバー」を使う設定にして、「アドレス」は「http://IPoE IPv4でわかるうちのIPアドレス」に、「ポート番号」に「選んだポート」を設定すればアクセスできる。

これで行けるなら、これも諦めていたフナイのHDDレコーダーへのWEB経由アクセスもできるかも知れないと思い、こちらも調べてみた。

フナイの宅外接続は「プロトコル:UDP」「ポート: 32768-61000」を開放してやればできるらしい。「IPoE IPv4」の「静的IPマスカレード」でプロトコル:UDP、公開対象ポート:32768~61000でうちで使える任意のポート、LAN側宛先IPアドレス:レコーダーの固定IP、LAN側宛先ポート:公開対象と同じポートで設定。
これで、外部からフナイコネクト・アプリで宅外接続をしてみたら、問題なく接続できた。

まあこのままだと、接続し直しなどでIPアドレスが変わるたびにIPアドレスを調べ直して設定しなおさなければならないので恒久的ではない。が、まあしばらくはこれでいいか。

DDNSで運用するのが吉なんだろうけど、DDNSも結局IPアドレスが変わった時に自動で更新かける方法がないと面倒くさい。

その辺が今後の課題。


2023年10月17日追記

この時から10ヶ月近く断続的に使ってるけど、同じIPアドレスで使えている。途中で終端装置を再起動した時もあるが変わってない。

同じ回線を複数世帯で使いまわしてる仕組みだからなのかな?

2022年12月15日木曜日

Fire7(第5世代)を文鎮化してしまった件

家に、AmazonのFire7(第5世代)が1台余っていた。

せっかくなのでマンガアプリなどを入れて読書用として活用しようと思ったが、Google PlayはインストールできるもののAndroidのバージョンが低くていつも使っているアプリが全然入れられない。

調べて見るとカスタムROMを入れている事例がちらほら見当たるので、ではそうしようと考え、結局文鎮化してしまった。

原因は、読みの甘さだ。
Fire7のroot化やカスタムROMインストールの事例は、そのほとんどが2015~2017年代のもので、当日FireOS5.0.*~5.3.*位を対象にしたもの。対して、手元のFire7は5.7.0。
PCと違い、タブレットやスマートフォンは、ほとんどの場合メーカーによってシステムがロックされていて、勝手にroot化やカスタムROMのインストールは出来ないようにされている。それを回避する技術の多くは、OSなどのセキュリティホールを利用するものであるため、バージョンが上がってセキュリティホールが埋められてしまうと、root化などの作業は出来なくなってしまうものらしい。
実際、Fireタブレットでも最近のバージョンのOSを積んだものではroot化などが出来なくなってしまっている。当然、私のものも出来ない可能性が高い。

しかし、この手の作業はやってみないとわからない部分がある。ネット上の文献も全ての状況の即した手順や説明が書かれているわけではない。書いてる人たちにとって語るまでも無いことや、語りたくないことは語られることがない。その隙間を類推と想像とで埋めていくことになるのだが、私は元々「やってみたい」に偏りがちだ。

今は昔、私が初めてLinuxに触れた時、インストールに失敗してHDDのMBRをおかしくしてしまい、デュアルブートにしていたWindowsが立ち上がらない状態にしてしまったことがある。当時、PCは家に1台しかなく、妻が友人からWindowsの起動ディスクを借りてきて、それを使ってMBRを修復し事なきを得たことがある。
それによって飛躍的にPCのブートの仕組みへの理解が進んだのだが、周り(PCを共有していた妻)から見たらただの迷惑行為でしかなかった。やらなくていい苦労に突き進んでしまいがちなのは、脳の欠陥だろうと思う。

ともあれ、曖昧な部分が多いから、とりあえず一個一個やってみようと思った。

試してみたのはROOTJunkyというサイトで配布されているツールを使った方法だ。

https://rootjunkysdl.com/?dir=Amazon%20Fire%205th%20gen/SuperTool

ここで配布されているツールは実際は「Kingroot」というツールを使ってroot化するものだった。使う前に、PCにADBツールを入れ、タブレット側でADBデバッグ可能な状態(設定>端末オプション>シリアルのところを連打して開発者オプションを出し、ADBデバックを許可)にし、野良アプリのインストールを許可(セキュリティとプライベート>不明ソースからのアプリを許可)しデータ通信ケーブルでつなぐ。
が、何度試してもroot化出来ない。どうもやはり、今のFireOSのバージョンではセキュリティホールが埋まってしまっていてroot化は出来ないらしい。
その方法をより確実に行う方法としてOSをダウングレードさせる方法が紹介されていた。
5.0.1とか5.1.1、5.1.2とかに落とすことで、セキュリティホールがある状態に戻すわけだが、一方で「ダウングレードで文鎮化」の事例もちらほら見当たる。

とりあえず、ROOTJunkyで配布しているツールが対応している最新の5.3.1にダウングレードさせてみよう。駄目だったら駄目でまた考えよう。

Fire7(第5世代)用のFireOS5.3.1のリカバリーイメージをダウンロードし、Fire7を一旦シャットダウンしたあと、音量下げ+電源ボタンを同時に長押してリカバリーモードで立ち上げ、sideloadを指定し、PCからadb sideloadでダウンロードしたイメージを指定して焼く。時間にして十分くらい。焼き終えて再起動がかかった。

が、何も点かない。

電源を何度も入れてみる。

全く画面に反応がない。

ああ、文鎮化してしまった。

仕方なく、文鎮化した時の直し方を調べてみた。ちなみに文鎮化は英語で「brick」という。文鎮化を解除することは「Unbrick」で調べると良い。

はじめに試したのはFireTv2の文鎮化を治すツールを使う方法。

文鎮化しているFire7をPCのつなぐ。一見何も反応していないデバイスだが、実はPCに「不明のデバイス」として一瞬認識され、解除され、また「不明のデバイス」として認識されを繰り返しているという、そこで、認識された瞬間にpreloaderのドライバーを噛ませてPCから使える状態にする。

この状態でパーティション情報などが生きていれば、downloadモードと言って、ちょうどPCをBIOSで立ち上げたような状態で、OSを書き込むことができるモードになるらしいのだが、文鎮化している場合、パーティション情報が壊れてしまっている場合が多い。
だから、まずはパーティション情報を直してやる必要がある。

で、件のFireTV2用のツール。これを使うとパーティションの情報を調べたり、それを書き込んだりすることができるらしい。
だが、これを使ってもうまくいかなかった。デバイスは見つかるが最初のHandshakeのところで止まる。対象としているのがFireOS5.1.1当たりまでだったからだ。

それ以降のバージョンでも使えるツールを探したら、amonetというツールが見つかった。これを試そう…と思ったのだが、残念ながらPythonとシェルスクリプトで構成されている。
私のPCはWindows10でシェルスクリプトを使える環境を整えていない。Linuxなどのほうがやりやすいらしい。

で、Ubuntuをダウンロードして、必要な設定をして、amonetの中にあるbootrom.shをsudoを付けて実行。今回もデバイスは見つかる。しかし今回もHandshakeで止まる。

どうやら、かなりギタギタにパーティションテーブルを壊してしまっているらしい。ブートローダーが壊れてしまっているのでどうにもならない感じ。

だが、デバイスが認識されているなら、強制的にデータを入れ込むことはできないのだろうか?PCでパーティションイメージを強制的にHDDに書き込むみたいに。

調べてみると、MediaTekのデバイスにデータをダウンロードするツールがあるようだ。

SP-Flash Tool https://spflashtool.com/

最後の期待をかけて調べてみたが、書き込んだりするために必要なパーティションの地図にあたるscatterファイルというのが必要なのだが、Fire7(第5世代)用のそのファイルが見当たらない。他の会社のデバイスだと公式ROMと一緒に配布されているらしいのだが、無い。そのファイルがなければ、ブートローダにせよリカバリーイメージにせよインストールできない。

仕方なく、ネット上で手に入るscatterファイルを使って試してみたが、うんともすんとも言わない。万策尽きた。

今回は、とりあえず諦めることにしようと思う。残念。