我有几台 Windows 10 机器,分别配有 (A) 1Gbs 和 (B) 40Gbs 网卡。这些网卡位于不同的网络上,但都提供到同一路由器的路径。
路由器有 4 个网络,WAN、(C)、(A) 和 (B) 以上。A、B 和 C 之间可以进行路由。(A) 配置了网关。
从第三个(C)网络开始,我无法与(A)1Gb 网络通信,就像数据包首先被正确路由,然后通过更快的(B)网络路由,这会使 Windows 10 操作系统感到困惑,当它从未连接的地址获得响应时,这些响应会被丢弃,通信就会挂起。
值得注意的是,尽管对话始于 (A),但 (A) + (B) 网络上的机器仍选择通过 (B) 将路由切换回 (C)。
要明确的是:
- 这不是路由问题,所有东西都可以 ping 所有东西
- 这不是连接问题,例如 - 从 (C) 我可以通过 RDP 进入 (A) 和 (B),但是 - 只有到 (B) 的连接是稳定的。 (A) 连接,但在几帧(数据包?)之后它就挂起了。
- CIFS 文件复制没有问题,但 Windows 再次将通过最快的路由路由复制 - 它的设计就是为了处理这个问题...
- Windows Server 似乎需要多宿主,但其行为并非如此,只有 Windows 10 计算机才如此
因此,RDP——这里代表一个不期望路由切换的包,不会处理这个问题。
必须有一个配置开关,让机器不切换接口。我不在乎是否在 CIFS 上失去性能,如果我需要速度并且路由可用,我将以 (B) 网络为目标。
我怎样才能解决这个问题?
答案1
我的猜测是正确的,我想 35 年来辛苦挣来的每周 50-60 小时的技术工作时间对猜测是有影响的。
RDP 服务器(登录的主机)将尝试通过所有接口(UDP 和 TCP)将数据包发送回客户端,以检测最快的路由。在某个时间点,A+B 网络上的其中一台机器始终会做出决定,让 B 接听来自 A 的呼叫。
我知道 TCP 本身不支持这一点,但事实上,RDP(协议)支持这一点。
因此,解决方案是:
在客户端上:打开 gpedit -> 计算机配置 -> 管理模板\ Windows 组件 \ 远程桌面服务\ 远程桌面连接客户端和 关闭客户端上的 UDP
在服务器 / 主机上(就我而言,在所有 4 个无头 Windows 10“服务器”上)打开 gpedit -> 计算机配置 -> 管理模板\ Windows 组件 \ 远程桌面服务\ 远程桌面会话主机 \ 连接和
- 在服务器上选择网络检测 ->启用并关闭连接时间检测和连续网络检测
- 选择 RDP 传输协议 ->已启用并仅使用 TCP
现在,我不必担心服务器在对话过程中尝试选择 40Gb 网络(无论如何都是用于 kubernettes)上的路径。
我发现 1803 偶尔会出现问题,而 1809 根本无法工作。
我使用来自其中一台无头机器的 RDP 连接编写了这个“答案”。
现在非常有效......