![如何通过给定的网络连接引导特定流量?](https://linux22.com/image/1502884/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E7%BB%99%E5%AE%9A%E7%9A%84%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E5%BC%95%E5%AF%BC%E7%89%B9%E5%AE%9A%E6%B5%81%E9%87%8F%EF%BC%9F.png)
希望我的表述正确且恰当!
使用 Windows 7 Pro SP1
在我的笔记本电脑上,我必须同时使用有线和无线连接 - 某些流量(例如访问特定系统)我只能通过有线连接访问 - 而其他流量只能通过无线连接访问。
两者都是公司现场连接 - 只是连接不太紧密。
目前,我必须全天在它们之间切换 - 如果我同时打开它们,则窗口会尝试使用哪个连接(但通常是有线的)是碰运气的,所以我会拔掉/禁用我不想要的那个,然后在需要时改回来。
有没有更好的方法将特定的应用程序/协议引导至特定的连接?
或者,如果这不可能的话,是否可以重定向特定的 URL(这至少可以减少切换的频率!)
编辑添加 IPCONFIG 信息 - 显示两个连接使用相同的子网
Wireless LAN adapter Wireless Network Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::f1ff:5ffe:6093:ebf%13
IPv4 Address. . . . . . . . . . . : 10.240.54.12
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.240.54.254
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : domain.local
Link-local IPv6 Address . . . . . : fe80::9088:177:1936:10ac%11
IPv4 Address. . . . . . . . . . . : 172.31.161.83
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.31.161.1
答案1
Windows 7 网卡优先级配置
所有现代 Windows 版本都提供了使用有点令人困惑的名称对网络接口进行优先级排序的功能Network Interface Metric
。对于大多数家庭/简单网络,当没有其他标准明确强制该决定时,此设置将最终决定使用哪个 NIC;基本上当两个 NIC 从网络堆栈角度看起来同样可行时,例如当目标在两个 NIC 上都可用时,两个 NIC 都具有有效的配置默认网关,两个 NIC 都在同一子网中,等等。
接口度量
接口度量设置为“1”时优先级最高(首先使用 NIC)。Windows 默认提供的自动设置大致基于连接速度;目的是优先考虑速度较高的链路,而不是速度较低的链路。这是一种不完美的处理 WiFi 和有线以太网之间性能差异的方法,因为 WiFi 网络上的吞吐量有时可能非常好,但几乎总是不太可靠和一致。
换句话说,正如您所注意到的,在几乎所有情况下,有线 LAN 连接都应优先于 wifi,并且默认情况下(至少在 Win7 中),情况并非如此。
避免复杂的配置,至少在最初
您可以调整这些设置,以设置非常精细的控制,以确定哪个 NIC 用于哪些流量,但我认为这超出了您想要的范围。您可以这样配置,例如,如果应该使用通常不具有优先级的 NIC 访问某个服务器/网站/IP 地址范围,并且两个 NIC 都可以访问该主机/IP 范围。进行最小更改,评估结果,并在必要时再次进行其他微小更改。如果如上所述,路由是通过接口硬设置的,那么当只有两个 NIC 中的一个可用时,您几乎肯定会遇到问题。
相关配置设置
此外,您还可以调整相关参数“网关度量”,当 2 个或多个 NIC 具有相同网关时,该参数会确定使用哪个 NIC 的优先级。有证据表明,在某些情况下,更改接口度量是不够的,还必须配置网关度量。如果在更改接口度量后没有看到任何变化,请查看下面的步骤 3 以及底部的链接,了解有关更改网关度量的详细信息(相同的命令,不同的参数)。
首先评估的是接口度量,因此您不必深入研究该设置,但如果需要,可以使用它。澄清一下上面的评论 - 使用我描述的方法,您不需要从任何接口更改/删除网关;这在最好的情况下会迫使您使用静态 IP,在最坏的情况下会在有线 LAN 不可用时导致连接问题。
如何修改网络接口指标设置
- 打开管理员命令提示符,然后输入以下命令:
netstat -rn
或者获取更多详细信息netsh int ip show config
这将输出系统中所有 NIC 的列表。最左侧列(netstat)中的数字是 NIC 接口指标(又称优先级)。
您希望将有线 NIC 的度量值设置为低于无线 NIC。一旦您看到这些值的设置,请将有线 NIC 配置为非常低的数字(例如 2),将 wifi 配置为高(例如 64)。应用这些设置的语法如下。我对这两个 NIC 使用的名称为“有线”和“Wifi”;请使用系统中的正确值(步骤 1 的输出将包含正确的名称)。
set interface "Wired" metric=2
set interface "Wifi" metric=64
如果发现确实需要修改网关指标,则语法为:
set interface "Wired" gwmetric=2
set interface "Wifi" gwmetric=64
注意 - 我选择的度量值是任意的。如果您只有两个 NIC,那么将卡设置为度量 2 和 3 与度量 2 和 64 之间(理论上)没有区别。通常,环回接口设置为度量 1;如果是这样,请不要将任何一个“真实”NIC 设置为 1 - 在某些情况下,这会导致本地流量被发送到路由器(一个简单的例子是通过您的 LAN IP 地址 ping 自己 - 通常会路由到环回接口 - 您可能会无意中更改它)。在 ping 的情况下,它几乎是无所谓的,但许多应用程序使用与 LAN IP 地址绑定的本地网络套接字,目的是让流量实际上永远不会离开 PC,在这种情况下,性能下降将是不小的。
更多信息:
以下是有关该主题的几个链接;这个显示如何使用 GUI 调整这些设置,以及这个提供了偶尔需要修改接口和网关指标的轶事证据。我以前不需要调整网关指标设置,但我在谷歌搜索的几分钟内多次遇到过这个主题,所以我想确保这个答案涵盖了它。
评估设置更改的有效性:
- 查看正在使用哪个 NIC 的一个简单方法是使用 traceroute 命令并查看它从哪个 NIC 发出(目标本地 LAN 主机以及各种互联网主机,以确保 LAN 和 WAN 之间的 NIC 使用分布一致)。
- 根据您想要深入研究的深度,获取有关 NIC 使用情况的真实统计信息的理想方法是使用数据包捕获程序,例如 wireshark。
- 最简单的方法是查看每个网络接口状态的数据包传输数量,并查看两个网卡之间的相对速率。
如果情况真的很糟糕,动态调整指标设置
在最坏的情况下,如果连接质量确实在一天中从有线变为无线并再次变为有线,那么编写一个小脚本来根据当前网络性能调整 NIC 指标值并不困难。简而言之,您可以编写一个 powershell 脚本或批处理文件,对您的网络连接进行快速测试,评估每个 NIC 的结果,并让脚本更改指标值以优先考虑当前性能“最佳”的 NIC。我不确定连接有多糟糕 - 如果连接太糟糕以至于丢包,您可以使用简单的 ping 测试来测试 NIC。否则,您可能需要进行下载速度和延迟测试(例如 speedtest.net)。
更新
我有点误解了你的问题。
如果您能提供您需要做什么的具体信息,我可以为您提供有关如何做的详细信息。
如果您需要帮助,请尝试提供尽可能多的细节,因为这里有很多可能性,而这些问题旨在深入到最简单的方法。
如果可以在 IP 地址级别处理这个问题(即到给定 IP 地址的所有流量都应通过特定接口传出),那么这将很容易实现。如果它依赖于协议/应用程序/端口和/或主机,那么它就会更加复杂。
其他问题:
- 我们可以在 IP 地址级别进行过滤吗?还是它是特定于应用程序的?
需要使用特定接口的 IP 地址或 IP 地址范围是什么。如果标准(问题 1)不是 IP 地址,则提供需要使用特定接口的应用程序的详细信息。
问题是,如果“选择”了错误的接口,通信是否会完全失败?这是否意味着无法通过该接口访问远程主机?还是使用错误的接口只会降低性能?
请运行以下 2 个快速测试,以便我们了解局域网背后的路由配置。我不清楚这些网络之间是否存在路由,因此这将检查这一点。
a. 首先确定有线以太网接口的默认网关是什么(您的示例中没有)。为了保持一致性,如果您同时拥有 ipv4 和 ipv6,请使用 IPv4 网关。
b. 断开有线以太网接口(只留下 wifi),并尝试 ping 有线以太网接口默认网关。会发生什么?
c. 现在重新连接有线以太网并断开 wifi 适配器。
d. ping wifi 接口的默认网关(在您的问题中为 10.240.54.254),然后让我知道发生了什么。
解决这个问题可能就像添加静态路由(单个命令)一样简单,但我会根据您的回复提供详细信息。