获取 Heroku dynos 的 IP

Get IP of Heroku dynos

我有一个 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 端的路由器。

如何获取所有 dyno 实例的 IP and/or 路由器?

根据 docs, Heroku Dynos can be any IP from an AWS Region. Having a dedicated/static IP for your Dynos is part of their enterprise offering.

但是,您可以通过添加附加组件(例如 Fixie, Proximo or one of these add-ons)获得 dedicated/static IP

此外,您可以让 Dynos 向 https://httpbin.org/ip 发出 GET 请求,它将使用 Dynos public IP 进行响应(更多想法在下面的评论部分)。

使用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 }'.

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

您可以使用 expect 通过 运行 Heroku SSH 命令以编程方式从每个 dyno 检索 IP,等待提示,运行 IP 命令,记录出来,然后为每个测功机实例重复。