入站NAT池,如何发现外部端口?

时间:2018-06-11 19:18:24

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

背景:如果我理解正确的话,InboundNATPools用于将每个外部端口映射到LB后面的VMSS上的特定VM。 例如{LB_IP:p1,LB_IP:p2, ...} => {VM1:p0,VM2:p0, ...}

问题:VM(即应用)如何发现已分配 外部 端口? 例如在上面的示例中,来自{p1,p2,..}

的右端口

一种可能的方法:我正在考虑使用外部服务来监听众所周知的端口上的连接,并在建立连接时响应源端口。 我不愿意使用它,因为这意味着维持另一项服务。

额外详情: 我在Service Fabric上运行,端口的协议是TCP。

相同的未回答的问题Retrieve Azure load balancer NAT port for Azure VM in C# 没有得到有效答案,我希望重新解决这个问题。

1 个答案:

答案 0 :(得分:1)

假设您的scaleset ID是连续的,您可以使用

curl -H Metadata:true "http://169.254.169.254/metadata/instance?api-version=2017-12-01"

将以nodename_0

的格式为您提供节点名称

将_之后的数字添加到负载均衡器的起始端口应该为您提供端口

非常hacky,我真的希望有更好的解决方案!

我个人更喜欢提供VPN访问,以便可以直接从内部VNET访问这些端口