微軟的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的規則,否則非常容易被黑掉!