我已经搜索过论坛,但由于网络不是我的专业领域,我不知道这个问题是否已经得到明确的回答,所以我希望这不是重复的。
我目前有一台 TL-WR841N 路由器,它配置了我的 VPN 提供商提供的 WAN 动态 IP 地址。目前,我在路由器中配置的 IP 允许从 Netflix 流式传输。然而,这阻止了 Amazon Prime Video 的运行。
之前,我联系了 TP-Link,询问是否有办法允许某些设备绕过 VPN,转而使用我的真实 IP 地址来访问流媒体内容。具体来说,我想告诉路由器,除了游戏机之外的所有设备都应该通过 VPN 连接。我被告知这是不可能的。所以我做了一些研究,一位朋友提到了有关静态路由的一些信息,我的路由器完全可以做到这一点。
据我所知,静态路由允许目标 IP 地址绕过 VPN,如果是这样的话,它就适合我的情况,因为我只想在激活 VPN 时能够访问所有流媒体。静态路由是我需要的吗?亚马逊发布了他们的 IP 范围列表,但有超过 1000 个。如果静态路由确实是答案,我是否需要为所有已发布的 IP 添加一个案例?或者有更好的方法来实现我的需求?
答案1
TL-WR841 只是一台带有 TP-Link 提供的 UI 的 Linux 计算机。
如果您在其上使用 VPN,它将有两个网络接口(一个用于 VPN,另一个用于 ISP 的 WAN)。Linux 具有路由规则,可以根据目标 IP 地址决定使用哪个接口(即所谓的“静态路由”)。Linux 还有一个称为策略路由您可以根据源地址进行路由。
因此,如果您将路由器配置为通过 DHCP(有时称为“静态 DHCP”)为所有设备分配相同的 IP 地址,则您可以使用 IP 地址来识别设备,并进行相应的路由。
现在的问题是如何设置。如果 TP-Link 说您无法按设备路由,他们可能没有用于策略路由的 UI。如果您有“静态路由”的 UI,您当然可以按目的地路由。
另一种方法是用不同的固件(例如 OpenWRT)重新刷新路由器。你必须小心一点,TL-WR841N 基于非常不同的硬件,具体取决于版本,对于某些类型(主要是较旧的硬件),它可以工作,对于某些类型,它没有。
一旦你拥有了设备的完全访问权限,你就可以配置你想要的一切,包括按源地址进行策略路由。不过,你需要熟悉 Linux 命令行才能做到这一点。
还有其他固件变体,如 DD-WRT(基于 OpenWRT,相同的硬件限制),具有更加用户友好的用户界面。这里是 DD-WRT 的策略路由 wiki 页面。如果我理解正确的话,它确实有一些 UI 支持,但你仍然可能需要为 VPN 编写脚本(但我还没有在 DD-WRT 上这样做过,所以我的理解可能是错误的)。
可以将您的路由器重新刷新到原始 TP-Link 固件(下载或在第一次刷新之前保存它),以便您可以进行实验。
编辑
对于静态路由:我不知道 TP-Link UI 是什么样子的,但一般来说,您需要一个目标 IP 地址集合,例如与 Amazon Prime Video 相关的所有 IP 地址(其中可能涉及多个服务器,并且它们可能使用多个 IP 地址进行负载平衡)。这些可能是单个地址,在这种情况下,您需要一个 /32 或 255.255.255.255 的网络掩码。或者可能是完整的 IP 范围,例如 Amazon 公共 IP 范围,在这种情况下,您可以使用不同的网络掩码将它们分组在一起。
网关(下一跳)将是您要路由的连接的网关,无论是 WAN 还是 VPN。查找接口应该会为您提供网关。建立连接时,WAN 和 VPN 的网关可能会发生变化,因此静态分配网关可能很困难。
答案2
以下文章介绍了使用标准固件实现目标的详细步骤:
如何将 PS3 或 PS4 置于 DMZ。
我总结如下:
为控制台指定一个静态 IP 地址设置 > 网络设置。此地址应在您本地网络的范围内,可能类似于
192.168.0.X
,但请确保它不在 DHCP 地址范围内。以管理员身份登录到您的路由器,然后搜索名为的选项
DMZ
。作为 DMZ 的 IP 地址,请输入您之前为控制台提供的 IP 地址。在控制台上的“网络设置”中,再次选择网络连接测试。
如果成功,您的 NAT 类型可能会显示“2”。
这应该会将您的控制台直接连接到互联网,实际上绕过 VPN。它的成功还取决于您的路由器如何同时处理指定的 VPN 和 DMZ。
欲了解更多详情,请参阅上述文章。
答案3
这是一组无序的答案:
我遇到的问题是它确实允许静态路由。我只是不确定如何正确设置它(例如目标 IP 是什么、子网掩码和网关是什么?)。
在路由中,目标 IP + 掩码(或 IP/前缀长度)定义要到达的目标,是特定地址还是范围。网关定义如何您将到达它,即将数据包传递到的“下一跳”。
您的路由器上将会有一个页面显示所有积极的路由(静态和动态)。其中您将看到 0.0.0.0/0(掩码 0.0.0.0)的路由,也称为“默认”路由,因为它匹配任何地址。这是您的路由器通常用于 Internet 访问的路由,其网关/下一跳将是属于您的 ISP 的某个路由器地址。
启动 VPN 连接将添加更多路由 – 当 VPN 用于互联网访问时,它将添加第二0.0.0.0/0 路由,但这次使用 VPN 服务器的地址作为网关(或者根本没有地址,只有一个接口名称)。
如果同一个数据包与多条路由匹配,则前缀最长(或网络掩码中“1”位最多)的路由将具有最高优先级。(例如,掩码=255.255.255.0 的路由将优先于掩码=0.0.0.0 的路由。)如果有多条路由具有相同的目标+掩码,则使用“metric”参数设置优先级。
因此,当 VPN 处于活动状态时,您有两个针对 0.0.0.0/0 的“默认”路由,但 VPN 路由具有更高的优先级(更低的度量),因此所有 Internet 访问都将通过 VPN。要针对特定目的地覆盖它,您需要添加一条针对该目的地的新路由,并从 ISP 的主要默认路由复制网关参数。
具体来说,我想告诉路由器,除游戏机外,我的所有设备都应通过 VPN 连接。但我被告知这是不可能的。
使用常规 IPv4 路由确实是不可能的。
(尽管在 Linux 上将会使用常规 IPv6 路由可以实现这一点,因为 IPv6 路由不仅可以匹配目标,还可以匹配源。遗憾的是 IPv4 尚未实现此功能,而且无论如何您都不会在 TP-Link 的配置屏幕中找到它。)
不过,@dirkt 提到的“策略路由”功能是可以实现的。策略路由会插入一个额外的步骤前常规路由——它允许您创建几个独立的路由表并定义何时使用哪个表的规则。
例如,你可以定义来自游戏机的数据包将使用表 1(其中包含常规 ISP 的默认路由),而来自其他设备的数据包将使用表 2(其中包含 VPN 的默认路由)。
亚马逊发布了其 IP 范围列表,但其数量超过 1000 个。如果静态路由确实是答案,我是否需要为所有已发布的 IP 添加一个案例?
是的,使用标准路线,您需要列出所有目的地。
策略路由改变了这种情况,因为它允许设备根据其他参数(例如源地址或正在使用的协议/端口)做出路由决策。