在 Azure 中使用经典部署模型创建的所有虚拟机都可以通过专用网络通道与同一云服务或虚拟网络中的其他虚拟机自动通信。但是,Internet 上的计算机或其他虚拟网络需要终结点才能定向虚拟机的入站网络流量。这篇文章也适用于 Linux 虚拟机。
在 Azure 经典管理门户中创建 Windows 虚拟机时,通常会为你自动创建常用终结点(如用于远程桌面和 Windows PowerShell 远程处理的终结点),具体取决于你选择的操作系统。你可以在创建虚拟机时或之后根据需要配置其他终结点。
每个终结点都有一个公用端口和一个专用端口:
- Azure 负载平衡器使用公用端口侦听从 Internet 传入的虚拟机流量。
- 虚拟机使用专用端口侦听通常发送到虚拟机上运行的应用程序或服务的传入流量。
可以发现‘Public Port‘和‘Private Port‘是不同的,这样设置避免了黑客的攻击,也可以理解为PAT。
好了,一般的通过管理界面即可添加、删除等进行管理Endpoint端口,但是当需要管理的端口比较多的时候,这种方式就有些不适合了,下面我们介绍通过powershell进行批量管理Endpoint。
注意:
●Endpoint不支持添加端口段
●支持的最大端口数量为150
●需要"Endpoint"和"VM防火墙规则"双重验证后才可以进行访问VM
1、添加单个Endpoint
查询当前VM的Endpoint:
Get-AzureVM -Servicename xxx -Name xxx | Get-AzureEndpoint |FL Name,Localport,Port
添加单个Endpoint:
Get-AzureVM -Servicename xxx -Name xxx |Add-AzureEndpoint -Name "xxx" -Protocol "tcp" -PublicPort 80 -LocalPort 80 | Update-AzureVM
注意:Protocol参数必须为:“TCP”或“UDP”
验证(可选):
2、批量添加Endpoint
创建port.csv的表格,字段为:ServiceName、VMName、Protocol、LocalPort、PublicPort、Portname。(我这里放在C:\port.csv,表格内容大家根据自己实际情况自行替换,后续不再赘述)
导入刚才创建的表格,并进行批量添加端口:
Import-Csv ‘c:\port.csv‘ | foreach {Get-AzureVM -ServiceName $_.ServiceName -Name $_.VMname | Add-AzureEndpoint -Protocol $_.Protocol -LocalPort $_.LocalPort -PublicPort $_.PublicPort -Name $_.PortName | Update-AzureVM}
验证(可选):
3、删除Endpoint:
删除单个Endpoint:
Get-AzureVM -ServiceName xxx -Name xxx | Remove-AzureEndpoint -Name endpoint1 | Update-AzureVM
批量删除Endpoint:
创建port.csv的表格,字段为:ServiceName、VMName、Protocol、LocalPort、PublicPort、Portname。(我这里放在C:\port.csv)
进行批量删除:
Import-Csv ‘c:\port‘ | foreach {Get-AzureVM -ServiceName $_.ServiceName -Name $_.VMname | Remove-AzureEndpoint -Name $_.portname | Update-AzureVM
验证(可选):
Get-AzureVM -Servicename xxx -Name xxx | Get-AzureEndpoint |FL Name,Localport,Port
4、修改Endpoint:
将Endpoint名称为“http”的TCP端口号“80”修改为UDP“81”
查看当前端口:
Get-AzureVM -Servicename xxx -Name xxx | Get-AzureEndpoint |FL Name,Localport,Port
修改:
Get-AzureVM -ServiceName xxx -Name xxx | Set-AzureEndpoint -Name http -PublicPort 81 -LocalPort 81 -Protocol UDP | Update-AzureVM
验证(可选):
Get-AzureVM -Servicename xxx -Name xxx | Get-AzureEndpoint |FL Name,Localport,Port
5、创建基于Endpoint的“负载均衡集”(LBSET)
创建单个基于Endpoint的“负载均衡集”:
Get-AzureVM -ServiceName xxx -Name xxx | Add-AzureEndpoint -Name https -Protocol "tcp" -PublicPort 443 -LocalPort 443 -LBSetName LBSet1 -ProbePort 443 -ProbeProtocol "http" -ProbePath ‘/‘ | Update-AzureVM
验证(可选):
批量创建基于Endpoint的“负载均衡集”
创建port.csv的表格,字段为:ServiceName、VMName、Protocol、LocalPort、PublicPort、Portname、Probeprotocol、LBSetname、ProbePort、ProbePath。(我这里放在C:\port.csv)
批量创建:
Import-Csv C:\port.csv |foreach {Get-AzureVM -ServiceName $_.servicename -Name $_.vmname | Add-AzureEndpoint -Name $_.portname -Protocol $_.protocol -PublicPort $_.publicport -LocalPort $_.localport -LBSetName $_.lbsetname -ProbePort $_.probeport -ProbeProtocol $_.probeprotocol -ProbePath $_.probepath |Update-AzureVM}
验证(可选):
在port.csv中分别定义了两台VM的Endpoint信息,发现两台VM的LBSET均创建完成!
到此,Endpoint实操全部完成,相信能够满足大部分企业使用,大致方法和思路就在上面,如果需要其他类型的操作,相信稍加修改即可使用。