如何阻止損壞的輸出資料包使用預設路由?

如何阻止損壞的輸出資料包使用預設路由?

我有一個路由器。它有幾個介面。其中之一是 VPN,稱為 vpn0,一個是到實體介面的預設路由,稱為 out0,還有一個輸入介面 in0。

來自 in0 且目標連接埠為 993 的封包永遠不會放置在 out0 上。我透過這樣標記資料包來做到這一點:

iptables -t mangle -A PREROUTING -i in0 -p tcp --dport 993 -j MASK --set-mark 100
iptables -t mangle -A PREROUTING -i in0 -p tcp --dport 993 -j CONNMARK --save-mark

要停用 out0 上的轉發,我執行以下操作:

iptables -A FORWARD -i in0 ! -o vpn0 --match-mark 100 -j DROP -m conntrack --ctstate NEW

我遇到的問題是來自主機的輸出資料包。要破壞 vpn0 的資料包,我有以下規則:

iptables -t mangle  -A OUTPUT --protocol tcp --dport 993 --jump MARK --set-mark 100
iptables -t mangle -A OUTPUT --protocol tcp --dport 993 --jump CONNMARK --save-mark
iptables -t mangle -A OUTPUT --protocol tcp --dport 993 --jump RETURN    

效果相當好。只有當 vpn0 不工作時才會發生。我嘗試新增規則:

iptables -A OUTPUT --protocol tcp --dport 993 -o out0 --match mark  --mark 100  --jump DROP -m conntrack --ctstate NEW

但這會丟棄會流出 VPN 的封包。我透過將 DROP 更改為 LOG 來檢查這一點,並且輸出介面是 out0,而不是 vpn0。

是什麼賦予了?

相關內容