将 wlan1 的流量通过 vpn 路由,将 wlan0 的流量路由到 eth0

将 wlan1 的流量通过 vpn 路由,将 wlan0 的流量路由到 eth0

我正在尝试设置无线路由器并使用 vpn。因为我对这个特定主题还不太熟悉。我希望这里有人能给我一个提示,或者如果可能的话,给我一个实用的解决方案。我在网上搜索了好几遍,但没有找到以下问题的令人信服的解决方案:

我有一台基于 ubuntu 的设备,它有两个无线接口(wlan0 和 wlan1)以及一个连接到互联网的物理网络接口(eth0)。我还计划连接到一个 vpn(openvpn 到我必须先购买的 vpn 提供商),它可能是 tun0 或类似的东西。我希望连接到 wlan1 的任何设备的流量都通过 vpn 传输,并且 wlan0 上的所有流量都直接路由到互联网。

这是我的问题:a)这可能吗?b)如果(a == yes)我该怎么做?

我需要一个可靠的解决方案,所以如果可能的话请不要使用肮脏的黑客手段。

提前致谢,Peer

答案1

这是使用基于策略的路由完成的。

通常,路由决策是基于目标网络做出的,但是,使用基于策略的路由,您可以根据连接的各个方面进行路由。您的场景很简单:如果传入接口是,wlan1则默认路由应该在tun0

首先,我们建立一个名为“vpn”(或任何你喜欢的名字)的新路由表:

echo "200 vpn" >> /etc/iproute2/rt_tables

或者您可以编辑此文件并添加200 vpn到末尾。

接下来我们需要添加一条规则:

sudo ip rule add iif wlan1 lookup vpn

这就是说“如果传入接口是,wlan1则使用名为“vpn”的路由表,而不是普通路由表。

然后我们在vpn路由表中添加一条默认路由:

sudo ip route add default dev tun0 table vpn
sudo ip route flush cache

这表示使用名为“vpn”的路由表的任何设备都将使用 tun0 接口作为其默认网关。然后我们刷新路由缓存以进行更好的测量。

您可以使用此命令来查看vpn路由表:

sudo ip route list table vpn

现在只需运行这些命令,也许作为激活 vpn 后的脚本。我很确定 openvpn 有一个可以将它们添加到后续脚本中。

相关内容