微软的Azure平台已经支持Instance Level Public IP功能。当有复杂协议的情况下,需要开启多个端口的情况下,可以考虑开启PIP功能。

先介绍几个概念:

  • VIP – virtual IP address 虚拟机的公网IP
  • DIP – dynamic IP address 虚拟机的内网IP
  • PIP – instance-level public IP address 虚拟机及的公网IP

Azure PIP (Instance Level Public IP)-LMLPHP

对于创建的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的规则,否则非常容易被黑掉!

05-04 08:35