簡體   English   中英

wg-quick nftables 規則有什么作用?

[英]What does wg-quick nftables rules do?

當我通過wg-quick up wg0添加一個wireguard 接口時,wg-quick 設置了以下nftable 規則。 這些在做什么,為什么需要它們?

以下是 ipv4 的一些示例規則:

table ip wg-quick-wg0 {
    chain preraw {
        type filter hook prerouting priority raw; policy accept;
        iifname != "wg0" ip daddr 10.4.125.231 fib saddr type != local drop
    }
    chain premangle {
        type filter hook prerouting priority mangle; policy accept;
        meta l4proto 17 meta mark set ct mark
    }
    chain postmangle {
        type filter hook postrouting priority mangle; policy accept;
        meta l4proto 17 meta mark 0x0000ca6c ct mark set meta mark
    }
}

我對這些很感興趣,因為我的虛擬機需要那些 function 正確,但我的主機不需要它們具有工作的線保護接口。 可悲的是,腳本本身沒有記錄為什么設置它們。

wg-quick 腳本僅在您將 WireGuard 對等體的 AllowedIP 配置為包含 /0 時才AllowedIPs /0規則——也就是地址族的“所有地址”或“默認路由”(IPv4 為0.0.0.0/0::/0用於 IPv6)。

使用像 WireGuard 這樣的隧道作為默認路由需要一些技巧才能在大多數情況下正常工作。 wg-quick 使用的主要技巧是將新的默認路由放入自定義路由表中,同時添加帶有防火牆標記的策略路由規則以僅覆蓋主表的默認路由。 這是在這種情況下您將看到 wg-quick 設置的路由和策略規則的目的:

[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0

您的問題中列出的防火牆規則有助於解決一些額外的邊緣情況:當數據包被發送到隧道外的 WireGuard 接口地址時,第一條規則可以防止某些路由循環和其他問題; 第二和第三條規則為通過隧道接收的數據包修復反向路徑查找(允許反向路徑過濾工作)。

如果您不想讓 wg-quick 做這些事情,您可以在 WireGuard 配置的[Interface]部分設置Table = off ,並自己設置適當的路由。 有關這些路由技巧的更多詳細信息,請參閱 WireGuard 站點上路由指南的路由所有流量部分,或了解現代 Linux 路由文章。 有關這些防火牆規則的更多詳細信息,請參閱Wg-quick 默認防火牆規則文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM