用于从Azure(堆栈)进行传出连接的SNAT端口

时间:2018-07-19 06:48:40

标签: azure azure-vm-scale-set azure-load-balancer azure-stack

我无法从在Azure Stack中创建的负载平衡VM获得有效的outgoing connection。我有文档的场景2:“与VM关联的公共负载均衡器(实例上没有实例级公共IP地址)”。开箱即用的端口仅是80端口。我在附加的防火墙后面,我问自己是否必须打开其他任何特定端口以允许与Internet进行通信。三个问题:

  • 是否存在问题,我尝试从VM内部访问的端口已由负载均衡器转换为其他SNAT端口?

  • 文档对amount of used SNAT ports进行了说明,但没有说明使用了哪个 SNAT端口?我必须在外部防火墙中打开哪些端口?

  • 为什么端口80开箱即可使用?默认情况下,我可以从VM内访问Web。这意味着可以访问公共互联网。我本人未对端口80包含任何其他规则。

我在Azure安全组的传入连接部分中找到了以下内容:a hint in the firewall settings在49152和65534之间明确提到了临时端口。不幸的是,在我们的外部防火墙的传出连接中打开这些端口并没有也可以。所有端口上的所有VM内部防火墙都是打开的。

我使用以下模板创建了集群。 SKU应该是默认的一个“标准”,因为我没有为LoadBalancer指定其他任何东西。

  {
    "apiVersion": "[variables('lbApiVersion')]",
    "type": "Microsoft.Network/loadBalancers",
    "name": "[concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType0Name'))]",
    "location": "[variables('location')]",
    "dependsOn": [
      "[concat('Microsoft.Network/publicIPAddresses/',concat(variables('lbIPName'),'-','0'))]"
    ],
    "properties": {
      "frontendIPConfigurations": [
        {
          "name": "LoadBalancerIPConfig",
          "properties": {
            "publicIPAddress": {
              "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(variables('lbIPName'),'-','0'))]"
            }
          }
        }
      ],
      "backendAddressPools": [
        {
          "name": "LoadBalancerBEAddressPool",
          "properties": {}
        }
      ],
      "loadBalancingRules": [
        {
          "name": "LBRule",
          "properties": {
            "backendAddressPool": {
              "id": "[variables('lbPoolID0')]"
            },
            "backendPort": "[variables('nt0fabricTcpGatewayPort')]",
            "enableFloatingIP": "false",
            "frontendIPConfiguration": {
              "id": "[variables('lbIPConfig0')]"
            },
            "frontendPort": "[variables('nt0fabricTcpGatewayPort')]",
            "idleTimeoutInMinutes": "5",
            "probe": {
              "id": "[variables('lbProbeID0')]"
            },
            "protocol": "tcp"
          }
        },
        {
          "name": "LBHttpRule",
          "properties": {
            "backendAddressPool": {
              "id": "[variables('lbPoolID0')]"
            },
            "backendPort": "[variables('nt0fabricHttpGatewayPort')]",
            "enableFloatingIP": "false",
            "frontendIPConfiguration": {
              "id": "[variables('lbIPConfig0')]"
            },
            "frontendPort": "[variables('nt0fabricHttpGatewayPort')]",
            "idleTimeoutInMinutes": "5",
            "probe": {
              "id": "[variables('lbHttpProbeID0')]"
            },
            "protocol": "tcp"
          }
        },
        {
          "name": "AppPortLBRule1",
          "properties": {
            "backendAddressPool": {
              "id": "[variables('lbPoolID0')]"
            },
            "backendPort": "[parameters('loadBalancedAppPort1')]",
            "enableFloatingIP": "false",
            "frontendIPConfiguration": {
              "id": "[variables('lbIPConfig0')]"
            },
            "frontendPort": "[parameters('loadBalancedAppPort1')]",
            "idleTimeoutInMinutes": "5",
            "probe": {
              "id": "[concat(variables('lbID0'),'/probes/AppPortProbe1')]"
            },
            "protocol": "tcp"
          }
        },
        {
          "name": "AppPortLBRule2",
          "properties": {
            "backendAddressPool": {
              "id": "[variables('lbPoolID0')]"
            },
            "backendPort": "[parameters('loadBalancedAppPort2')]",
            "enableFloatingIP": "false",
            "frontendIPConfiguration": {
              "id": "[variables('lbIPConfig0')]"
            },
            "frontendPort": "[parameters('loadBalancedAppPort2')]",
            "idleTimeoutInMinutes": "5",
            "probe": {
              "id": "[concat(variables('lbID0'),'/probes/AppPortProbe2')]"
            },
            "protocol": "tcp"
          }
        }
      ],
      "probes": [
        {
          "name": "FabricGatewayProbe",
          "properties": {
            "intervalInSeconds": 5,
            "numberOfProbes": 2,
            "port": "[variables('nt0fabricTcpGatewayPort')]",
            "protocol": "tcp"
          }
        },
        {
          "name": "FabricHttpGatewayProbe",
          "properties": {
            "intervalInSeconds": 5,
            "numberOfProbes": 2,
            "port": "[variables('nt0fabricHttpGatewayPort')]",
            "protocol": "tcp"
          }
        },
        {
          "name": "AppPortProbe1",
          "properties": {
            "intervalInSeconds": 5,
            "numberOfProbes": 2,
            "port": "[parameters('loadBalancedAppPort1')]",
            "protocol": "tcp"
          }
        },
        {
          "name": "AppPortProbe2",
          "properties": {
            "intervalInSeconds": 5,
            "numberOfProbes": 2,
            "port": "[parameters('loadBalancedAppPort2')]",
            "protocol": "tcp"
          }
        }
      ],
      "inboundNatPools": [
        {
          "name": "LoadBalancerBEAddressNatPool",
          "properties": {
            "backendPort": "3389",
            "frontendIPConfiguration": {
              "id": "[variables('lbIPConfig0')]"
            },
            "frontendPortRangeEnd": "4500",
            "frontendPortRangeStart": "3389",
            "protocol": "tcp"
          }
        }
      ]
    },
    "tags": {
      "resourceType": "Service Fabric",
      "clusterName": "[parameters('clusterName')]"
    }
  },

简而言之?如何从Azure VM实现Outgoind连接。

1 个答案:

答案 0 :(得分:0)

关于您的问题,我会告诉您我所知道的一切。希望对您有帮助。

  

问题是我尝试从VM内部访问的端口   是由负载均衡器转换为其他SNAT端口的?

否,使用SNAT规则,您可以根据需要将Internet的访问流转换为或不转换为其他端口。 Azure负载平衡器SNAT规则意味着您可以连接到VM Internet上的端口A与端口B。端口A和端口B可以相同或不同。

  

文档说明了有关已使用的SNAT端口数量的信息,   但是并没有说明使用了哪些SNAT端口?我有哪些端口   在外部防火墙中打开?

经过我的测试,您甚至可以在负载均衡器NAT规则中使用端口1。因此,我假设该文档意味着每个IP配置可以使用多少个端口。建议您再次阅读该文档并仔细理解。

  

为什么端口80开箱即用?我可以默认访问   虚拟机内部访问Web。这意味着,有可能达到   公共互联网。我没有为端口80包含任何其他规则   我自己。

对于此问题,您应该确定一些事情。首先,如果您有一个与负载均衡器关联的公共IP与您的VM。其次,如果还有其他NAT规则,则应在Azure门户中查看。或者,您可以使用cli命令az network lb inbound-nat-rule list