何が調整されるのかを理解する
コントロールプレーンはノードの登録を管理し、ネットワーク情報を配布します。データトラフィックは接続状況に応じて、ピア間の直接接続またはリレーを経由する場合があります。コーディネーターを運用しても、すべてのパケットがそこを通過するわけではありません。
登録を意図的に行う
管理用の API を保護し、短命または適切にスコープされた登録方法を使用してください。紛失または廃止されたデバイスを削除してください。メッシュに参加できることは、すべてのサービスへのアクセスを意味するべきではありません。
ACLとルートを確認する
ユーザーとノードの間に最小権限のルールを適用してください。アドバタイズされたサブネットルートと出口ノードは到達可能なネットワークを拡大するため、明示的な承認が必要です。拒否されたトラフィックも、許可されたトラフィックと同様に慎重にテストしてください。
復旧用の素材を保管してください
サポートされているバージョンの手順に従って、設定、状態、キーをバックアップしてください。メッシュが失敗した場合に VPS を管理する方法を維持してください。コントロールプレーンを変更する前に、クライアントの互換性とアップグレードの注意事項を確認してください。
登録、ルーティング、ポリシーは別々の確認事項です
Headscale は互換性のある Tailscale クライアントを調整します。直接接続と DERP リレーパスは異なるネットワーク動作をします。サブネットルーターは範囲をアドバタイズし、コントロールサーバーがそれを承認し、クライアントがそのルートを受け入れる必要があります。ルーティングノードでフォワーディングを有効にし、アドバタイズされる範囲を狭く保ってください。承認されたルートでも、誰がどの宛先とポートを使用できるかを制限するアクセスポリシーが必要です。
- コントロールサーバーのルート一覧を確認する
- 許可されたデバイスからテスト
- 拒否されるべきデバイスから同じテストを繰り返す
headscale nodes list-routes公式ドキュメント: Headscaleルート
唯一の復旧経路をメッシュ内に置かないでください
サーバーコンソールへの代替経路、または厳しく制限された管理者ルートを確保してください。コーディネーター、リレー、クライアントが利用できない場合に何が起こるかをテストしてください。インストール済みバージョンに従ってコントロールプレーンの状態とキーを保持してください。プライベートメッシュはアクセスを簡素化できますが、それ自体の修復を妨げる文書化されていない依存関係になってはなりません。
コントロールプレーンのIDとリカバリ経路を修正する
安定した HTTPS 名、サポート対象の Headscale リリース、互換性のある Tailscale クライアントを選択してください。その正確なリリースに同梱されている設定例をお読みください。異なるリリースからコピーした設定は、検証に失敗したり、別のポリシーを黙って記述している可能性があります。コントロールプレーンのデータベースと必要な鍵を永続化してください。管理用の API をプライベートに保ち、別途のコンソールまたは制限された SSH 経路を確保してください。そうすることで、メッシュを失ってもそのコーディネーターの修復が不可能になることはありません。
- 公開コントロールプレーン名に対して有効な証明書を使用してください。
- 登録キーは短い有効期限と適切なスコープで管理してください。
- リレー設計と DNS 名前空間を明示的な選択として扱ってください。
公式ドキュメント: Headscaleコンテナのデプロイ
ネットワークを告知する前に1台のデバイスを登録する
上流の手順に従ってサーバーを起動し、文書化された登録方法でテスト用のユーザーまたはデバイスを 1 つ登録します。デバイスが想定される制御 URL に到達し、意図した ID の下に表示されることを確認します。クライアントのステータスを確認し、exit-node やサブネットルートを追加する前にプライベートサービスを 1 つテストします。DERP パスは直接パスが利用できない場合に接続性を維持できますが、コーディネーターがすべてのパケットを転送していることを示すものではありません。
- 安全に削除できるデバイスとサービスから始めてください。
- ピアトラフィックが直接か中継かを確認します。
- 選択したデプロイに応じてリレーと制御エンドポイントを保護してください。
公式ドキュメント: Headscale デプロイメントリファレンス
ルーティングと承認を個別に承認する
サブネットアクセスの場合、ルーティングノードでフォワーディングを有効にし、狭い範囲をアドバタイズし、コントロールサーバーで承認し、宛先クライアントがそれを受け入れることを確認してください。戻りルートを曖昧にする重複ネットワークを避けてください。承認されたルートはアクセスポリシーではありません。ゲストデバイスを含め、誰がどの宛先とポートに接続できるかを定義してください。メッシュを拡張する前に、許可された接続と同一の拒否された接続をテストしてください。
# Run on the control server; syntax follows the installed release:
headscale nodes list-routes
# Client-side inspection:
tailscale status公式ドキュメント: Headscaleのサブネットと出口ルート
ポリシーを変更する前に壊れたレイヤーを特定する
登録に失敗する場合は、DNS、HTTPS、サーバーのURLを確認してください。デバイスは参加するもののサブネットに到達できない場合は、アドバタイズ、承認、クライアントのルート受け入れ、転送、戻り経路を確認してください。1つのサービスのみが失敗する場合は、そのバインドアドレス、ホストのファイアウォール、メッシュポリシーを確認してください。一貫したデータベース/設定のバックアップを保持し、唯一のコントロールプレーンを変更する前に、使い捨てのクライアントでバージョンアップグレードをテストしてください。