如何通过 OpenVPN 路由特定流量?

如何通过 OpenVPN 路由特定流量?

我在家里运行一个装有 rtorrent 和 apache2 的服务器。我想通过 OpenVPN 路由我的 rtorrent 流量,由于我对 OpenVPN 和 iptables 还不熟悉,所以我希望能有一个用户友好的指南。

我尝试过的:我已经在 Google 上搜索了两天,但没找到任何可以帮到我的东西。我已经用 openvpn 测试了隧道,它路由我的 IP 正确,但问题就在这里。因为我运行的是 apache2 服务器,所以当隧道处于活动状态时,它会停止工作(当然)。

我想要的是:我希望隧道处于活动状态但不是默认状态,并且只有 rtorrent 流量应该通过它,最后但并非最不重要的是,rtorrent 只能通过 VPN 连接。

有谁愿意承担教我这个任务吗?

答案1

我已设法通过两个主要步骤来解决这个问题:

  1. 选择使用TUN接口的服务提供商。
  2. 更多表路由

表路由

我读过最有用的指南http://lartc.org/howto/并按照那里提供的步骤进行操作。

我的设置现在是两个物理网卡(eth0 和 eth1),分为三个表(主表、T1 和 T2)。T1(eth1)路由默认内容(apache2、ssh 等),而 T2(eth0)仅用于 rtorrent 连接。

它非常有效。因此,如果您遇到同样的问题,请阅读 lartc.org 上的说明,问题将得到解决。

笔记

我还没有尝试使用 TAP 接口进行此配置,所以我无法判断它是否有效。

答案2

这是一个“高级路由”问题。

这些文章应该有帮助:

http://kindlund.wordpress.com/2007/11/19/configuring-multiple-default-routes-in-linux/

http://www.rjsystems.nl/en/2100-adv-routing.php

所以基本上您需要配置两个路由表,每个路由表都有自己的默认路由,以及指定哪些流量使用哪个路由表的规则。

在您的例子中,您指定默认情况下流量使用“正常”路由,而来自/到 vpn 接口的“vpn”流量使用“vpn”路由。然后在 rtorrent 启动时使用 -b 选项绑定到具有 vpn 接口的 ip 地址。

每次建立 VPN 后,您都需要进行路由表调整。

如果/当你让它工作时,请务必在这里留下你使用的确切命令!

相关内容