特定程序通过VPN的流量

特定程序通过VPN的流量

是否可以只让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 中的natmanglefilter表,这将擦除您迄今为止所做的任何 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

相关内容