將特定程式路由到特定 NIC

將特定程式路由到特定 NIC

我有兩個互聯網連接,一個互聯網連接具有非常高的延遲,連接有波動(塔和Wifi CPE 之間有一棵樹,因此信號時好時壞),但下載效果很好,因為連接永遠不會改變為0。

所以我想要的是將 wlan0 用​​於一些特定的程序,例如蒸汽和下載等,基本上是消耗大量數據的程序。

我想使用 wlan1 來瀏覽和其他東西,更少的數據。

簡而言之,我想透過特定的網路卡路由特定的程序,我沒有特定的IP範圍。

我可以透過 wifi 連接它們,因為我有 1 個額外的 wifi 適配器(wlan0、wlan1),作為另一種選擇,我可以將一個連接到乙太網路(wlan0、eth0)

答案1

如果你的流程有一些東西,這可能是可能的iptables可以匹配,例如特定群組。例如,給定一個 group to-wifi,您可以使用 iptables 規則,如下所示:

iptables -A FORWARD --in-interface wlan0 -j ACCEPT
iptables -t nat -A OUTPUT -m owner --gid-owner to-wifi --out-interface wlan0 -j MASQUERADE  

(並啟用轉送:sysctl -w net.ipv4.conf.all.forwarding=1。)

然後,如果您運行 Steam,例如:

sg to-wifi steam

來自該 Steam 進程(+任何子進程)的任何流量都將從其所經過的任何介面轉送到無線介面。

我從未嘗試過介面到介面重定向,但我曾經iptables透過匹配組來將所有 TCP 流量從 Steam 重定向到代理,因此這些規則本身可能還不夠。


這可以透過為每個介面建立群組並將您自己添加到其中來完成。例如,使用addgroupadduser命令:

sudo addgroup to-wifi
sudo adduser $USER to-wifi
sudo addgroup for-eth0
sudo adduser $USER for-eth0

您需要重新登入才能使新的群組成員資格生效。

有關的:

答案2

據我所知,沒有辦法做到這一點。

這可以透過特定的 iptables 規則來完成連接埠+ 他們用來建立連結的目的地,但我不知道本地的方法。

相關內容