我有一个 ppp0 接口设置为 VPN 隧道,使用本指南。现在我需要通过 ppp0 接口路由特定端口 (80、443) 上的流量。理想情况下,如果 VPN 服务器关闭,则所有 HTTP(S) 请求都应失败。
针对类似问题有很多答案建议使用iptables
,所以我想这就是可行的方法,但我无法找出针对这种特定场景使用的正确命令。
答案1
这里我们将其www
作为路由服务,使用mangle
iptable表来修改www
数据包。
sudo iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0x1
我们将所有目标端口的数据包标记80
为0x1
。
现在保存并重新启动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
。