Google Nest Miniに引退いただく

うちは1Kの狭小物件ですが、Googleのスマートスピーカーを3台置いています。

居間:Google Home (2017年購入)
台所:Google Nest Mini (2020年購入)
洗面所:Google Home Mini (2017年購入)

こんな感じで。

このうち台所のGoogle Nest Miniは、冷蔵庫に足りないものを買い物リストに追加したり、タイマーとして使ったりしていたんですが、1年ぐらい前から3分の1ぐらいの確率で

「エラーが発生しました。数秒後にもう一度お試しください。」

と言われるようになってしまいました。

だめならだめで、居間のに頼めばいいんですが、そうするとタイマーはアラームが居間の方で鳴ってしまうので、止めるのがちょっとめんどうです。
(声で止めようとするとうまくいかないことがけっこうあるので、物理的にタップで止めたい派。でも火を使っていたりすると離れられない。)

ネットで調べると、このエラーはWi-Fiの接続が悪いと出るという話なんですが、位置を入れ替えてもGoogle Nest Miniでしか起こらないし、ファクトリーリセットをかけても直りません。中途半端なハードウェア障害なんかな?

この問題はずっと放置していたけど、この前の無線ルータの買い替えを機にこちらも対応することにしました。

対応策

一番使用頻度の少ない洗面所での運用をやめてGoogle Home Miniを台所に持ってくる案も検討してみたんですが、

Google Nest Miniとちがってタップでアラームが止められないのはやっぱり不便。

今のと同じGoogle Nest Miniを新しく買って入れ替えるのが一番お手軽そうやけど、同じ症状がまた出ないとも限らないので、ハードウェア構成はちょっと変えたいです。

ということで、ラジオや音楽の再生に使っていた居間にGoogle Nest Audioを新しく導入して、

Google Home:居間 → 台所
Google Nest Mini:台所 → 廃棄
Google Home Mini:洗面所のまま

こんな感じで玉突きで置き換えることに。

これで台所でエラーが発生しなくなって、居間のスピーカーの音質がちょっとよくなりました。

せっかくなので、Googleアシスタント、早くBardと統合してほしいなあ。

木曽川・長良川・揖斐川のバーチャル下見

前から気になっていた名古屋の西の方の川ぞいの自転車道ですが、今回の帰省の途中で寄るかも?

ということで、具体的にどの区間がインラインスケートで行けそうか衛星写真やストリートビューで追跡してあたりをつけてみました。それである程度の区間行けそうかもと思ったのが次の2か所。

ナガシマスパーランド周辺

木曽川と長良川にはさまれた中洲のようなエリアのうち、JR関西本線より南の沿岸。折り返しで18kmぐらい。

スタート・ゴールとも長島駅からアクセスができて、南端の長島温泉からは名古屋駅や桑名駅方面にバスも出ているようです。

揖斐川右岸の木曽三川公園周辺

こちらは7kmほどの区間ですが、スタート・ゴールとも鉄道アクセスができそう。養老鉄道の石津駅と多度駅。

追記 2024-01-09

Chromebookとトラベルルータでネットワーク調査環境を仕立てる

メインPCのChromebook化の際にあきらめていたのが、ネットワーク調査用途。

Rethinkの導入で、自端末のセッション情報ぐらいは旅先でも確認できるようにはなりました。

で、この前買ったトラベルルータは、tcpdumpでパケットキャプチャができることがわかりました。これがあったら、アプリを入れられないKindle端末や旅先でこまっている人のPCのトラブルシューティングにも使えそう。

あとはこのキャプチャデータを読む環境があれば・・・

CloudShark

まず見つけたのがCloudSharkというサービス。

このサンプルデータを見ても、だいぶWiresharkそっくりの操作感で使いやすそう。

ただ、無料では使えなくて、年払いでも$29/月。お高いです。

Gigasheet

次に見つけたのがGigasheetというサービス。

ライトな使い方なら無料でも大丈夫なんですが、デフォルトでは表に時間列がなかったりと微妙に使いづらいです。何もないよりはだいぶましやけど。

Linux版Wireshark

そして最終的に落ち着いたのが、ChromebookにLinux版のWiresharkを入れるという案。

こんな簡単にできるんかー。しかもうちのWindowsで動かすより動作がさくさく。

ChromebookのLinuxのネットワーク環境は、Androidアプリ環境と同様、シェアードアドレスの仮想的なサブネットに押し込められています。なので、このWiresharkでキャプチャをしても、Linux環境の通信しか取れないので注意。
(Androidアプリとも別サブネットになっているので、Androidアプリの通信も取れません。)

おまけ

このトラベルルータにはLANポートが2つついているんですが、これをDHCPやら何やらを働かせないただのスイッチポートにしてしまって、

[機器A]–[機器B]

[機器A]–(LANポート1) トラベルルータ –[機器B]

こんな感じで有線区間にはさみこんで通信を素通りさせれば、リピータハブで分岐させてキャプチャする代わりみたいなことができるかも?

