コンテンツにスキップ

ポートとファイアウォール

Yagra がファイアウォールに必要とする穴はごくわずかです。コアホストが公開する TCP ポートは 2 つ、ポーラーの UDP リスナーは有効化したパッシブ受信機能のぶんだけ開き、それ以外 — 5 つの ストアすべてとバス — は内部の Docker ネットワークに留まります。外向き接続は厳密に機能単位です。 通知チャネルも転送先も AI プロバイダも設定していない新規インストールは、(イメージの取得を除き) 外向き通信を一切行いません

ポート プロトコル サービス 備考
8080 TCP (HTTP) Core API この 1 ポートで REST API(/api/v1)、Prometheus エンドポイント(/metrics)、ヘルスプローブ(/healthz/readyz)を提供し、YAGRA_ENABLE_MCP が有効なときは /mcp で MCP のツール群も提供します(既定は無効で、このルートは 404 を返します)。ホスト側ポートは YAGRA_API_PORT(compose)または YAGRA_API_ADDR(ネイティブ実行)で変更します。
443 TCP (HTTPS) WebUI nginx(rootless、コンテナポート 8080)がフロントエンドを TLS で配信します。/api/mcp はコアへプロキシされるため、ブラウザが必要とするのはこのポートだけです。ホスト側ポートは YAGRA_WEB_PORT で変更します — deploy 構成では 443、ソースからビルドする単一ノード構成では 8443YAGRA_WEB_TLS=off を設定しない限り、平文のリスナーはありません。
8081 TCP (HTTP) 2 台目のコア(HA オーバーレイのみ) 2 コア構成の高可用性オーバーレイは、スタンバイコアの API を別のホストポートにマップします。/readyz はリーダーでのみ 200 を返す(スタンバイは 503)ため、ロードバランサはこれを基準にルーティングできます。

UI と API は、ログインパスワード、Bearer トークン、(暗号化前の)デバイス認証情報を運びます。 WebUI のポートは既定で HTTPS なので、前段に何かを置く必要はありません。コアの API ポートは 今も平文です8080 を信頼できる LAN の外へ公開せず、機械クライアントを TLS エッジへ移し 終えたら YAGRA_API_BIND=127.0.0.1 で完全に閉じてください。

ポーラーのリスナーはすべてオプトインです。各リスナーは対応する *_BIND 変数が設定されて いるときにだけ存在します(compose ファイルは既定で先頭の 3 つを設定します。無効化するには .env でその変数を空にしてください)。コンテナは非特権ポートにバインドし、ホスト側の標準 低番号ポートへは compose がマップします。

コンテナポート ホスト既定 プロトコル サービス 有効化 / 無効化
1514 514YAGRA_SYSLOG_PORT UDP syslog 受信 YAGRA_SYSLOG_BIND
1162 162YAGRA_TRAP_PORT UDP SNMP トラップ受信(v1/v2c + inform) YAGRA_TRAP_BIND
2055 2055YAGRA_FLOW_PORT UDP NetFlow v5/v9 / IPFIX 受信 YAGRA_FLOW_BIND
6343 6343YAGRA_SFLOW_PORT UDP sFlow v5 受信 YAGRA_SFLOW_BIND既定で無効。ホスト側マッピングは存在しますが、バインドを設定するまで何も待ち受けません
9100 TCP (HTTP) ポーラーの Prometheus /metrics0.0.0.0:9100 固定) compose のポートマッピングでは公開されません。ポーラーをホストネットワーキング(リモート拠点構成)またはネイティブで実行したときに到達できます

対応するホストポートは、機器がデータを送ってくるネットワークセグメントに対してのみ開けて ください。イベントとノードの突き合わせはデータグラムの送信元 IP をキーに行われるため、 これを書き換えるもの(機器とポーラーの間の NAT)があると対応付けが壊れます — ポーラーは機器の 近くに配置してください。

これらのサービスは内部の Docker ネットワークに留めなければなりません。どの compose ファイル もこれらを公開しておらず、スタックの外からこれらに到達する必要も一切ありません — そのままに してください。

ポート サービス 役割
5432 PostgreSQL メタデータストア(ノード、設定、ユーザー、アラート履歴)
6379 Redis ポーラーの死活・割当の一時ミラー(再構築可能)
4222 NATS コア⇄ポーラーのバス。ジョブメッセージは平文のデバイス認証情報を運ぶため、このポートを公開してよいのは TLS + 認証の設定を整えた場合 — かつリモート拠点ポーラーを運用する場合に限られます。
8428 VictoriaMetrics メトリクスの時系列ストア
9428 VictoriaLogs パッシブイベントのログストア(オプション)
8123 ClickHouse トラフィックフローストア(オプション)

機能別のアウトバウンド(egress)

Section titled “機能別のアウトバウンド(egress)”

Yagra が行いうるすべての外向き接続と、どのプロセスがそれを行うかの一覧です。ここに挙げた 接続は、いずれも機能を設定するまで発生しません。

