我的两台服务器无法通信(以一种奇怪的方式),我遇到了问题。
服务器都是 Microsoft Hyper-V Server 2012(没有 GUI 的服务器)。
名称:HVS1
Ip 地址:10.0.0.11
托管名为 servidor 的 VM
名称:HVS2
Ip 地址:10.0.0.12托管
名为 WMS-1 的 VM
每个都在从另一个复制虚拟机,直到大约一个月前,这一直运行良好。
我在这里对这个问题的测试都具有以下特征:
两个防火墙都被禁用(带有
netsh advfirewall set allprofiles state off
)所以我知道这些不是防火墙问题。我总是按 IP 地址 ping(虽然我
hosts
在每台服务器上都有他们名字的条目,所以这不是 DNS 问题)我总是在两个方向上ping,所以要么都工作,要么都不工作。我没有任何 ping 仅以一种方式工作的情况。
所有主机都配置为响应 Ping。
一切都是 IP v4
我尝试过的事情:
我无法在 10.0.0.11 和 10.0.0.12 之间 ping 通。这是我试图解决的基本问题,正如我所期望的那样,如果我可以让这个连接正常工作,我的其他问题就会消失。
我可以从他们的虚拟机 ping 到主机并返回。所以,
servidor
可以ping HVS1。我尝试了不同的硬件开关,但没有任何区别。
更高级别的服务也不起作用:Hyper-V 管理器无法在两台主机之间连接,给出 RPC 错误(RPC 服务正在运行)。
进入 HVS1 的 RDP 可以工作,只要它不是来自 HVS2,但它非常慢,经常出现 10 秒的延迟。我没有注意到服务器中其他任何缓慢的地方。
从我的笔记本电脑 ping 到 HVS2 工作正常。
从我的笔记本电脑 Ping 到 HVS1 会造成 77% 的损失。大量数据包超时。这解释了 RDP 滞后。HVS1 上的 NIC 或电缆出现故障,我听说您认为?但...
从我的笔记本电脑 ping
servidor
可以完美运行。请注意,这是 HVS1 主机上的 VM,因此它通过与上述相同的 NIC 和电缆...所以???从 HVS2 到 HVS1 的 Ping 是 100% 丢失。反方向也一样。
ping from
servidor
towms-1
工作正常。因此,从一台主机到另一台主机的虚拟机可以 ping,但主机不能。
那么,有人可以向我解释一下连接如何在相同的物理连接上工作,在某些情况下完美,在其他情况下不完美,而在其他情况下则完全不?
以及我接下来可以尝试的任何建议?谢谢!
更新- 评论中要求的一些额外细节:
C:\>netsh int tcp show global Querying active state...
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Chimney Offload State : disabled
NetDMA State : disabled
Direct Cache Access (DCA) : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : none
ECN Capability : enabled
RFC 1323 Timestamps : disabled
Initial RTO : 3000
Receive Segment Coalescing State : enabled
查看我的适配器,我发现了一些我没有预料到的东西 - 出于某种原因,那里的适配器似乎有了一个新名称,Ethernet 4
. 我不记得这个编号了,听起来好像是 Windows 自己重新做了一些事情并给出了一个新的编号。
PS C:\> Get-NetAdapter
Name InterfaceDescription ifIndex Status
---- -------------------- ------- ------
Ethernet 4 Realtek PCI GBE Family Controller 21 Up
vEthernet (External) Hyper-V Virtual Ethernet Adapter #2 23 Up
更改为这个“新”适配器可能会导致 LSO 的不同行为:
PS C:\> Get-NetAdapterLso
Name Version V1IPv4Enabled IPv4Enabled IPv6Enabled
---- ------- ------------- ----------- -----------
Ethernet 4 LSO Version 1 True False False
vEthernet (External) LSO Version 2 False True True
司机信息:
PS C:\> Get-NetAdapter -Physical | fl
Name : Ethernet 4
InterfaceDescription : Realtek PCI GBE Family Controller
InterfaceIndex : 21
MacAddress : 00-14-D1-1D-57-11
MediaType : 802.3
PhysicalMediaType : 802.3
InterfaceOperationalStatus : Up
AdminStatus : Up
LinkSpeed(Gbps) : 1
MediaConnectionState : Connected
ConnectorPresent : True
DriverInformation : Driver Date 2011-10-20 Version 8.1.1020.2011 NDIS 6.30
我尝试为两个适配器完全禁用 Lso,但问题似乎仍然存在:-(
更新 2:我注意到我有一个备用 NIC,与已有的完全相同,并尝试交换它。问题仍然存在。我怀疑 Hyper-V 网络堆栈以某种方式损坏......
回答我自己的问题...
在根据收到的有用意见进行进一步诊断并尝试使用新的 NIC 后,我排除了硬件原因。
对 Hyper-V 网络的一些研究让我注意到 Hyper-V 不直接将主机连接到网络,而是通过虚拟化网络堆栈转移它。所以上面描述的神秘行为并不那么神秘,它们与我的管理主机虚拟适配器中的问题一致。
这可以通过 HVS1 上的适配器列表看到:
问题在于
External_InternalPort
由 Hyper-V 自动创建并IsManagementOS
设置为true
的那个,当我勾选该复选框说该适配器可以由主机操作系统共享时。将此与 HVS2 中的列表进行比较:
所以我的问题原来是那个重复的 MAC 地址
00155DC08706
!请注意,其他一些副本没有问题,因为其中一些是 VM 在它们之间进行的复制。但是使用 ManagementOS 适配器的副本是有问题的(顺便说一句,我不知道它是怎么来的......)。我现在认识到这
Ubuntu Desktop
台机器是在我的问题开始时创建的,我只是从未关联过这些事件。自动关闭这台机器让我的服务器的连接再次正常运行。
我现在需要做的进一步工作:
感谢您收到的帮助。