中国中部おためし放浪(28日+帰国後振り返り2)-金盾とのつきあい方

今回は、グローバルIPアドレスの来ている実家にVPNサーバを設置し、旅先にはProxmoxを駆使してミニPCを高機能ルータ化したものを持っていっていましたが、実際どんな感じだったかという話です。

旅先ルータ-実家サーバ間通信

旅先ルータ-実家サーバ間のVPNプロトコルとしては、

  • ZeroTier
  • SoftEther
  • OpenConnect

の3種類のトンネルを張っておいて、どれを通すかを切り替えて使うという構成にしていました。

★ZeroTier

3つのプロトコルのうちZeroTierだけは、どういうしくみなのかトンネルを張るのにDNS問い合わせを必要としないので、

(1) まずZeroTierで実家サーバにトンネルを張る。
(2) DNS問い合わせはすべてZeroTierのトンネルを通して行う。

とすることで、金盾によるDNS問い合わせの監視や改ざんを回避していました。

ところがどういうわけか成都の宿ではZeroTierの通信がうまくいかない。贵阳・重庆・宜宾では問題なくて、成都でもモバイル回線だと大丈夫だったのに。2回目の成都は別の宿だったんですが、そちらでもうまくいきませんでした。

★OpenConnect

OpenConnectは全体的に不安定でした。正確に言えば、OpenWrtのOpenConnectクライアントの動きがいまいちな印象です。端末から実家サーバ内のOpenWrtにはアクセスできるのに、同じセグメントの別OSにはなかなかアクセスできないみたいな挙動を見せたりとか。

★SoftEther

そんな中、NHKプラスとかの動画ストリーミングでも通信品質が一番よくて、挙動的に安定もしていたのがSoftEther。なので、旅先ルータ-実家サーバ間の通信は最終的には全部SoftEtherが担当する構成に落ち着きました。

ZeroTierとOpenConnectはOpenWrtからトンネルを張っていたけど、SoftEtherは独立したLubuntuから張っていたというのも関係していたのかも?

ただ、たまにSoftEtherがうまく機能しない場面もあって、そういうときにはZeroTierを代わりに使うといったこともありました。プロトコルを複数用意しておくのは大事そうです。

ちなみにVPNサーバのポート番号は、443でなくても大丈夫でした。

スマホ-実家サーバ間通信

旅先ルータ-実家サーバ間の通信はSoftEtherがベターという結論になりましたが、SoftEtherにはスマホアプリがありません。

ということで、スマホではZeroTierとOpenConnectの両アプリを使っていたんですが、どちらも特に不都合はありませんでした。

ところでOpenConnectには"Split tunnel networks"という設定があって、トンネルを通したい通信の宛先を個別に指定できるようになっているんですが、これで「Google宛の通信だけトンネルを通す」という設定を入れてみました。

https://www.gstatic.com/ipranges/goog.json
https://www.gstatic.com/ipranges/cloud.json

このGoogle所有のIPアドレスレンジ一覧から情報を抽出して。

これで、Googleへのアクセスが必要なDaybookの通信はトンネルを通して、トンネルを通すと応答しなくなるごはんやさんの注文画面は直接通信にできて便利!と思ったんですが、なぜかこれでも注文画面は表示されませんでした。どういうしくみ??

DNS over HTTPS(DoH)

今回DNS通信を暗号化できるよう、実家のサーバでDoHサービスを立ち上げていました。

GoogleやCloudflareのDoHサービス(セキュアDNS)が金盾でブロックされてしまうのは前回見ていたけれど、自前のだったら大丈夫かもしれないと思ってやってみました。金盾から見ると、HTTPSの通信にしか見えないはずなので。

でも残念ながら、自前のでもだめでした。

実家サーバのグローバルIPアドレスに直接問い合わせてもだめだし、Cloudflare Tunnelを経由して生IPを隠蔽してもだめでした。

ちなみにCloudflare Tunnelは、DoHでないHTTPSサービスだったらアクセスできたので、宛先とかでなくDoH通信っぽいふるまいで金盾はブロックしてるみたいです。なんでわかるんやろ??

旅先ルータ関連の話はもう少しあるんですが、長くなったのでまた今度。

コメント

読み込み中...