続・ミニPCを高機能トラベルルータに仕立てる

ミニPC(GMKtec NucBox G2 Plus)を中国用のトラベルルータにいったん仕立てていましたが、現地利用のイメトレを繰り返して改善を加えていっていました。

要件おさらい

SoftEtherプロトコルを使って、中国国内から金盾越えをしてみたい。

ただ、AndroidにはSoftEtherのクライアントアプリがないので、ミニPCでWindows版のSoftEtherクライアントを立ち上げ、それで中国外に張ったVPNトンネルにChromebookなどほかの端末の通信を通したい。

ただしキーボードやディスプレイは持って行かないものとする。

追記 2025-02-20

SoftEtherプロトコルで金盾越えできることが確認できました。

今回の構成

インターネット
|
宿の無線アクセスポイント
| (Wi-Fi)
Rakuten Hand 5G (イーサネットテザリングON)
| (USB-Cケーブル)
USB-C LAN変換アダプタ
| (LANケーブル)
ミニPC
| (LANケーブル)
USB-C LAN変換アダプタ
| (USB-Cケーブル)
Chromebook

もともと機器間はWi-Fiを駆使してつなぐ構成で考えていましたが、手持ち機器内は全部有線でつないでしまう構成にしました。その方が接続の確実性があるし、高速にもなるので。

ディスプレイにするのは、Rakuten Hand 5G。もともとはUSB接続で考えていましたが、spacedeskアプリを使ってLAN経由でディスプレイ化します。

キーボードにするのは、OPPO Reno7 A。WindowsのログインPINなどはこれで打ちます。Bluetooth Keyboard & Mouseアプリは、なぜかRakuten Hand 5Gではうまくつながらなかったです。

マウスもスマホでできるけど、Chromebook用のマウスがBluetoothのマルチペアリングに対応しているのでそれを利用。

ミニPCを有線ルータ化するのには、MyPublicWiFiのMultifunctional Hotspotモードを利用します。

余談ですが、ミニPCは純製の電源アダプタを使わなくても一般のPD対応のUSB-C電源で給電できて、消費電力は実測で最大26Wぐらいでした。

今のところいつもの30Wのアダプタで問題ないです。

回線速度

うちのルータを旅先の宿のルータに見立てて、ChromebookでGoogleの回線速度計測をしてみました。

▼Chromebookをうちのルータに直接有線接続

待機時間:8ms
ダウンロード:177.37Mb/秒
アップロード:281.06Mb/秒

▼今回の構成(VPNなし)

待機時間:10ms
ダウンロード:59.2Mb/秒
アップロード:72.5Mb/秒

▼今回の構成(SoftEtherで日本のとあるサーバに接続)

待機時間:403ms
ダウンロード:16.9Mb/秒
アップロード:7.94Mb/秒

USB-C LAN変換アダプタ

今回USB-C LAN変換アダプタは2つとも新調しました。

UGREENもCable Mattersも個人的には初物メーカー。安いけど信頼がおけるという評判っぽいところなので、今後のことも考えてそれぞれおためしさせてもらいます。

Cable Mattersの方はUSB-C機器に給電もできるタイプなので、Rakuten Hand 5G側に利用。UGREENのより大きく見えるんですが、実測重量はどちらも31gでした。

ちなみにRakuten Hand 5Gは、どちらでもイーサネットテザリングが使えたんですが、OPPO Reno7 Aは給電状態じゃないとイーサネットテザリングがグレイアウトしてONにできませんでした。

ミニPC関係なく、OPPO Reno7 AのNomad eSIMでイーサネットテザリングしつつChromebookを使うっていうのはけっこういい方法な気がするので、Cable Mattersのアダプタはいろいろ重宝しそうです。

Unified Remote

Bluetooth Keyboard & Mouseアプリは、なぜかRakuten Hand 5Gではうまくつながらなかったです。

とさっき書いたけれど、何かトラブったときにRakuten Hand 5Gの方をキーボードにしたいケースもありそうだったので、

こちらも導入しておきました。何かあったとき用のバックアップ大事。

追記 2025-03-29

OSを仮想化することで、キーボードやディスプレイ問題はもっとすっきり解消できるようになりました。

江戸川水閘門の職員さんに川のことを聞いてみる

今日江戸川水閘門を渡っていると、職員さんが呼び込みをされていました。

IMG20250208160209
「江戸川水閘門改築に伴う事業説明会」だそうです。

名前は、お堅い利害関係者向けの会っぽいけど、興味本位でもウェルカムということだったので入ってみることにしました。

