将特定程序路由到特定 NIC

将特定程序路由到特定 NIC

我有两个互联网连接,一个互联网连接的延迟非常高,连接有波动(塔和 Wifi CPE 之间有一棵树,所以信号时好时坏),但下载没问题,因为连接从未降为 0。另一个是固定电话连接,它们有很强的下载限制。

所以我想要的是使用 wlan0 来运行一些特定的程序,比如 steam 和下载等,这些程序基本上都会消耗大量的数据。

我想使用 wlan1 进行浏览和其他操作,较少的数据。

简而言之,我想通过特定的 NIC 路由特定的程序,我没有特定的 IP 范围。

我可以通过 wifi 连接它们两个,因为我有一个额外的 wifi 适配器(wlan0、wlan1),另一个选择是,我可以通过以太网连接一个(wlan0、eth0)

答案1

如果你的流程有某些问题iptables可以匹配,例如特定组。例如,给定一个组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

据我所知,没有办法做到这一点。

这可以通过在特定端口+ 他们用来建立连接的目的地,但我不知道当地如何做到这一点。

相关内容