機能 宛先 プロトコル 発信元
Webhook 通知 設定した Webhook URL HTTP/HTTPS コア
メール通知 YAGRA_SMTP_HOST(既定ポート 465、implicit TLS) SMTP コア
PagerDuty 通知 events.pagerduty.com(EU アカウントは events.eu.pagerduty.com — チャネルの API URL で指定) HTTPS コア
Jira Service Management 通知 api.atlassian.com HTTPS コア
転送 — 中継先 設定したコレクタの host:port UDP、TCP、または TLS コア(アクティブ/リーダーのコア — ポーラーではありません)
転送 — BigQuery 転送先 bigquery.googleapis.comoauth2.googleapis.com。保存鍵の代わりに Workload Identity を使う場合は GCE メタデータサーバー 169.254.169.254 HTTPS コア
AI 根本原因分析 設定した 1 プロバイダのみ: api.anthropic.com(Claude)、generativelanguage.googleapis.com(Gemini)、または {location}-aiplatform.googleapis.com(Vertex AI — 自分の GCP プロジェクト内に留まります)。既定は無効 — プロバイダ未設定なら外向き通信はゼロです。 HTTPS コア
シングルサインオン(OIDC) お使いの ID プロバイダの issuer URL HTTPS コア
Cisco Meraki 監視 api.meraki.com(またはリージョナルの api.meraki.cn / api.gov-meraki.com HTTPS Meraki ジョブを実行するポーラープール
分散トレーシング OTLP コレクタ(YAGRA_OTEL_ENDPOINT、例: :4318 OTLP/HTTP コアポーラー
IP→ASN 補完データセット iptoasn.com(週次取得) HTTPS ipasn-updater サイドカー — この機能で外向き通信を必要とする唯一のコンテナ

ロックダウンしたコアホストのために、繰り返しておく価値のある点が 2 つあります。

  • 転送の外向き通信はポーラーではなくコアから発生します。 ポーラーは受信したバイト列を バス経由でコアへ運び、中継も BigQuery へのストリーミングもすべてコアが行います。 転送先へのファイアウォール例外が必要なのはコアホストだけです。
  • TLS の中継先では、コレクタの証明書をシステムのトラストストア(および任意でオペレーター 指定の CA 証明書)に対して検証します。検証を無効化するフラグはないため、傍受プロキシの 背後にある TLS 転送先には接続できません。

リモート拠点とファイアウォール

Section titled “リモート拠点とファイアウォール”

リモート拠点のポーラーは、アウトバウンドルール 1 本だけ、中央側のインバウンドルールはなしで 済むように設計されています。

  • ポーラーは中央の NATS バス(tls://…:4222)へダイヤルアウトします。中央のファイア ウォールが公開するのは TLS + 認証付きバスのちょうど 1 ポート(YAGRA_NATS_PORT、既定 4222)だけで、それ以外は何も公開しません。ポーラーへ向けた穴は開けず、ジョブ割当・結果・ イベント・フローバッチのすべてがこの 1 本の外向き接続の上を流れます。この接続は拠点側の ポートフォワーディングなしで NAT も越えます。
  • リモートポーラーの構成はホストネットワーキングを使うため、パッシブリスナーはホストの ポートに直接バインドし、イベントの突き合わせに使う機器の実際の送信元 IP が保たれます (Docker ブリッジはこれを書き換えてしまいます)。
  • ポーラーは非 root で動作するため(ファイルケーパビリティは NET_RAW のみ)、1024 未満の ポートにはバインドできません。既定の高番号ポート(15141162)を使い、機器から直接 そこへ送信させるか、拠点のファイアウォールで標準ポートをリダイレクトしてください。
Terminal window
# Redirect the standard syslog/trap ports to the poller's unprivileged listeners
iptables -t nat -A PREROUTING -p udp --dport 514 -j REDIRECT --to-ports 1514
iptables -t nat -A PREROUTING -p udp --dport 162 -j REDIRECT --to-ports 1162

転送機能が「機器が送ったとおりのもの」を中継できるよう、ポーラーは常に元のバイト列をコアへ 運びます。パッシブイベントはバス上で生の syslog/トラップ量のおよそ 1.5–1.6 倍になり、 受信したフローデータグラムはすべて、集約ストリームと並行して原本のまま中継されます。中継 フローには 1,000 flows/s あたり 0.4–0.8 Mbit/s — 密にパックするエクスポーターでは最大 ~1 Mbit/s(10,000 では ≈4–8 Mbit/s)— を見込んでください。WAN が落ちても、ポーラーの store-and-forward バッファがローカルでのポーリングを継続し、再接続時にメトリクスを後追いで 補完するため、リンクがフラッピングしても履歴は失われません。

  • 設定リファレンス — 上で挙げたバインド変数やポート マッピング変数を含む、すべての環境変数。
  • インストール — これらのマッピングの出どころである compose ファイルと、リモート拠点ポーラーのセットアップ。