我想要進行以下設定。有兩個接口:wlan0wg0wlan0是預設的,wg0是wireguard接口,已配置手動

預設流量會轉到wlan0.但是,如果將進程放入 cgroup 中(例如wgcgrp(classid 為 1)),流量必須通過wg0.

我完全不知道該怎麼做。我嘗試的就是這個。我會說得很囉嗦,因為我很沮喪。

[線衛設定]

這很簡單,首先ip l a wg0 name wg0 type wireguard。然後,我有一個 w.conf 文件,其中包含饋送到wg setconf wg0.它設定私鑰、公鑰、允許的 IP(0.0.0.0/0、::0/0)和端點。沒有什麼更多的。然後我還設定了 wg0 介面的 IP 位址,這是我事先知道的:ip ad a $ip dev wg0; ip -6 ad a $ip6 dev wg0。現在我新增路線:ip l s wg0 up; ip r a default dev wg0 t wg

[防火牆]

據我了解,我必須使 cgroup 流量以某種方式到達wg路由表。我知道該怎麼做。我必須標記該類型鏈內的 cgroup 流量route,然後對其進行偽裝。這是規則。

table inet t {
    chain post {
        type route hook output priority mangle; policy accept
        meta cgroup 1 counter meta mark set meta cgroup
    }
    
    chain masq {
        type nat hook postrouting priority srcnat; policy accept
        meta cgroup 1 oifname "wg0" counter masquerade
    }
}

不再我的防火牆中的規則。

[路線設定]

標記的流量必須進入wg表中,所以我運行ip ru a fwmark 1 lookup wg

[結果]

cgexec -g net_cls:wg ping 8.8.8.8 而我什麼也沒得到。為什麼?我什至不知道如何開始調試。這應該很簡單,但我還沒接近。

答案1

看來您需要ip r a "$endpoint_ip" dev wlan0 via "$wlan0_gateway" t wg使此設定起作用。這對我來說非常出乎意料,因為 openVPN 無需這條額外的路由即可運作。如果有人知道並解釋為什麼會這樣,將非常感激。也許是因為 openVPN 是一個用戶空間進程,而wireguard 在核心中運行並且路由不同?

相關內容