IMG20250208152354
ふだん閉まっていて入れないけど、中こんなんなってるんやー。

IMG20250208160052
IMG20250208160019
江戸川水閘門が古くなったのでこれから新しくするそうです。

ついでに、これまで川関連で疑問に思っていたことをいろいろ聞いてみました。

水門周辺の路面はなぜ荒れやすいか?

インラインスケートあるあるやけど、水門を渡る部分の路面はどこもなぜか質が悪いです。前後の道路と管轄官庁がちがってメンテされないからなのか、何か特別な重機が来て作業をするからなのか。

管轄官庁についての仮説は半分正解で半分はずれでした。

水門も堤防上の自転車道も、作るときの管轄は国交省。でもその後の管理は、水門は国交省のままやけど、自転車道の方は地方自治体に移管されることが多いのだそう。

大規模なメンテだったらどちらも国交省がやるんですが、日々の小規模メンテについてはそれぞれの管轄でやることになるので、質に差が出てくるというわけ。あと、自転車道については走行の快適さがメンテ基準になることもあるけれど、水門はそういう視点で見られる設備ではないということも関係しているようです。

江戸川の洪水耐性

台風とかが来ても、江戸川って関東平野のほかの川より水位が上がりにくい傾向がある気がしてるんですが、

それって、利根川から江戸川を分岐させている関宿水閘門を閉じてるからかと思っていました。

でもそうすると利根川の方があふれてしまうので、台風でも関宿水閘門は閉じてないそうです。この分岐の形からして、江戸川の方にはそんなに水は流れ込まないようになっているので、自然体で大丈夫なのだとか。

河原番外地

今職員さんから説明を受けているこの場所(河原番外地)は、東京都なのか千葉県なのかはっきりしないので有名な(?)ところです。カシミール地方みたいな。

たとえばこのへんに土地を買って住んだら、税金どっちに納めることになるんですか?

「このあたりは河川敷とかと同じ扱いなので、河川法上、土地は買えないんです。」

なるほど、そういうことなんですか。でも河川敷にゴルフ場とかときどきありますけど、あれって私有地なんですよね?

「河川法ができる前に土地を持っていた方には引き続き所有権があるんですが、一度国のものになってしまえば私有はできなくなりますね。」

トイレ休憩の場所としてよかった利根川のゴルフ場がつぶれてしまっていたけど、もうその跡地に別のゴルフ場ができることはないんやね。

上海の次の町

上海到着翌日(2/20)にどの町に行くかという話ですが、まず衢州行きの鉄道のチケットを取ってみることにしました。

Trip.com上では、「乗車券の販売開始日:2月6日 14:30から」のように出ていたので、昨日(2/6)の14:30過ぎに見てみたのですが、まだ開始していません。「14:30」って現地時刻だったみたいです。日本時間だと15:30。

で、15:30ちょうどぐらいに開いてみると、ねらっていた安い便がすでに軒並み「空席待ち登録可」に。もう売り切れたん!?

安いのだけじゃなく、お昼ぐらいに出て日暮れ前に着くいい時間の便も軒並み埋まってしまっていたので、

それだったら衢州じゃなくて宁波(寧波)にしようかな。

ということで、宁波行きのチケットと2泊分の宿を確保しました。出発前に取るのはここまで。

ちなみに1日たった今日また2/20の衢州行きの便を見てみると、ふつうに空席のあるいい時間の便がいくつか復活していました。どういうしくみ??

宁波の気候

緯度的には屋久島と奄美大島の間ぐらいの宁波にも今寒波が来ていて、明日は最低気温-6℃・最高気温0℃の予報。

かと思ったら、来週には20℃にまでなる陽気に。沿岸部でもこんなに寒暖差あるんやなあ。

「今日はもう出歩かない方がよさそう」みたいな日もありそうやから、やっぱり下手に先の方まで予定を固めてしまわない方がいいなあ。

2本指が出せるアウトドアグローブ

20220201_124604
3年ほど前から、2本指が出せるSWANYの手袋を愛用しているんですが、薄手なので冬が深まった時期には向きません。

スマホの指紋認証とかで便利なので、もうちょい厚手のもないかなあ・・・山でも使えるようなちゃんとしたアウドドアメーカー製で。

これがなかなか見つからなかったんですが、この前探索型AIを駆使してなんとか見つけました。

THE NORTH FACEのRed Run Pro Gloveという製品なんですが、本家サイトには見つからなくて、

たとえばAmazonにあった同名の手袋は2本指が出せないタイプだったりしました。