と思ってやってみたんですが、これだと通信は素通りするんですが、トラベルルータ上のtcpdumpで何も取れませんでした。高速化のために、ブリッジングはOSが関知しないハードウェア処理にしてるからかな?

これがうまくいったら、ふつうに業務用途で使えそうやのになあ。ネットワークの論理構成に影響を与えず、PCなしでキャプチャし続けられるし、場所も取らないし。

GL.iNetの無線ルータで金盾越えのしくみを作ってみる

旅先用の無線ルータを買っていろいろ遊んでいたんですが、あれこれおもしろいことができそうなことがわかったので、もう1台買って家の無線ルータを置き換えました。

家用のは1世代新しいこちら。同じトラベルルータというくくりではあるんですが、181gとちょっと重いので、旅先向きではないかな。

一般的な金盾越えのしくみ

中国ではたとえばGoogleが使えないけれど、それは

[端末]–[金盾]–[Google]

こんなふうに通信経路に金盾が入っていて、通信相手が禁止対象だったら接続をブロックするというしくみになっているんだと思います。

VPNを使えば回避できるとよく言われているけれど、VPNを使うと

[端末]–[金盾]–[VPNサービス(中国国外)]–[Google]

構成はこんな感じになります。金盾からすると、端末の通信相手はGoogleではなくVPNサービスであるかのように見えるので、VPNサービスが禁止対象になっていなければGoogleとの通信ができてしまうというわけです。
(VPNは通信の中身が暗号化されているので、本当の通信相手がGoogleであることは中継機器には見えません。)

で、VPNサービスとしてはProton VPNが無料で使えて便利なんですが、中国では使えなかったという話を見かけます。

Proton自体が禁止対象になってしまっているようなのでそういうことかなと。

中国で使えたというVPNサービスがネットでいろいろ紹介されているんですが、どれも月額料金のかかるものばかり。これをなんとかサブスクに頼らずできるようなしくみを作ってみることにしました。

サブスクなし構成を作ってみる

[端末]–[金盾]–[家の機器]–[Googleなど]

一番シンプルなのはこんな構成です。家の機器は不特定多数の人がアクセスしに来るようなものではないので、ブロック対象として目をつけられにくそう。

でもうちのアパートのネットワークは、部屋までグローバルIPが来ていないので、インターネットから直接アクセスする構成にはできません。

ということで、GL.iNetの無線ルータで利用できるZeroTierという仮想閉域網サービスを利用することに。このサービスは小規模構成なら無料で、今のところ金盾でブロックされていません。ZeroTier自体にはインターネットに出ていく機能がなくて中継用途では使いづらいので、今後もブロックされることはないかも?

で、ZeroTierと家のルータをいろいろいじって、

[端末]-(VPN)-[ZeroTier]-(VPN)-[家のルータ]–インターネット

こういう感じの仮想ネットワークを作るところまではわりとすぐにできました。端末からどこかのサイトにアクセスすると、そのサイト側からは接続元のIPアドレスが家からと同じに見えるようになります。

でもこれだと端末上でZeroTierのアプリを動かさないといけなくて、Kindle端末とかでは利用できないので、ZeroTierへの接続を旅先用ルータでできるようにします。

[端末]-(Wi-Fi)-[旅先用ルータ]-(VPN)-[ZeroTier]-(VPN)-[家のルータ]–インターネット

つまりこんな構成に。これがめっちゃ手こずりましたが、さっきなんとか完成。

Amazon Prime Videoは、ふつうVPN経由で接続するとこんなエラーが出て再生できないんですが、この構成だとVPN扱いされずに再生できました。

追記 2024-01-17

このしくみを使って、国外からでもAmazon Prime Videoを問題なく再生できることが確認できました。

金盾が接続先としてZeroTierをブロックすることがなくても、通信の暗号化のしかたとかを見てブロックすることはあるかも・・・?

手こずった部分 〜 テクニカルな備忘録

★GUIだけでは設定ができない

家のルータ(GL-A1300)は標準でZeroTierのアプリが組み込まれていたのでGUIで操作ができたんですが、旅先用ルータ(GL-SFT1200)はZeroTierをプラグインとして入れないといけなくて、その後の操作がCUIでしかできませんでした。

Chromebook標準のターミナルクライアントではなぜか接続できなかったので、

このアプリでSSH接続しました。

CUIでのZeroTierの設定はこのへんを参考に。

追記 2024-02-11

Chromebook標準のSSHクライアントでは接続できませんでしたが、Chromebook標準コンソールのsshコマンドではログインできました。その際、

-oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=ssh-dss,ssh-rsa

という引数が必要でした。

★LuCIインタフェースのファイアウォール設定にはご用心

OpenWrtのネットワーク設定にはLuCIというウェブインタフェースを使ったんですが、このファイアウォール設定には注意が必要です。

ここでも問題提起されていますが、一般的なファイアウォール製品のGUIとは見せ方がちがってまぎらわしいんです。

たとえばこれ、lan行のMasqueradingのチェックがはずれていますが、LANからWANへの通信にNAPTがかからないという意味ではありません。

