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ファイルを使って試してみたが、うんともすんとも言わない。万策尽きた。

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

2022年6月26日日曜日

発達障害者の出てくる物語

 発達障害者が出てくるお話が昨今多いが、それらに出てくる発達障害者の有り様・役柄には以下の4タイプのいずれか、もしくはいくつかの組み合わせが多いように思う。

  • 敵 害意がある、もしくは害意はないが実害がある存在。
  • 怪物 実害はないが迷惑な存在で、混乱や波乱の元凶となる存在。
  • 天才 人並み外れた感性や技能・才覚を持つ存在。
  • 愛玩物 才能はないけど素朴だったり素直だったり可愛い存在。
これらにはまらない、例えば私のような「害は少なくあまり迷惑じゃないが、でもまあ面倒くさくて、才はなくかわいくないキモいおっさん」などには、物語上での出番は少ない。
出番があったとしてもメインストーリーではなく賑やかし、フレーバー、モブとしてで、仮にメインになることがある場合は「そういうあまり面白みのない存在が、何らかの出来事をきっかけに、4つのいずれかに変わる。」物語として構成されている様に思う。

物語の構成パターンは以下の2パターンが多い。
  • 敵や怪物の発達障害者がちょっと変わることでみんなに受け入れられる。
  • 天才や愛玩物の魅力が知れ渡り、そのままでいることをみんなに認められる。
この展開は、よく考えると共存の物語ではなく、許容と従属の物語だ。しかし、発達障害を持たない多くの人にとっては、この辺のラインが、発達障害を自分ごととして受け入れられるぎりぎりのラインということなのかも知れない。

上記四つの役柄と二つの展開を意識して、わかりやすく構成した物語ほど、話題になり、人気を博してるように思う。
もちろん世の中には、それらから離れた存在や展開で物語を構成しようとしてる作品はあると思うが、寡聞にして知らない。強いて挙げればつげ義春の『無能の人』とかだろうか。でも、知る人ぞ知るという作品だと思う。

私も頑張ろう(棒)。

2022年5月11日水曜日

Pythonでグラフなどのあるシートを同じExcelブック上で名前変更してコピーする方法

PythonでグラフなどのあるExcelシートを同じブック上でコピーしようとしたら色々手間がかかったので備忘録。

最初はopenpyxlを使おうと思ったが、文字や数値などのデータはコピーされるが、グラフや画像はコピーされない。openpyxlが対応していないのだ(2022年5月11日時点 openpyxl 3.0.9)。

で調べたら、こちらのページにExcelマクロを使うやり方が載っていた。
Pythonからpywin32でExcelマクロを実行してマクロでシートをコピーするというやり方。

でも、ならpywin32だけでも出来るんじゃないか?と思って書いたのが以下。

data_path=Excelファイルのファイル・パス
tab_name=コピー元のシートの名前
new_tab_name=コピーしたファイルの新しい名前
として、

import win32com.client

xlApp = win32com.client.Dispatch("Excel.Application")
book = xlApp.Workbooks.Open(data_path)
book.Worksheets(tab_name).Copy(After=book.Worksheets(tab_name))
xlApp.ActiveWorkBook.Worksheets(tab_name).name = new_tab_name
xlApp.ActiveWorkBook.Worksheets(new_tab_name).Move(Before = None, After = book.Worksheets(tab_name))
book.Save()
book.Close()

これを実行すると、
  1. pywin32でexcelファイルを開く。
  2. tab_nameというシートをtab_nameの後ろにコピーしようとするが、一つのブック内に同じシート名では追加できず、また、この時点では名前の変更ができないので、自動的にbook1というブックが作られそこにコピーされる。
  3. book1はアクティブなブックなので、「アクティブなブックにあるtab_nameというシート」を指定し、名前をnew_tab_nameに変更する。
  4. book1のnew_tab_nameというシートを元のブックのtab_nameというシートの後ろに移動する。移動の結果book1はシートが無くなるので消滅する。
  5. 元々のブックをセーブして閉じる
という流れで処理される。
これなら、Excelマクロを使わなくても、グラフや画像のあるシートを同じブック上で別名でコピー出来る。


(ただ、book1は明示的に開いたり閉じたりしてないのでプロセスが裏で残っているのでは?という不安はある。タスクマネージャーで見る分には大丈夫の様なんだけど…。)

2022年4月17日日曜日

Gmailで同じドメインのメールをやり取りすると「このメールにご注意下さい」と出る問題

 最近、GoogleがGmailのセキュリティ絡みをいじったらしく随所で「このメールにご注意下さい」と表示されるようになったのだが、それが落ち着いて来たのに一向に表示が出続けるアドレスがある。会社のメインのメールアドレスだ。

メインのメールアドレスでそんな表示が出るのはよろしくない。そこでレンタルサーバーの会社に連絡を取り色々手を入れたがなかなか改善せず、どうやらGoogleの仕様の問題っぽいため手の打ちようが無いらしい。

で、改めていろいろなパターンを調べた結果、次のような事がわかってきた。

  1. 会社のドメインのメールアドレス同士で、両方Gmailでメールの送受信を行うと、GoogleのサーバーのIPアドレスでSoftfailとなり「このメールにご注意下さい」が出る。
  2. 会社のドメインのメールアドレス同士で、片方はそのレンタルサーバー付属のWEBメール、片方がGmailの場合、WEBメールから送ったものは「このメールにご注意下さい」が出るが、メールヘッダにあるIPアドレス=WEBメールのサーバーのIPアドレスを、メールサーバーのDNSレコードのTXTにSPFテーブルとして+ip4:×××.×××.×××.×××で登録してやると表示が出なくなる。
  3. 会社のドメインのメールアドレス同士で、片方はWindows付属の「メール」を、片方がGmailの場合、「メール」から送ったものは「このメールにご注意下さい」が出るが、メールヘッダにあるIPアドレス=そのパソコンがインターネットに接続しているプロバイダのサーバーのIPアドレスを、メールサーバーのDNSレコードのTXTにSPFテーブルとして+ip4:×××.×××.×××.×××で登録してやると表示が出なくなる。
  4. 会社のドメインのメールアドレスから、個人のgmail.comのアドレスに送信した場合は表示されない。

そう、結局、「同じドメインのメールのやりとりをGmailで行うと表示が出る」が、他のメーラーが絡んだ場合は必要な設定をDNSレコードに追記すれば表示が出ないし、他人のメールアドレスに送信した場合は表示されていない…らしい。

ちなみに穿った記事では、GoogleWorkspaceに契約した場合はそうした状態でもこの表示は出ないので、Googleとしては会社内で使うような場合はGoogleWorkspaceを契約してほしいといからわざとこの辺の手を抜いてるのだ…という説もあった。

個人的には、仕事の環境的にどちらかのアドレスをGmail以外に移行するのは難しい。もちろんGoogleWorkspaceに移行するのも無理。

どうしたものかなあ。