NISHIO Hirokazu[Translate]
Tailscale Funnel

Tailscale Funnel は、手元のPCのローカルサーバを、インターネットの誰からでも HTTPS で届くようにする機能です。
仕組み
:
外部のクライアント(インターネット上の誰でも) ↓ HTTPS https://<マシン名>.<tailnet名>.ts.net:<公開ポート> Tailscale の中継サーバ(公開 IP を持っている) ↓ tailnet の暗号化トンネル 自分のPCの tailscaled(HTTPS をここで終える) ↓ http://127.0.0.1:<ローカルポート> ローカルのサーバ

ローカルのサーバ
PC側はポートを開けません。 PCの側から中継サーバへトンネルをつなぐので、ルーターのポート開放も固定 IP も要りません。
TLS 証明書は自動で付きます。 *.ts.net のドメインに Let's Encrypt の証明書を Tailscale が自動で用意します。外から見ると普通の HTTPS サイトです。
暗号は経路の最後まで続きます。 中継サーバは TCP をそのまま流すだけなので、HTTPS の中身は見えません。

serve との違い
tailscale serve │ 自分の tailnet に入っている端末だけ
tailscale funnel │ インターネットの誰でも
tailnet に入れられない相手(会社のサーバ、外部の Webhook など)から受け取りたいときに Funnel を使います。

制約
公開できるポートは決められた 3つだけ です(443 と、ほか2つ)。
tailnet の管理者の許可が要ります。 初回は許可用の URL が出ます。許可は端末ごとです。
認証は付きません。 URL を知っていれば誰でも叩けるので、守りはサーバ側の仕事です。
受けるパスを1つに絞る
トークン(合言葉)を必須にする
受け取るサイズに上限を設ける
届いた値を検証する
中継サーバを通るので、大きな転送には向きません。小さな JSON のやりとりなら問題ありません。

"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]