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 のやりとりなら問題ありません。