2026
یک دیمن سیاست شبکه برای میزبان لینوکس: مسیرها، مسیریابی سیاستمحور، فایروال، NAT، کنترل ترافیک و sysctlها را بهصورت وضعیت مطلوب نگه میدارد و آنها را بهشکل idempotent با ip، nft و tc اعمال میکند.
netpolicyd پیکربندی مطلوب شبکه را برای یک میزبان لینوکس نگه میدارد —
مسیرها، قوانین سیاست، آدرسها، فایروال، NAT، کنترل ترافیک و sysctlها — و آن را با
ip، nft، tc و sysctl اعمال میکند. netpolicyctl پنل کنترل آن است:
یک رابط ترمینالی با حالت ساده و حالت پیشرفته، بهعلاوهٔ CLI.
| حوزه | ابزار اعمال |
|---|---|
| سیاستها | قوانین مرتب سطحبالا که به ip rule / مسیرهای جدول / NAT باز میشوند |
| مسیرها و قوانین IP | ip route، ip rule |
| آدرسها و لینکها | ip addr، ip link |
| فایروال و NAT | nftables (masquerade، SNAT، کمککنندههای forward) |
| فهرستهای IP | گروههای نامدار CIDR که به nft set تبدیل میشوند |
| کنترل ترافیک | شکلدهی خروجی HTB و محدودسازی ورودی |
| Sysctl | ip_forward، rp_filter، … |
وضعیت زنده را هم نشان میدهد: خروجی فقطخواندنی از فایروال و مسیریابی میزبان، و
نرخ اینترفیسها بهعلاوهٔ فهرست سوکتها از /proc/net/dev و ss.
PUT /v1/desired
جایگزین میشوند).POST /v1/apply یک برنامهٔ مرتب از فرمانها میسازد. ?dry_run=1 همان
برنامه را بدون دست زدن به میزبان برمیگرداند.nft -f ساخته میشود که جدول
inet netpolicyd را در یک تراکنش واحد اعلان، حذف و دوباره تعریف میکند — بدون
پنجرهٔ نیمهاعمال و بدون تکرار انباشته. قوانین بیرون از آن جدول دست نمیخورند.curl -s -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"name":"src-via-gre-lab","priority":10,
"subjects":[{"kind":"cidr","value":"10.77.0.4/32"}],
"destination":{"kind":"any","value":"0.0.0.0/0"},
"action":"egress","egress_name":"gre-lab","source_cidr":"10.77.0.4/32"}' \
http://127.0.0.1:51910/v1/policies
netpolicyctl apply
این یک ip rule و یک جدول مسیریابی با پیشفرض gre-lab برنامهریزی میکند،
بهعلاوهٔ masquerade روی همان دستگاه، مگر اینکه یک NAT صریح از قبل آن را پوشش
داده باشد.
CAP_NET_ADMIN نیاز دارد. بدون باینری ip، یا با --mock،
فقط برنامهریزی میکند.Go، Bubble Tea برای TUI، nftables، iproute2، tc. با مجوز GNU AGPL v3.