Linux-Networking
如何將“ip route add local 0.0.0.0/0 dev lo table 100”翻譯成systemd-networkd?
我正在嘗試設置一個軟體路由器,目的是將數據包路由到路由器上的代理伺服器。我正在閱讀的教程具有以下路由規則:
ip rule add fwmark 1 table 100 ip route add local 0.0.0.0/0 dev lo table 100
以及以下 iptables 規則:
iptables -t mangle -N V2RAY iptables -t mangle -A V2RAY -d [Private Addresses] -j RETURN iptables -t mangle -A V2RAY -p udp -j TPROXY --on-port 12345 --tproxy-mark 1 iptables -t mangle -A V2RAY -p tcp -j TPROXY --on-port 12345 --tproxy-mark 1 iptables -t mangle -A PREROUTING -j V2RAY
整個事情完美無缺。但是現在我開始使用它
systemd-networkd
來避免任何啟動腳本,而且我在轉換ip route add local 0.0.0.0/0 dev lo table 100
為systemd-networkd
語言時遇到了麻煩。我的第一個問題是,這條路線有什麼作用?到目前為止我的理解是:
iptables
添加防火牆牆標記 1.- 該規則選擇標記為 1 的所有數據包使用路由表 100。
- 該路由添加到表 100,因此它僅適用於標記為 1 的數據包。
- “0.0.0.0/0”部分錶示它是預設路由。
- 但是這裡的“本地”是什麼意思?為什麼
device lo
?為什麼我們需要這裡的路線?iptables 不能直接處理嗎?我的第二個問題是如何在
systemd-networkd
.為了匹配帶有標記 1 的數據包,這似乎很容易(並且在我的路由器上工作):
[Match] Name = * [RoutingPolicyRule] FirewallMark = 1 Table = 100
我不確定是否
Name = *
需要。這是否確保來自任何設備的任何數據包,只要它具有標記 1,都將使用表 100 路由?或者我可以在這裡匹配一些特定的網路設備嗎?但是,我不能在 systemd-networkd 中創建路由。到目前為止,我的嘗試是:
[Match] Name = lo [Route] Type = local Destination = 0.0.0.0/0 Table = 100
但似乎這沒有效果:
ip route show table 100
實際上給出了:Error: ipv4: FIB table does not exist. Dump terminated
我應該如何處理這個?
[Match] Name = lo [RoutingPolicyRule] FirewallMark = 1 Table = 100 Priority = 100 [Route] Table = 100 Destination = 0.0.0.0/0 Type = local
將它們合併到一個文件中