我遇到了问题,我的两台服务器无法通信(以一种奇怪的方式)。
服务器都是 Microsoft Hyper-V Server 2012(没有 GUI 的)。
姓名:高压交流电压1
IP 地址:10.0.0.11
托管一个名为 servidor 的虚拟机
姓名:高压交流电压
IP 地址:10.0.0.12
托管名为 WMS-1 的虚拟机
每个虚拟机都复制其他虚拟机,直到大约一个月前,一切都运行正常。
我针对这个问题做的测试都具有以下特点:
两个都防火墙已禁用(带有
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 服务正在运行)。
只要不是来自 HVS2,RDP 进入 HVS1 就可以正常工作,但速度非常慢,经常出现 10 秒的延迟。我没有注意到服务器中还有其他地方速度很慢。
从我的笔记本电脑 ping 到 HVS2 正常。
从我的笔记本电脑 ping 到 HVS1 时,丢失率为 77%。大量数据包超时。这解释了 RDP 延迟的原因。我听说您认为是 HVS1 上的 NIC 或电缆故障?但是...
从我的笔记本电脑 ping 到
servidor
运行正常。请注意,这是 HVS1 主机上的虚拟机,因此它通过与上面相同的 NIC 和电缆... 那么???从 HVS2 到 HVS1 的 Ping 为 100% 丢失。反方向也是一样。
servidor
从 到的Pingwms-1
工作正常。因此,从一个主机到另一个主机的 VM 可以 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:我注意到我有一个备用网卡,与已有的网卡完全相同,并尝试将其交换。问题仍然存在。我怀疑 Hyper-V 网络堆栈不知何故损坏了...
答案1
回答我自己的问题...
根据收到的有用评论进行进一步诊断并尝试使用新的 NIC 后,我排除了硬件原因。
对 Hyper-V 网络进行一些研究后,我发现 Hyper-V 并不直接将主机连接到网络,而是通过虚拟化网络堆栈进行转移。因此,上述神秘行为并不那么神秘,它们与我的管理主机虚拟适配器中的问题一致。
这可以通过 HVS1 上的适配器列表看到:
PS C:\Users\Administrator> Get-VMNetworkAdapter -all
Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses
---- -------------- ------ ---------- ---------- ------ -----------
External_InternalPort True External 00155DC08706 {Ok}
Network Adapter False servidor External 00155DC08705 {Ok} {10.0.0.10, fe80::a40d:a9b3:6a6c,...
Network Adapter False vm-linux2 External 00155DC08708 {}
Network Adapter False Win7Eval External 00155DC08709 {}
Network Adapter False wms-1 External 00155DC08707 {}
问题出在External_InternalPort
由 Hyper-V 自动创建并IsManagementOS
设置为 的那个适配器上true
,当我勾选该复选框表示该适配器可以由主机操作系统共享时。
将其与 HVS2 中的列表进行比较:
PS C:\Windows\system32> Get-VMNetworkAdapter -all
Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses
---- -------------- ------ ---------- ---------- ------ -----------
External_InternalPort True External 50465DB2CA1C {Ok}
Network Adapter False servidor External 00155DC08705 {}
Network Adapter False SuiteCRM External 00155DC08705 {}
Network Adapter False Ubuntu Desktop External 00155DC08706 {Ok} {}
Network Adapter False vm-linux2 External 00155DC08708 {}
Network Adapter False wms-1 External 00155DC08707 {Ok} {10.0.0.21, fe80::d920:9f00:59de:...
所以我的问题就是 MAC 地址重复00155DC08706
!
请注意,其他一些重复项没有问题,因为其中几个是 VM 在它们之间进行复制。但 ManagementOS 适配器的重复项是有问题的(顺便说一句,我不知道它是怎么产生的......)。我现在认识到这台Ubuntu Desktop
机器是在我出现问题的时候创建的,我只是从来没有将这些事件联系起来。
自动关闭这台机器后,我的服务器的连接性就会恢复正常。
我现在需要做的进一步工作:
- 修复重复的 MAC 地址
- 区分两台服务器上的 MAC 地址池配置,以避免将来发生事故
謝謝收到的幫助。