一方wan行の方にはチェックがありますが、これが「WANインタフェース側には接続元の本当のIPアドレスを見せない」という意味なので、これがあるおかげでLANからWANへの通信にちゃんとNAPTがかかります。
(かんちがいをしてLAN側でMasqueradingをONにしてしまっている日本語のブログがあったので、混乱している人は多そう。)

「⇒」の右のForwardingsインタフェースが関係するのはForwardの設定だけで、MasqueradingだけでなくInputにもOutputにも関係がありません。LANの行なら、Input設定は「LANゾーンからこのルータを最終宛先としたInputパケットに対する処理」で、Output設定は逆に「このルータ自身を送信元としたLANゾーンに向けてのOutputパケットに対する処理」です。

あと、旅先用ルータ(GL-SFT1200)はLuCIでネットワーク設定をいじると、何もミスしてなくても、電源OFF/ONしないとその後操作すらできなくなることがあるので、その心づもりを。
(操作用のインタフェースとは何も関係がない設定変更でも起こります。)

★ZeroTierへのデフォルトルート

一番苦労したのが、最後に旅先用ルータのデフォルトルートをZeroTierに向けるところ。

Interface ZeroTier Target 0.0.0.0 IPv4-Netmask 0.0.0.0

というスタティックルートを最強のメトリック0で入れても、元から入っているWAN側インタフェース向けのデフォルトルート(メトリック20)になぜか負けてしまいます。tracerouteの実際の挙動で確認。

Interface ZeroTier Target 0.0.0.0 IPv4-Netmask 128.0.0.0
Interface ZeroTier Target 128.0.0.0 IPv4-Netmask 128.0.0.0

結局IPv4の全アドレス空間をこんなふうに前後半2つに分けてルート定義することで、ロンゲストマッチの力で勝たせることができました。ちょっと裏技っぽい?

追記 2024-02-04

このしくみに少し手を加えて別の用途を持たせてみました。この構成だとややこしいルーティング設定は不要になります。

追記 2024-02-16

ZeroTierを使って本物の金盾を越えるテストをしてみました。

追記 2024-04-14

GL-SFT1200(Opal)のZeroTierの挙動が不安定なので、旅先用ルータをGL-A1300(Slate Plus)にしました。

ちなみに今の家のルータは、BUFFALOのWXR-2533DHP2にOpenWrtを入れたものにしています。

追記 2024-12-27

ZeroTierを使った金盾越えのしくみは中国現地でも実用できました。

GL.iNetの無線ルータを導入する

宿の無線LANの電波が弱いとき、サブスマホを無線の中継機にする「Wi-Fiブリッジ」を最近の旅先ではよく活用していました。

実はそれでちょっとだけ問題が。

中継機の発する無線のチャンネル(周波数帯)が選択できない問題

ボゴタ(コロンビア首都)の宿で実際にあったのが、OPPO Reno7 Aで12chのアクセスポイントが見えなくなるという症状。

コロンビアはぎりぎり南米ですが、2.4GHz帯では11chまでしか使えないという北米のチャンネル規制が何か影響しているのか、OPPO Reno7 Aの挙動がそういうふうに変わってしまいました。
(日本ではちゃんと12chが見えています。)

宿の部屋に来ているWi-Fiが12chだったんですが、12chをつかめるRakuten Hand 5GでWi-Fiブリッジをしても、中継で出す電波が結局12chになってしまうので解決にならず。そういうわけで、中継でチャンネルを変えられたらいいのにと思っていました。

VPNパススルー問題

中継端末上でVPNアプリを動かしている場合、その端末上で動くアプリの通信はVPNトンネルを通ってくれるんですが、配下にぶら下がっている端末の通信はそのVPNトンネルを通りません。Androidの仕様なのだと思うけれど。

最近Chromebook上でAndroidのVPNアプリを動かしたときの安定性がよくなくて、VPN機能のある無線ルータでもあったらと思うことがありました。

GL.iNetの無線ルータ

最近ふとしたことで知って買ってみたのがこのGL.iNetの無線ルータ。

145gでめっちゃ小さいというわけではないけど、電源はUSB-Cやし、旅先には持っていけそう。

Wi-Fi中継機として使う際には、2.4GHz帯の親機につなぎつつ5GHz帯のアクセスポイントになることができるし、同時に今はやり(?)のWireGuardでVPN接続することもできます。もちろん配下の端末の通信はそのVPNトンネルを通ります。

とりあえずWireGuardの接続先はProton VPNの日本サーバで。VPN接続のON/OFFを物理スイッチに割り当てられるのも便利です。

そしてOpenWrtというLinuxがファームウェアとして動いているので、一般的な家庭用ルータとちがってやたらとテクニカルなことができてしまいそう。

プラグインをいろいろ入れられるんですが、このChinaDNSめっちゃ気になるなあ・・・

いろいろ遊んでみています。

追記 2023-12-17

中国旅行対応のしくみを作ってみました。

追記 2024-02-04

中国旅行対応のしくみに少し手を加えて別の用途を持たせてみました。