微软的Azure平台已经支持Instance Level Public IP功能。当有复杂协议的情况下,需要开启多个端口的情况下,可以考虑开启PIP功能。
先介绍几个概念:
- VIP – virtual IP address 虚拟机的公网IP
- DIP – dynamic IP address 虚拟机的内网IP
- PIP – instance-level public IP address 虚拟机及的公网IP
对于创建的VM,都会被分配一个内网的DIP地址,同时多个VM会共享一个Cloud Service。每个Cloud Service会有一个VIP公网IP地址。
如果需要端口全开的地址,可以给虚拟机添加PIP地址。这个地址与原有的VIP地址不同,并且通过VIP和PIP都可以访问到这台VM。只是VIP需要做Endpoint的设置,而PIP不需要。
具体配置方法:
配置PIP非常简单,只需要一条Powershell命令:
get-azurevm -ServiceName hwpip -Name hwpip | set-AzurePublicIP -PublicIPName hwpipip1 | Update-AzureVM
检查命令:
get-azurevm -ServiceName hwpip -Name hwpip | Get-AzurePublicIP -PublicIPName hwpipip1
这条命令基本看不到任何想看的信息。可以用下面的命令进行观察:
Get-AzureRole -ServiceName hwpip -Slot Production -InstanceDetails
InstanceEndpoints : {SSH}
InstanceErrorCode :
InstanceFaultDomain : 0
InstanceName : hwpip
InstanceSize : Standard_D1
InstanceStateDetails :
InstanceStatus : ReadyRole
InstanceUpgradeDomain : 0
RoleName : hwpip
DeploymentID : 29da144bef1f432384a15635ada2ce61
IPAddress : 10.1.1.4
PublicIPAddress : 42.159.29.19
PublicIPName : hwpipip1
PublicIPIdleTimeoutInMinutes :
PublicIPDomainNameLabel :
PublicIPFqdns : {}
ServiceName : hwpip
OperationDescription : Get-AzureRole
OperationId : 701a4bf1-1e38-4630-9565-ffd803c2c73a
OperationStatus : Succeeded
这里可以看到比较详细的信息,其中PublicIPAddress: 42.159.29.19就是公网IP。
另外通过命令可以看到虚拟机VIP信息:
$vip = Get-AzureDeployment -ServiceName hwpip
$vip.VirtualIPs
Address : 42.159.26.212
IsDnsProgrammed : True
Name : hwpipContractContract
ReservedIPName :
ExtensionData :
这里可以看到VIP地址:42.159.26.212,通过配置endpoint,可以通过这个地址访问到我们开放的Service。
比如当你启用了FTP或HTTP的服务,以及默认启用的SSH服务,可以通过PIP的公网IP访问到,也可以通过VIP访问,但必须要添加endpoint。
但如果设置了PIP,必须要添加相应的iptables的规则,否则非常容易被黑掉!