从已部署的应用获取Azure公共IP地址

时间:2011-03-16 17:19:41

标签: sockets azure dns ip azure-worker-roles

我在PASV服务器中实现FTP模式,然后向客户端发送数据端点的IP地址和端口。这是愚蠢的,因为IP实际上是客户端已经连接的地方,所以有两个选项:

  1. 我怎样才能获得公众IP 来自给定实例的地址?不 VIP,但是公众。

  2. 我怎样才能获得原始目标 用户使用的IP地址 一个Socket对象?考虑中间的路由器和负载平衡器:P

  3. 对这些问题的回答都可以,但有另一种方式可行吗?我可以通过公共IP地址查看DNS查询myapp.cloudapp.net

    第四个选项是使用Azure Management API库...但是,太麻烦了:P。

    干杯。

2 个答案:

答案 0 :(得分:1)

不确定你是否想过这个,但这是我的看法。各个角色实例都在Windows Azure负载均衡器之后,并且不知道原始的,向外的IP地址是什么。此外,没有返回IP地址的Management API调用 - Get Deployment返回URL但不返回IP地址。我认为唯一的选择是进行dns查找。

话虽如此:我认为你不能在你的角色实例中托管被动的ftp服务器(至少不是优雅的)。您可以在您的角色上打开最多25个输入端点(从5开始 - 请参阅我最近关于此更新的blog post),但配置中涉及手动工作。我不知道您的ftp应用程序是否允许您将端口范围限制为如此少量的端口。也:

  • 您必须将每个端口定义为自己的输入端点(这是我提到的手工部分) - 与内部端点不同,输入端点不允许指定端口范围。
  • 您必须指定内部使用的端口号,端口号必须是顺序的

ftp上的最后一件事:你应该能够毫无问题地托管sftp服务器,因为所有流量都来自一个端口。

答案 1 :(得分:0)

我正在考虑的黑客攻击是http://www.icanhazip.com/。它不优雅,取决于该服务的可用性,但它完成了工作。一个更好的解决方案将不胜感激!