Linux

Azure RM NSG 埠轉發不起作用

  • January 14, 2017

我有一個需要遷移到 Azure 的 Debian 6.x 機器。在移動它之前,我確實確保 SSH 正在偵聽任何埠,Apache 也是如此。我的 NSG 已打開所有正確的埠(目前為 22、443)。我上傳了 VHD,然後使用以下 PowerShell 命令基於 VHD 創建 VM:

$vnet = get-AzureRmVirtualNetwork -Name $VnetName -ResourceGroupName $VnetRG
$subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name "$SubnetName" -VirtualNetwork $vnet
$pip = Get-AzureRmPublicIpAddress -Name "$pipName" -ResourceGroupName $resourceGroupName
$NSG = Get-AzureRmNetworkSecurityGroup -Name "$NSGName" -ResourceGroupName $resourceGroupName
$nic = New-AzureRmNetworkInterface -ResourceGroupName $resourceGroupName -Name $nicName -Subnet $subnet -Location $location -PrivateIpAddress $newVMIP -DnsServer $dnsServer1,$dnsServer2 -PublicIpAddress $pip -NetworkSecurityGroup $NSG
$newVM = New-AzureRmVMConfig -VMName $newVMName -VMSize $newVMSize | Add-AzureRmVMNetworkInterface -Id $nic.Id | Set-AzureRmVMOSDisk -VhdUri $vhdPath -Name $diskname -CreateOption attach -Linux -Caching ReadWrite
New-AzureRMVM -ResourceGroupName $resourceGroupName -Location $location -VM $newVM -DisableBginfoExtension

我可以看到機器正在執行,因為我可以在啟動診斷中查看自動登錄的桌面。但是,當我嘗試 SSH 或嘗試通過 22 和 443 訪問網站時,它沒有返回任何響應。Telnet 超時,就像埠根本沒有轉發一樣。

我知道因為它是 Debian 6.x,所以不支持 waagent。但是我不應該需要 waagent 進行埠轉發,不是嗎?根據我對網路的了解以及我在 MSDN 論壇中看到的情況,“埠轉發對您的終端機器應該是不可見的。當公眾訪問公共埠並且您的虛擬機在內部埠上接收時。” (https://social.msdn.microsoft.com/Forums/en-US/bd93f5cb-a674-4b9c-aa5a-9f6e7b364f2c/port-forwarding-still-broken?forum=WAVirtualMachinesforWindows)

我是否在我的 PowerShell 腳本中輸入錯誤或遺漏了某些內容?有任何想法嗎?

我嘗試刪除並重新創建 VM,並嘗試重新上傳 VHD 文件。我確實必須將它從 VHDX 轉換為 VHD,但這並不重要,因為它實際上正在啟動並且我在啟動診斷中看到了螢幕。

我使用的 NSG 確實適用於通過門戶或 PowerShell 新建的任何其他機器,但不是這台上傳的機器,這讓我覺得我在腳本中弄錯了一些東西。一切都表明它對埠 22 和 443 是開放的。這是有效安全規則刀片的螢幕截圖: 規則螢幕截圖

本地機器上的 iptables 是空的,如螢幕抓取所示。

奇怪的是,我也無法從同一虛擬網路上的另一台機器上通過 SSH 連接到它。我嘗試通過 https 的步驟://docs.microsoft.com/en-us/azure/virtual-machines/virtual-machines-linux-debian-create-upload-vhd?toc=%2Fazure%2Fvirtual-machines% 2Flinux%2Ftoc.json,但由於它是 Debian 6,因此不會安裝 waagent。但同樣,我不應該需要機器上的代理來進行埠轉發。沒有其他虛擬化技術需要 NAT 代理才能工作。

編輯- 這被建議作為 StackOverflow 的副本。我最初在那裡問了這個問題,但每個人都建議我在這裡發布我的問題。所以我這樣做了,將 StackOverflow 的答案標記為答案。

Debian 6 無法在 Azure 中執行。您必須在 Hyper-V 中使用“舊版網路適配器”,而這在 Azure 中不起作用。或者,您必須重新編譯核心以支持 NIC 的 Hyper-V 驅動程序,這也不推薦。看起來我必須嘗試將數據遷移到新伺服器。

根據您的描述,請確保虛擬機中沒有防火牆阻止您訪問您的虛擬機。此外,您可以檢查是否有與 Vnet 的子網關聯的 NGS 規則。

注意: NSG 可以關聯到 VM 和子網。

有關如何管理 NSG 的更多資訊,請參閱本文

此外,您可以將準備好的 VHD 作為連結進行檢查。

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