読者像: OpenClaw Gateway は起動済みだが TCP 18789 を公網に晒したくなく、開発者/CI/常駐マシンのみでは同一の小さく信頼できるメッシュで CLI とチャネル完了へ進めたいチーム。要点: upstream のgateway.bindを tailnet と揃え、Tailscale ACL の HuJSONで「どの主体が18789に触れられるか」を言語化する。順序は openclaw gateway status のあとtailscale ping と最小チャット。他記事との役割分担:《Nginx/Caddy による TLS と WebSocket 逆プロキシ》《Ubuntu の systemd と Cloudflare Tunnel》と三角を描き、それぞれ公網 TLS、外向きトンネル、および公網に一切リッスンさせないメッシュのみを担う。コンテナ側の粒度はさらに《Docker Compose ペアリング》と《零トラスト遠隔 Mac と SSH/Tunnel の切り分け》へ。
WAN を避ければ攻撃モデルから「ポートスキャン」だけが消えるわけではありません。メッシュ側の広すぎる ACL と DNS の分裂は、モデル側のタイムアウトと酷似した症状になります。
*:*)やゆるやかなタグ設計により全ノードが 18789 を探索可能になるのは単に危険面をインナーへ移動しただけです。白板テスト:Tailscale ACL が新しいレイヤでのファイアウォールになります。CVE レスポンス込みのポート集合と鍵ローテーション規律 は tailnet でも健在です。
| 露出モデル | 適合条件 | 主トレードオフ |
|---|---|---|
| 公網 TLS 逆プロキシ | 外部 SaaS の webhook や、エージェントを常駐させにくいクライアントがいるとき。 | 証明書/WAF/レートまで含め複雑。TLS チェックリスト参照。 |
| 外向きクラウドトンネル | ソース IP を隠したいがインバウンド穴あけも避けたい。 | POP とベンダ側の運用規律に強く依存。Tunnel Runbook。 |
pure tailnet + gateway.bind=tailnet |
全端末 Tailscale が常態化し、ゲートウェイが六国のベアメタルクラウド Mac等で固定されている。 | タグ粒度と監査ログが強い。Tailscale 未導入端末へ「届かない」ことは許容機能です。 |
tailnet メンバー全員管理者ではない:`group:dev` へ丸投げすると「昨夜 18789 を触れたのが誰か」を説明できず、SOC とも整合しません。ルール単位でチケットを紐づけてください。
G が常駐ノードで O がオペレータ端末。tailscale status に沿った名前を Runbook と完全に一致させ、TCP 18789 をタグ許可のみへ絞ります。OPENCLAW_GATEWAY_URL には MagicDNS 名か tailnet IP をセットし、`tailnet` モードへの移行後に古い LAN FQDN を残さないでください。
CI が直結するときも tag:ci と tag:gateway:18789 で一本化し、「巨大 dev メッシュ」への混載をやめます。
複数地域の恒久 Mac を載せ換えるときは 《零トラスト遠隔 Mac と SSH/Tunnel の切り分け》 と合わせ、OpenClaw のリッスンポリシーまで含めレビューを完結させます。
tailscale status の名前と IP を Change に貼り付ける。gateway.bind="tailnet":設定ファイルまたはボリューム同期で反映しgateway.modeを現行 README と突合。階層はリリース毎に揺れるためスクショを添付してください。openclaw gateway status → openclaw doctor。失敗時は Tailscale コントロールとホスト両方から同一時刻帯ログを収集。curl -v --max-time 5 と最小対話ログを確認し、コンテキスト切れや WS フラグ問題を検知。《doctor 第一段階記事》 で枝分かれ順序が揃っていれば十分です。{
"gateway": {
"mode": "local",
"bind": "tailnet",
"port": 18789,
"auth": {
"mode": "token",
"token": "${OPENCLAW_GATEWAY_TOKEN}"
}
}
}
// NOTE: 例示のみ。運用ビルドの schema で各フィールド検証後、コンテナまたはプロセスを再起動。
// ACL 例:`ops` が `gateway` に対してのみ 18789 を開く――タグ命名は運用側で差し替え
{
"groups": { "group:ops": ["[email protected]"] },
"tagOwners": { "tag:gateway": ["autogroup:admin"], "tag:ops": ["autogroup:admin"] },
"acls": [
{
"action": "accept",
"src": ["tag:ops"],
"dst": ["tag:gateway:18789"],
"proto": "tcp"
}
]
}
tailscale ping でMTU証拠を揃える。スリープ、蓋、アップデートによる再起動や家庭用回線のアップヒルが時間保証 SLAを壊します。個人SSD とログの混在もインシデント調査では不利です。M4 / M4 Pro の専属ノードに跨る六国スロットがあると SLA と ACL の記載が一致しやすくなります。
Nginx と Tunnel と tailnet という三分割は環境単位ごと RACI が必要になります。MACCOME が提供する恒久 Apple Silicon と柔軟なレンタル条件を使うときは公開の価格表とヘルプセンターを先に読み、Runbook と突合させてください。
「誰が誰へ 18789 を開けるのか」を三行で説明できない状態で設定を増やせばMagicDNS伝説だけが増えます。tailnet は復唱可能な接続モデルこそゴール指標です。
次読むべき文書は環境により Compose/TLS checklist/tunnel/ハードニングのどれかです。恒久ノードとの契約を前提に SLA を固めるときにレンジを再確認してください。
よくある質問
Docker は捨てるべきですか?
その必要はありません。ネットワーク名前空間の話のみが変わるため《Docker Compose ペアリング編》を読み続ければ十分です。ホスト tailnet IP と publish が一致することだけを定期的にチェックしてください。
tailnet と SSH の二段構成は許容されますか。
許容されます。運用モデルについては 《零トラスト遠隔 Mac 記事》 が前提を整理します。TCP18789 のACLをSSH 22 と同じ規則に混ぜないでください。