是否可以只让Deluge的流量通过VPN(OpenVPN),而其他流量不通过iptables?
答案1
Deluge 用户指南有一个关于此的页面:使用 VPN 设置 Deluge。基本 torrent-VPN 设置的脚本可以在这个 GitHub 存储库。 README.md 文件甚至有一些关于 OpenVPN 的内容:
要将这些脚本与 OpenVPN 一起使用,请克隆存储库并在 中为接口和用户设置正确的值
vpn_base.sh
。编辑 openvpn 客户端配置并添加以下行:
up "/path/to/repo/link_up_user_filter.sh"
要允许在启动 openvpn 客户端时自动执行外部脚本,请使用参数运行 openvpn
--script-security 2
或将此行添加到客户端配置中:
script-security 2
他们所谈论的“价值观”vpn_base.sh
如下:
VPNIF="tun0"
NETIF="eth1"
VPNUSER="vpnuser"
TABLE_ID=42
MARK_ID=0x10
我对这些脚本不是很熟悉,但我猜它们对应于:
- VPN 流量的网络接口。
- 连接至互联网的网络接口。
- 运行 VPN 软件的用户(
openvpn
在您的情况下?) - 可用的路由表 ID。
- 可用的数据包标记 ID。
设置完成后,脚本应设置一些路由/防火墙规则,并且您的 Deluge 流量应通过 OpenVPN。
不过有一句警告:这些脚本似乎刷新了 IPTables 中的nat
、mangle
和filter
表,这将擦除您迄今为止所做的任何 IPTables 配置。
iptables -F -t nat
iptables -F -t mangle
iptables -F -t filter
确保iptables-save
首先保存表格,或者只是编辑user_filter/iptables_user_filter.sh
文件。
如果您想了解更多信息,这里有一些您可能感兴趣的链接:
答案2
您无法专门针对某个应用程序,因此唯一没有依赖性的解决方案是创建一个 iptables 配置,将所有端口定向到您的 VPN。但你必须知道要转发什么,这很容易出错。
更好的解决方案是使用 Linux 容器并在其中运行您的应用程序。然后让容器的网卡将所有流量转发到VPN。这是 Arch 的教程,但基本概念适用于任何发行版。
https://wiki.archlinux.org/index.php/OpenVPN_in_Linux_containers