2017-09-13 145 views
0

我有一个Heroku应用程序,用于对外部服务进行一些API调用。有一些问题,服务人员想知道哪些IP正在拨打电话。获取Heroku dynos的IP地址

很多像ifconfig,traceroute,netstat等基本工具都不存在于机器上。看起来他们正在运行Ubuntu 14.04.5的一个非正式版本。

我能够使用heroku ps:exec -a <myapp> SSH到我的应用程序和使用ip addr,但也存在一些问题:

1)看来,这种只允许我通过SSH进入web.1赛道(和我做我的API调用通过rest.1,rest.2等) 2)这些调用通过Heroku一侧的路由器。

我该如何获得所有dyno实例和/或路由器的IP地址?

+0

这怎么可能downvoted ???这是尽可能明确,它遵循所有的指导方针在这里:https://stackoverflow.com/help/on-topic –

+0

我同意,这是一个有效的问题。 – mostafazh

回答

1

使用heroku ps -a <app>命令获取dynos列表。

你实际上可以用heroku ps:exec -a <app> -d <dyno_instance> --ssh ssh进入个别的dyno实例。

使用ip命令获取单独的动态IP,例如, ip addr | grep "global eth0" | awk '{ print $2 }'

获取路由器IP与curl 'https://api.ipify.org'http://httpbin.org/ip也不错。

您可以使用expect以编程方式通过运行Heroku SSH命令,等待提示符,运行IP命令,注销,然后重复每个dyno实例从每个动态检索IP。

2

根据docs,Heroku Dynos可以是来自AWS区域的任何IP。为您的Dynos提供专用/静态IP是其enterprise offering的一部分。

但是,您可以通过添加具有专用/静态IP的附加(如Fixie或Proximo软体)

此外,您还可以有DYNOS进行GET请求https://httpbin.org/ip,它会与DYNOS回应公共知识产权(更多的想法在下面的评论部分)。

+0

随着时间的推移,它们肯定会发生变化,但在特定时刻它们必须拥有IP。 –

+2

他们可能会以比您可以管理的速度更快的速度进行更改,但这是揭示面向公众/互联网的IP的一种方式。从https://requestb.in创建一个RequestBin,并让Dynos向它发出请求并刷新页面以查看对该唯一https://requestb.in/XXXXXX url的所有请求。 – mostafazh

+1

甚至向'https:// httpbin.org/ip'发出'GET'请求,它会为你返回Dynos公共IP。 – mostafazh