販売開始日: 2023/07/31(販売終了商品)

すでに販売終了になっていて、しかも過去のとあるバージョンだけが2本指出しタイプになっていたということかな。

ぎりぎり在庫があるところを見つけたので注文してみました。

IMG20250205162202
お、いい感じ。

これ、山じゃなくてランニング用なので、手のひら部分の補強がそんなにないです。なので、ロープや木の枝を握ったりするのには向かないかも。

OpenWrtのファームウェアを24.10.0にアップデートする

うちのルータ(BUFFALO WXR-2533DHP2)ではファームウェアとしてOpenWrt 23.05.5を使っていたんですが、

今朝見ると24.10.0という新バージョンが出ていたので適用してみました。メジャーアップデートです。
(金盾越えに使うZeroTier含めちゃんと動くかわからなかったので、中国行きが2/12だったらこのタイミングではやってなかったと思います。)

旧バージョンとの設定の互換性

LuCIでファームウェアのアップデートしようとすると、24.10.0のコンフィグは23.05.5のと互換性がないということで、設定が全部消えてしまうといいます。

どういう設定を入れたかはメモで残してあるので、思い切ってアップデート。IPアドレスや管理者パスワードから何から全部初期化されました。

Tailscaleのバージョン

OpenWrt 24.10.0にしてみると、インストールできるTailscaleのバージョンが上がっていました。

OpenWrt 23.05.5: Tailscale 1.58.2-1

OpenWrt 24.10.0: Tailscale 1.78.1-1

旧バージョンには気になる脆弱性もあったので、これは助かります。ZeroTierは1.14.1-r1のままで変わってないかな。

ミニPC専用セグメントを作る

WindowsのPCはいつか乗っ取られるものだと思って使っています。なので、仮に乗っ取られてもダメージが少なくなるよう、ネットワーク的にうちのほかの機器からは隔離しておきたいと思っていました。

でもOpenWrt 23.05.5のときは、ルータに4つある物理LANポートがLuCI上区別されていなくて分離のしようがなかったんですが、OpenWrt 24.10.0ではBridge port設定の中でlan1lan4として別扱いされていました。

これならミニPC専用セグメントが作れるかも!

★ミニPC専用セグメントの要件

(1) うちのネットワークにある機器(無線LANおよび物理LANポート1〜3に接続)からは、インターネットにもミニPCにも接続できるようにしたい。
(2) ミニPC(物理LANポート4に接続)からは、インターネットには接続できるようにしたいけど、うちのほかの機器には接続できないようにしたい。
(3) インターネットからは、うちのネットワークにある機器にもミニPCにも接続できないようにしたい。

★ミニPC専用セグメントの設定

LuCI > Network > Interfaces > Devices

br-lanBridge portslan1lan4が入っていたのを、br-lanをまねてbr-lan2を作ってlan4(ミニPC用)だけこちらに移します。

LuCI > Network > Interfaces

lanをまねてlan2を作成し、Deviceとしてさっき作ったbr-lan2を指定。別セグメントのIPアドレスを振ります。ファイアウォールゾーンとしてもlan2を新設。

LuCI > Network > Firewall

ファイアウォールゾーンlan2の設定はこんな感じで。

lan2の行のMasqueradingにチェックを入れてあるのは、うちのほかの機器からミニPCに接続したときに接続元IPアドレスを隠蔽するため。

ちなみにMasqueradingのチェック含め、このLuCIのファイアウォール設定の読み方は

ここを参照。くせがあって誤解しやすいところです。

そしてInputacceptにしてあるのは、DHCPでのIPアドレス配布やミニPCからのDNS問い合わせに必要だったから。でも、このままだとミニPCからルータに管理者アクセスもできてしまって危ないので、

LuCI > Network > Firewall > Traffic Rules

ここに

Name: Reject-lan2
Protocol: TCP
Source zone: lan2
Destination zone: Device (input)
Action: reject

こんな感じのルールを入れて別途ブロックしておきます。

これでミニPC専用セグメントが完成しました。

追記 2025-02-10

ファイアウォール設定を厳格化するため、lan2の行のInputrejectにして、

Name: Reject-lan2

Protocol: TCP

Source zone: lan2

Destination zone: Device (input)

Action: reject

この代わりに

Name: Allow-DNS
Protocol: UDP
Source zone: lan2
Destination zone: Device (input)
Destination port: 53
Action: accept

Name: Allow-DHCP
Protocol: UDP
Source zone: lan2
Destination zone: Device (input)
Destination port: 67
Action: accept

これを入れることにしました。