有没有办法在 Windows Azure 中创建没有公共 IP 地址的虚拟机?即使您在虚拟网络中创建 VM,我们也无法控制 Azure 分配的公共 IP。有什么方法可以禁用或删除 Azure 分配的公共 IP?
4 回答
不会。VM 将始终具有公共 IP 地址。但是您不能分配任何端点(在没有定义任何端点的情况下离开虚拟机) - 这将在您的虚拟机到达内部数据中心网络之前有效地阻止所有和任何互联网流量。
总会有一个公共 IP 地址分配给任何部署了某些东西的云服务。是否允许 Internet 流量到您的 VM 由您决定。这个决定是通过定义端点做出的。
编辑
使用 Azure 资源管理器,您可以创建没有公共 IP 的 VM。您可以在网络适配器上控制此设置。在 Azure 资源管理器的网络适配器的 IP 配置中,您必须为公共 IP 地址设置指定 NONE。
从 2016 年 11 月 29 日起,这是不正确的。您现在可以在预配阶段通过 Azure 门户选择将公共 IP 地址设置为 NONE。这将只允许在 VM 所在的虚拟网络内进行通信。
使用资源组方法,您可以将公共 ip 分配为无。
它仍然有一个网络接口,可用于在虚拟网络中访问它。
我通过 Twitter 上的帖子偶然发现了这个问题,发现最近没有完整的答案。
现在可以在没有公共 IP 地址的情况下在 Azure 中创建虚拟机。查看下面的示例。它将创建一个 VM、一个 NIC 和一个将在其中创建 VM 的 VNet。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"my-super-secure-password": {
"type": "securestring"
}
},
"variables": {
},
"resources": [
{
"apiVersion": "2018-10-01",
"dependsOn": [
"my-project-prefix-nic"
],
"location": "westeurope",
"name": "my-project-prefix",
"properties": {
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": false
}
},
"hardwareProfile": {
"vmSize": "Standard_D8ds_v4"
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces','my-project-prefix-nic')]"
}
]
},
"osProfile": {
"adminPassword": "[parameters('my-super-secure-password')]",
"adminUsername": "jan",
"computerName": "my-project-prefix"
},
"storageProfile": {
"dataDisks": [
{
"createOption": "Empty",
"diskSizeGB": 512,
"lun": 0,
"managedDisk": {
"storageAccountType": "StandardSSD_LRS"
},
"name": "my-project-prefix-datadisk-0"
}
],
"imageReference": {
"publisher": "MicrosoftWindowsDesktop",
"offer": "Windows-10",
"sku": "20h1-pro-g2",
"version": "latest"
},
"osDisk": {
"createOption": "FromImage",
"diskSizeGB": 256,
"managedDisk": {
"storageAccountType": "StandardSSD_LRS"
},
"name": "my-project-prefix-osdisk"
}
}
},
"type": "Microsoft.Compute/virtualMachines"
},
{
"apiVersion": "2018-11-01",
"dependsOn": [
"my-project-prefix-vnet"
],
"location": "westeurope",
"name": "my-project-prefix-nic",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', 'my-project-prefix-vnet', 'my-project-prefix-subnet')]"
}
}
}
]
},
"type": "Microsoft.Network/networkInterfaces"
},
{
"apiVersion": "2018-11-01",
"location": "westeurope",
"name": "my-project-prefix-vnet",
"properties": {
"addressSpace": {
"addressPrefixes": [
"10.0.0.0/16"
]
},
"subnets": [
{
"name": "my-project-prefix-subnet",
"properties": {
"addressPrefix": "10.0.0.0/24",
"delegations": []
}
}
]
},
"type": "Microsoft.Network/virtualNetworks"
}
]
}
如您所见,我在创建 VM 时省略了该publicIPAddress
属性。看到它不是强制属性,它仍然是有效资源。