获取Heroku dynos的IP

我有一个Heroku应用程序使一些API调用到外部服务。 有一些问题,服务想知道哪些IP正在打电话。

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

我能够使用heroku ps:exec -a <myapp>来SSH进入我的应用程序,并使用ip addr但也有一些问题:

1)看起来,这只允许我通过SSH进入web.1 dyno(我正在通过rest.1,rest.2等进行API调用)。2)这些调用通过Heroku一侧的路由器。

我怎样才能得到所有dynamic实例和/或路由器的IP地址?

根据文档 ,Heroku Dynos可以是来自AWS地区的任何IP。 为您的Dynos 提供专用/静态IP是其企业产品的一部分。

但是,您可以通过添加附加组件(例如Fixie或Proximo)来获得专用/静态IP,

另外,你可以让Dynos向https://httpbin.org/ip发出一个GET请求,它将以Dynos公共IP进行响应(更多的想法在下面的注释部分)&#x3002;

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

你实际上可以通过heroku ps:exec -a <app> -d <dyno_instance> --ssh ssh进入单独的heroku ps:exec -a <app> -d <dyno_instance> --ssh

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

使用curl 'https://api.ipify.org'获取路由器IP。 http://httpbin.org/ip也不错&#x3002;

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