我在 ubuntu 服务器(aws ec2)上安装并成功运行了 pptp vpn 客户端。
我希望能够通过此 vpn 访问某些网站。但是,仍然能够 ssh 并连接到服务器。
$ route -n #after connecting to vpn
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.31.0.1 0.0.0.0 UG 100 0 0 eth0
172.31.0.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
192.168.68.35 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
209.99.22.18 172.31.0.1 255.255.255.255 UGH 0 0 0 eth0
连接后,路由表如上。如果我将 ppp0 设为默认网关,我将无法再次通过 ssh 连接到服务器。
所以,我想添加一些规则,以便每当应用程序/脚本请求特定的网址或 HTTP/HTTPS 请求时,它都会通过 ppp0 或 vpn 连接重定向流量,但不重定向其他连接。
是否可以?
提前致谢!
答案1
您可以使用 iptables 标记数据包,并通过 iproute2 路由标记的数据包
。拉拉训练中心
就你的情况来说,首先需要创建 iptables 规则:
iptables -t mangle -A OUTPUT -p tcp -m tcp -d 1.2.3.4 --dport 80 -j MARK --set-mark 0x1
其中 1.2.3.4 - 目标网站的 ip 地址。
然后使用 iprule 添加路由表
echo 201 crawl >> /etc/iproute2/rt_tables
ip rule add fwmark 1 table crawl
核实
ip rule ls
0: from all lookup local
32765: from all fwmark 0x1 lookup crawl
32766: from all lookup main
32767: from all lookup default
现在向表爬取添加默认路由:
ip route add default via 192.168.68.35 dev ppp0 table crawl
就这样,目标地址为 1.2.3.4、目标端口为 80 的数据包将通过 ppp0 接口进行路由。