仅通过 VPN 路由 HTTP(S) 流量

仅通过 VPN 路由 HTTP(S) 流量

我有一个 ppp0 接口设置为 VPN 隧道,使用本指南。现在我需要通过 ppp0 接口路由特定端口 (80、443) 上的流量。理想情况下,如果 VPN 服务器关闭,则所有 HTTP(S) 请求都应失败。

针对类似问题有很多答案建议使用iptables,所以我想这就是可行的方法,但我无法找出针对这种特定场景使用的正确命令。

答案1

这里我们将其www作为路由服务,使用mangleiptable表来修改www数据包。

sudo iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0x1

我们将所有目标端口的数据包标记800x1

现在保存并重新启动iptables

service iptables save
service iptables restart

/etc/iproute2/rt_tables接下来,只需输入一个条目即可创建一个新的 IP 路由表

100 wwwtable

为数据包编写规则www

ip rule add fwmark 0x1 lookup wwwtable

在新表中添加路由wwwtable。所有其他流量将通过默认网关,可以通过ip route show命令看到。

我们从主表复制除默认网关条目之外的所有条目。

sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table wwwtable $ROUTE; done

将数据包的默认网关条目添加www到表中wwwtable

sudo ip route add default dev ppp0 table wwwtable

使用ip route show table wwwtable显示 所有路线wwwtable

https对端口重复所有操作443

相关内容