Azure PowerShell部署带Basic防火墙的SFTP存储报错求助
解决Azure防火墙Basic版部署SFTP存储平台的公网IP及路由配置问题
核心问题分析
Azure防火墙Basic版要求两个独立公网IP:一个负责数据平面流量(处理SFTP业务请求),另一个负责管理平面流量(防火墙自身运维操作),你遇到的错误就是因为重复引用了同一个公网IP导致的。
分步解决方案
1. 创建两个独立的公网IP资源
分别创建SKU为Basic的公网IP,确保二者归属同一区域:
# 创建数据平面公网IP $dpPublicIp = New-AzPublicIpAddress -Name "fw-dp-pip" -ResourceGroupName "你的资源组名" ` -Location "你的区域" -AllocationMethod Static -Sku Basic # 创建管理平面公网IP $mgmtPublicIp = New-AzPublicIpAddress -Name "fw-mgmt-pip" -ResourceGroupName "你的资源组名" ` -Location "你的区域" -AllocationMethod Static -Sku Basic
2. 配置防火墙专用子网
Azure防火墙Basic版需要两个专属子网,提前在虚拟网络中创建:
AzureFirewallSubnet:承载数据平面流量,子网前缀至少为/26AzureFirewallManagementSubnet:承载管理平面流量,子网前缀固定为/26
3. 重新部署Basic版防火墙
部署时分别指定两个公网IP,关联对应子网:
$vnet = Get-AzVirtualNetwork -Name "你的虚拟网络名" -ResourceGroupName "你的资源组名" $dpSubnet = Get-AzVirtualNetworkSubnetConfig -Name "AzureFirewallSubnet" -VirtualNetwork $vnet $mgmtSubnet = Get-AzVirtualNetworkSubnetConfig -Name "AzureFirewallManagementSubnet" -VirtualNetwork $vnet $fw = New-AzFirewall -Name "你的防火墙名" -ResourceGroupName "你的资源组名" ` -Location "你的区域" -VirtualNetwork $vnet ` -PublicIpAddress $dpPublicIp ` -ManagementPublicIpAddress $mgmtPublicIp ` -Sku Basic
4. 路由表与存储账户的连接配置
路由表设置
- 创建路由表,添加默认路由(
0.0.0.0/0),下一跳类型设为Azure防火墙,将该路由表关联到存储账户所在子网(或需要访问SFTP的客户端子网)。 - 配置防火墙DNAT规则,将数据平面公网IP的22端口转发至存储账户的SFTP端点。
存储账户网络配置
- 在存储账户的网络规则中,允许
AzureFirewallSubnet的流量访问,或直接放行防火墙的私网IP。 - 若使用存储专用端点,确保端点所在子网的路由表已配置将SFTP流量指向防火墙。
关键注意事项
- Basic版防火墙不支持TLS检查、FQDN过滤等高级功能,SFTP规则需使用存储账户的公网/私网IP配置DNAT。
- 两个公网IP必须完全独立,不可复用,否则会再次触发
AzureFirewallDuplicatePublicIp错误。
内容的提问来源于stack exchange,提问作者Nayden Van
相关产品推荐
相关产品推荐

