
我有一個 Windows Server 2022,其中有一個在 Hyper-V 上執行的虛擬機器。 VM 是 Ubuntu Linux 機器。我可以 ping 通本地網路上的所有電腦。以及上網。但我似乎無法使用 ping 或 http 存取主機。我確信這不是防火牆問題,因為即使完全關閉防火牆後它也不起作用。嘗試了我在網上看到的所有內容,但似乎無法弄清楚這一點。
還要添加。我已經可以從網路上的主機和其他電腦存取虛擬機器。 Ping 或 HTTP 類似
答案1
當您設定虛擬交換器時,您是否選擇了“私人的" 選項?這可能可以解釋為什麼您無法從主機與虛擬機器進行通訊。
如果是這種情況,您需要選擇“內部的“ 選項。
如果需要,您可以在此處找到更多資訊。
如果這不是問題,我會在檢查您的 NAT 配置等之前確認「整合服務」已啟用。
https://learn.microsoft.com/en-us/answers/questions/470494/hyper-v-server-is-not-pinging
答案2
在這種情況下,我會檢查防火牆,以確保兩端都允許 ICMP。
透過 Ubuntu 防火牆 (UFW) 允許 ICMP/PING: https://www.kelvinism.com/2010/09/enable-icmp-through-ufw_461.html?m=1
透過 Windows 防火牆允許 ICMP/PING: https://www.wintips.org/how-to-allow-ping-in-windows-firewall/
答案3
當然,能夠從 Windows Server 2022 Hyper-V 主機上執行的 Ubuntu Linux VM ping 並存取本機網路和網際網路上的資源的情況是有希望的。但是,嘗試使用 ping 和 HTTP 存取主機時遇到問題需要進行一些調查。有幾個因素可能會導致這種情況,以下是一個程式碼片段,可幫助您排除故障並找出問題:
import subprocess
def ping_host(host):
"""Pings the host and returns True if the host is reachable, False otherwise."""
ping_command = ["ping", "-c", "1", host]
ping_process = subprocess.Popen(ping_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
ping_output, ping_error = ping_process.communicate()
ping_process wait()
if ping_process.returncode == 0:
return True
else:
return False
if __name__ == "__main__":
host = "192.168.1.100" # Replace this with the IP address of your host
if ping_host(host):
print("The host is reachable.")
else:
print("The host is not reachable.")
此 Python 腳本可讓您透過 ping 主機的 IP 位址來檢查主機的可及性。將此腳本儲存為“ping_host.py”,並使用命令 python ping_host.py 在 Ubuntu Linux VM 上執行它,您可以確定主機是否可存取。如果成功,將顯示訊息「主機可存取」。如果沒有,則會顯示「無法存取主機」。
雖然程式碼有助於評估主機的可訪問性,但有幾個潛在的原因可能可以解釋該問題。其中包括網路介面卡配置錯誤、IP 設定不正確、防火牆規則甚至 Hyper-V 網路異常。要解決這些問題,請確保虛擬機器的網路適配器設定允許與管理作業系統共用。驗證虛擬機器的 IP 配置是否與主機的子網路相符。檢查主機的防火牆規則,確保其允許來自虛擬機器的 ICMP (ping) 和 HTTP 流量。
如果您已涵蓋所有這些方面,但問題仍然存在,請考慮重新啟動 Hyper-V 服務和虛擬機器。此外,建議保持虛擬機器上的 Hyper-V 整合服務更新並停用 IPv6 作為額外措施。