通过 OpenVPN 隧道的单一应用程序(Debian Lenny)

通过 OpenVPN 隧道的单一应用程序(Debian Lenny)

我正在使用 Debian Lenny,并且我只想通过 OpenVPN 隧道传输 rtorrent。

我有一个正在运行的隧道,配置文件如下所示:

client
dev tun
proto udp
remote openvpn.xxx.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/xxx/keys/ca.crt
cert /etc/openvpn/xxx/keys/client.crt
key /etc/openvpn/xxx/keys/client.key
tls-auth /etc/openvpn/xxx/keys/tls.key 1
ns-cert-type server
comp-lzo
verb 3
auth-user-pass
script-security 3
reneg-sec 0

我的想法是,我可以在内部运行一个 sockd 代理,将流量重定向到 openvpn 隧道。我可以使用 *nix“代理程序”应用程序“tsocks”使 rtorrent 能够通过该代理进行连接(因为 rtorrent 不支持代理)。

我在配置 sockd 时遇到了麻烦,因为每次连接时 VPN 内的 IP 都会发生变化。有人说这个配置文件会有所帮助: http://ircpimps.org/sockd.conf 由于每次连接时我的 IP 都会发生变化,我不知道该在配置文件中输入什么。我无法控制主机端配置文件。

需要任何帮助。任何其他方法都非常受欢迎。

答案1

您必须以某种方式标记此应用程序的数据包。最简单的方法如下:

  • 以自己的用户身份运行 rtorrent
  • 使用 iptables 标记来自 rtorrent 用户的连接(-m Owner --uid-owner rtorrent)
    • 或者你也可以匹配 PID (--pid-owner)
  • 使用策略路由来以不同于“正常”路由表的方式路由这些连接。

如果在这里写详细的解释会非常有用,但这应该会给你足够的关键词来谷歌搜索。

答案2

解决这个问题的另一种方法是使用 socks ower ssh ( ssh -D portnumber),它可以与 tsocks 配合使用。

答案3

SOCKS 代理可能不是完成这项工作的最佳工具。我的设置方式如下:

  1. 以特定用户身份运行 rtorrent
  2. 使用 iptables 通过 VPN 转发该用户的流量

问题主要在于您是否想以其他用户身份运行 rtorrent。您很可能在 screen 中运行它,而 screen 并不喜欢以其他用户身份运行。这是可行的,但您需要弄清楚另外一件事。

当我针对我的设置研究这个确切问题时,我发现在进程级别限制 OpenVPN 极其困难。如果你能找到一种方法让它工作,我肯定会感兴趣。

答案4

指定rtorrent只监听tun0或指定给它的 IP。这应该可以处理传入连接。

我不知道“sockd”是什么,但tsocks配置文件是/etc/tsocks.confIIRC。但你需要在另一端有一个支持 socks 的应用程序,而 OpenVPN 不是。

看起来您可以rtorrent将其用于传出连接的端口限制在特定范围内。执行此操作,然后使用iptables这些REDIRECT端口上的传出流量从eth0tun0

相关内容