如何在 ubuntu 服务器上配置 pptp vpn 客户端来路由特定流量?

如何在 ubuntu 服务器上配置 pptp vpn 客户端来路由特定流量?

我在 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 接口进行路由。

相关内容