Hyper-V 託管不一致的網路連接
我的兩台伺服器無法通信(以一種奇怪的方式),我遇到了問題。
伺服器都是 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 上的適配器列表看到:
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 地址池配置,以避免將來發生事故
感謝您收到的幫助。