これまで中国に高性能ルータとしてミニPCを持っていっていたのは、主にドメイン振り分けのためでした。
中国で制限を受けるサイトはVPNを通して、逆にVPN接続だとむやみに重くなる中国のサイトは直接接続をするみたいなのを自動でやるという。
でもこの前の上海での検証で、ChromebookでもAndroidのTrustTunnelアプリを使えば、ミニPCなしでもドメイン振り分けをした金盾越えができることがわかりました。
よし、今回はミニPCなしでいってみよう。
そこで心配になったのが、ドメイン振り分けできるプロトコルはTrustTunnel一本でいいのかということ。とりあえず上海では使えたけど、金盾は地域ごとに挙動がちがうので、いくつかのプロトコルを準備しておきたいです。
そこで見つけたのがこのsing-box for Android。設定をJSONファイルで行うという上級者仕様やけど、ドメイン振り分け含めいろいろ細かい制御ができる通信アプリです。
対応プロトコルに、うちのサーバですでに実装しているVLESSとHysteria 2があるので、これにドメイン振り分け機能を追加するわけです。
むずかしいJSONはChatGPT + Codexにおまかせしつつ、悪戦苦闘の末にうまく運用できるようになりました。
これでとりあえず、TrustTunnel・VLESS・Hysteria 2の3つのプロトコルでChromebookでのドメイン振り分け運用ができるようになったわけです。
sing-box for Androidのよいところ
v2RayTunとかだと、接続設定はサーバ側の提供するQRコードで一発でできても、DNSをどうするとかの一般設定は手でやるしかないです。
でもsing-box for Androidだと、そういう接続設定以外の設定含めてほぼJSONファイルだけで定義するので、一度作ってしまえば、入れ直しやいろんな端末に展開するのも簡単。スマホではドメインでなくアプリごとの振り分けの方が便利やけど、そういう設定もJSON一発でやってしまえます。
苦労したところ
ドメイン振り分けのためのドメインリストは、これまでの旅行の実績で作り上げたものを流用するわけですが、このリストって「このドメインって金盾通らへんのや」とわかるたびにどんどんアップデートされていきます。
その変更をいちいちJSONに反映させる運用はかなりめんどくさいです。少なくともVLESS用とHysteria 2用の2ファイルはあるわけやし。
ということで、ドメインリストは独立したファイルとしてメンテするとして、そこからスクリプト一発でsing-box用のJSONファイルを生成できるようにしました。