conntrack

package
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package conntrack は、外から入って DNAT されたフローを Plan に収束させる(仕様 6.1 節、 設計文書 7a.8 節 Phase 3)。「宣言状態に収束させる」1 手順だけを持つ:Dump → 判定 → 削除。 nftables テーブルの差し替えの後に走らせる。internal/dataplane/linuxkernel の一部で、 internal/vpsd を import しない(設計文書 7a.7 節)。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Converge

func Converge(rules []Rule, wgNet netip.Prefix) (int, error)

Converge は対象のフローを Dump し、現在のルールで許されないものを削除する。削除数を返す。

Types

type Rule

type Rule struct {
	Proto      proto.Proto
	ListenPort proto.PortRange
	AgentAddr  netip.Addr // DNAT 先(エージェントのアドレス)
	// Policy は接続元 deny/allow(design.md 7a.9 節)。planner.PortPlan.Policy の写しで、接続元以外の
	// レート等の項目はこの収束の判定に使わない。
	Policy policy.RulePolicy
	// Keep は、nil でなければ Policy の deny/allow の代わりに接続元を判定する。fail-closed に
	// したルールの直前の Active の値を、新しい宣言の接続元制限とあわせて判定するのに使う(設計文書 7a.3 節)。
	Keep func(src netip.Addr) bool
}

Rule は収束の判定に使う、ルールの部分集合。カーネルモードで有効なものだけを渡す。

func RulesFromPlan

func RulesFromPlan(plan planner.Plan) []Rule

RulesFromPlan は、Plan の Transparent(カーネルモード)のポートから収束の判定材料を作る (design.md 6.1, 7a.8 節 Phase 3)。Plan.Ports は無効なルールとエージェントが未登録のルールを 既に除いているので、ここでは検査し直さない。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL