通过 VPN 路由特定用户的流量但仍允许本地网络

通过 VPN 路由特定用户的流量但仍允许本地网络

因此,我希望通过 VPN 连接路由某些流量,其余流量通过我的正常 Internet 连接路由。我想运行几个不同的程序,但大多数程序都不支持绑定到特定网络接口(tun0就我而言)。

我已设法按照这里给出的答案通过 VPN 发送特定用户的流量: iptables-目标是将数据包路由到特定接口?

但不幸的是,当我运行一个连接到互联网的服务器并且在本地 IP(127.0.0.1/192.168.0.*)上运行 Web 界面时,所有的互联网流量都可以正确地通过tun0,但我无法以其他用户身份从本地 IP 连接到 Web 界面。

当我以 VPN 用户身份登录时,我可以访问在本地 IP 上运行的服务,但其他用户/机器无法访问我启动的任何服务器。

有人能给我指出正确的方向吗?

答案1

首先添加防火墙规则:

iptables -t mangle -A OUTPUT -m owner --uid USER -j MARK --set-mark 1
iptables -t nat -A POSTROUTING -m mark --mark 1 -j MASQUERADE

然后添加路由规则:

ip rule add fwmark 0x1 table 100

然后将路由添加到新的路由表:

ip route add SOMEROUTE via SOMEGATEWAY table 100

答案2

您必须为 VPN 另一端的网络设置静态路由。通常,除非您指定明确的路由,否则所有内容都会通过默认路由进行路由。

假设 VPN 后面的网络是 10.10.42.0/24,那么你添加一条静态路由

ip route add 10.10.42.0/24 dev tun0

这将通过 tun0 发送该子网的所有流量

相关内容