Skip to content

fix: ホストの経路検索に送信元IPv4アドレスを渡す - #73

Merged
1outres merged 3 commits into
1outres:developfrom
MuNeNiCK:fix/host-fib-source-policy
Oct 18, 2026
Merged

1outres merged 3 commits into
1outres:developfrom
MuNeNiCK:fix/host-fib-source-policy

Conversation

@MuNeNiCK

@MuNeNiCK MuNeNiCK commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator

概要

forward_via_host_fib() が bpf_fib_lookup() にパケットの送信元IPv4アドレスを渡すように修正します。

原因

経路検索パラメータはゼロ初期化されていますが、ipv4_src が設定されていませんでした。このため、送信元プレフィックスを条件とするLinuxのポリシールーティングが、実際のパケットの送信元ではなく 0.0.0.0 に対して評価されます。

送信元ごとに異なる上流経路を使用する環境では、NATGateway・EIP・LoadBalancerの外向き通信が意図した経路を選択できません。

変更内容

  • fib_params.ipv4_src = iph->saddr を追加します。
  • NAT適用後に呼ばれる場合は、変換後の送信元アドレスを使用します。
  • PodEgressの生成済みBPFオブジェクトを両エンディアン分更新します。

CRD、経路ルール、デフォルトゲートウェイの設定は変更しません。特定のルータやネットワークに依存する値も追加していません。

検証

  • 稼働版 v1.0.0-rc.12 に同じ修正を適用し、検証対象クラスタ内だけでイメージを差し替えました。
  • 変更前にタイムアウトしていた公開LoadBalancerへのHTTP接続が、変更後は応答することを確認しました。
  • 一時的な検証用リソースで、NATGateway経由の外部TCP接続、およびEIP経由のTCPデータ往復を確認しました。
  • 既存のノード間アプリケーション通信が維持されることを確認しました。
  • 稼働版と、本PRの develop ベースの双方で go test ./...(daemonモジュール)を実行しました。権限を必要とするBPFテストは通常コンテナではスキップされるため、別途実機カーネルで verifiercheck を実行し、全プログラムの読み込み成功を確認しました。
  • 一時的な検証用リソースは撤去済みです。

この検証は送信元に基づく経路選択の修正を確認するものであり、上流ネットワークを含む全宛先への到達性を保証するものではありません。

@1outres
1outres force-pushed the fix/host-fib-source-policy branch from 187bf7a to dee7924 Compare October 18, 2026 03:01
@1outres
1outres merged commit 0955a34 into 1outres:develop Oct 18, 2026
4 checks passed
@MuNeNiCK
MuNeNiCK deleted the fix/host-fib-source-policy branch October 18, 2026 23:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants