将我的家庭流量路由到另一台服务器,而不是 ISP 的默认路由

将我的家庭流量路由到另一台服务器,而不是 ISP 的默认路由

我怀疑我的 ISP 对等连接安排很差,导致我经常访问的几个网站的访问速度很慢。我通过将我的网络流量代理到我放置在附近数据中心的服务器来确定这一事实,并发现我的浏览体验有了很大的改善。所以我很确定我的最后一英里相对干净,给我带来了宣传的那么多,而导致问题的是来自我的 ISP 的上行链路。

我想更进一步使用代理,将所有家庭流量路由到我的服务器,因为数据中心的对等安排似乎要好得多。我应该如何实现这一点?我想到了两种可能的方法:

  1. 配置从家用路由器到服务器的静态路由。我猜想我必须配置服务器的 IPTable 堆栈以充当路由器?
  2. 在我的服务器上配置 OpenVPN,并在我家中的所有 PC 上配置 OpenVPN 客户端。

我想听听大家对哪种方法更好的反馈。我的服务器运行的是 Debian,我的家用路由器在 Linksys WRT54GL 上运行的是 Tomato 固件,家里的 PC 运行的是 Ubuntu 变体。

谢谢!Wong

答案1

选项 1 是不可能的,没有办法(可行的)来告诉你的 ISP 以不同的方式路由你的数据包。

选项 2 可行。只需设置一个 openvpn 连接,设置一个静态路由通过 ISP 的默认网关(通常用于所有流量的网关)连接到您的服务器,然后将您的默认网关设置为服务器的 openvpn 端点 IP。您可能希望通过 ISP 的网关向目标 IP(DNS 服务器)添加额外的静态路由来删除一些服务(例如 DNS 服务器)。

答案2

Tomato 固件可能更好,但普通的劣质路由器固件通常不允许您正确配置路由。有时,它们看似可以,但实际上却不行,因为它们将默认路由插入您无法更改的位置,因此您无法控制。

但是,除此之外,我认为您应该将服务器设置为路由器上的默认网关,并在服务器上启用 IP 转发 (/etc/sysctl.conf)。使用 OpenVPN 基本相同,只是它还会对其进行加密;openVPN 会以您手动操作的方式更改您的路由表。

我不选择 OpenVPN 的原因之一是,当你配置它以便所有互联网流量都通过它路由时(使用推送“redirect-gateway def1”和推送“dhcp-option DNS xxxx”),它会产生一些麻烦。例如,本地 DHCP 服务器不再可访问,因此你的租约结束时你的连接可能会失败。

此外,还会设置一条特殊路由,将所有流量重定向到您服务器的 IP 地址,以通过 TUNx 设备。这意味着您的服务器不再可通过其原始 IP 访问。通常这没有问题,因为您可以使用 VPN 地址访问它(VPN 服务器在特殊地址上可用),但如果您在其上运行 Web 服务器,则它必须在 DNS A 记录中的 IP 地址上可用,否则虚拟主机将无法工作。

答案3

您需要某种 IP 隧道来保证流量最终到达您的同地服务器,使用 OpenVPN 或类似方式可能会更容易。

如果您的家庭路由器和数据中心之间有路由器(最有可能),只需将家庭路由器上的默认网关设置为数据中心服务器,就会导致家庭路由器无法发送任何流量(因为“下一跳”不会本地连接)。

编辑:

需要某种封装的原因是中间路由器不知道您希望数据包通过您的服务器。通过使用任何隧道封装(IP-in-IP、GRE、功能齐全的 IPSEC VPN、SOCKS 或其他),最外层的数据包将发往您的服务器,然后可以提取封装的帧并继续发送。

您可能需要在您的服务器上对数据包进行 NAT,以确保返回数据包走相同的路由,绕过您的 ISP 的对等连接安排(这里,我假设您对您的同地服务器具有良好的吞吐量)。

通过使用您的服务器作为 Web 代理,可以建立两个 TCP 会话。一个是从您的工作站到您的服务器,另一个是从您的服务器到 Web 服务器。

相关内容