如何排除 ftp 流量通过 vpn 路由?

如何排除 ftp 流量通过 vpn 路由?

我正在使用 openvpn 和网络管理器连接到 ghostvpn,一切正常,但我想从 vpn 连接中排除所有 ftp 流量,因为我需要更快的上传/下载速度。到目前为止,我在上传和下载时必须断开与 vpn 服务器的连接 - 这不是一个好的解决方案 ;)

我该怎么做?或者也许 filezilla 中有一个选项?

提前致谢!

塞巴斯蒂安

答案1

你可以ftp使用以下方式直接路由到互联网iptables

这里我们将采用ftp来进行路由。使用mangle表来iptables修改ftp数据包。

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

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

现在保存并重新启动iptables

sudo service iptables save
sudo service iptables restart

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

100 ftptable

为数据包编写规则ftp

ip rule add fwmark 0x1 lookup ftptable

在新表中添加路由ftptable。如果 VPN 设置为默认网关,则所有其他流量都将通过 VPN,这可以通过ip route show命令看到。

第一次连接到 vpn 时执行此操作。

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

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

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

sudo ip route add default dev <your_interface> table ftptable

your_interfrace命令是您通常的 wifi 或 eth 接口,当您未连接到互联网时访问互联网。

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

编辑1

第二种方式

/etc/iproute2/rt_tables通过附加以下行来编辑并添加新表:

100 ftptable

ftptable配置以默认网关命名的新路由表,并创建规则以有条件地将流量发送到该表。

ip route add default via <usual_gw_ip> dev <your_int> table ftptable
ip rule add fwmark 0x1 table ftptable

您最终的注释脚本将如下所示:

# Populate secondary routing table
ip route add default via <usual_gw_ip> dev <your_int> table ftptable
# Anything with this fwmark will use the secondary routing table
ip rule add fwmark 0x1 table ftptable
# Mark these packets so that iproute can route it through ftptable
iptables -A OUTPUT -t mangle -o <your_int> -p tcp --dport 21 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o <your_int> -p tcp --dport 21 -j SNAT --to <your_local_ip>

尝试。

编辑2

当您连接到 vpn 时,我猜所有流量都会通过它们。在您的路由表中,您将看到tun0接口的默认网关。只需添加路由即可将流量路由到 ftp 服务器到不同的接口/ip

ip route add <your_ftp_server_ip/32> dev <your_exit_int>

<your_exit_int> - represent not tun interface example: eth0, ens160, ...

相关内容