Windows

將 Windows Server 2003 上的埠轉發到 virtualbox 機器

  • September 24, 2017

我想將一些埠(特別是 TCP 22、UDP 1194、TCP 80、TCP 443)從 Windows Server 2003 轉發到在同一台機器上的 VirtualBox 內執行的 Linux VM。有沒有簡單可靠的方法來做到這一點?目前,VM 位於與伺服器的橋接網路上,並且應該可以在所有其他埠上從外部 (LAN) 訪問。

自己找到了解決方案:

在 Virtualbox 中將網路設置更改為 NAT,並使用內置功能將任意埠通過隧道連接到 VM。這有一個缺點,即 VM 無法記錄任何 IP(因為 NAT 會阻止),並且指定的埠以外的埠不再可用,但是您可以根據需要指定任意數量,這對我來說不是一個炫耀。

在我看來,這不是一個真正的解決方案。您指的是橋接網路以及如何在 Windows 託管電腦上執行此操作。

您的答案不是在 Windows 託管機器上使用橋接,而是使用 NAT。

在我看來,這就像有人問如何更換梅賽德斯的電池並回答:使用大眾。

所以回到 Windows 主機上的橋接網路虛擬機。

Windows 不會將數據包轉發到虛擬適配器。因此,當您的 Windows 機器使用 192.168.1.2 並且您的虛擬機在 192.168.1.3 上橋接時,從您將數據包轉發到 192.168.1.2 或 192.168.1.3 的路由器的角度來看,這一切最終都出現在使用的 NIC 上在你的窗戶旁邊,因此是 192.168.1.2。由於 LAN 內部使用了一些較低層的協議,這不適用於 LAN 內部!虛擬 LAN 適配器實際上會看到您前往 192.168.1.3 的 LAN 機器,而路由器轉發的數據包則看不到。因此,路由器上到 192.168.1.2 或 192.168.1.3 的埠轉發將始終到達 192.168.1.2,但在 LAN 內部,有一些較低級別的分層數據包視窗知道它不是針對 192.168.1.2,而是針對 192.168.1.3。

這是windows的限制,以及windows數據包的處理方式與區域網路的處理方式不同,與缺少此資訊的internet數據包相比,數據包具有更多的低層數據windows需要知道它不是用於主NIC,而是用於橋接虛擬.

阻止數據包到達視窗或允許(防火牆)不會改變這個問題!這只是主機作業系統在您的虛擬適配器可以處理數據包之前首先處理數據包的方式(因此在這種情況下永遠不會)這必須在防火牆規則被實際命中之前很久就確定。

但是有一個解決方案,您仍然可以將您的 VM 與您的 Windows 主機橋接,在您的網路中使用橋接網路的可能性和較低層的網路協議,並且仍然告訴 Windows 特定埠上的數據包是用於 VM 而不是 Windows NIC!

為此,您可以使用:netsh interface portproxy add v4tov4 listenport=80 connectport=80 connectaddress=192.168.1.3

現在,埠 80 到 192.168.1.2 或 192.168.1.3 的所有傳入數據包都仍然在您的主機作業系統 (Windows) 中傳入,但 Windows 現在將它們轉發到位於 192.168.1.3 的 VM

這就是您設置橋接網路的方式,它具有實際成為主機所連接的 LAN 的一部分的所有好處,並且仍然可以獲得正確的數據包以到達您希望它們到達的位置的 VM。

希望這能解釋一下如何設置它。為什麼 Windows 處理來自與 LAN 內部不同的外部路由器轉發數據包的數據包的具體解釋當然沒有解釋,但我認為這與您的問題無關。您詢問如何在橋接環境中完成此操作。

祝你好運。上述解決方案已經過測試並證明有效。

引用自:https://serverfault.com/questions/446367