获取 Heroku dynos 的 IP

s g*_*s g 12 linux networking heroku heroku-cli

我有一个 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?

s g*_*s g 12

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

您实际上可以使用 ssh 进入单个 dyno 实例heroku ps:exec -a <app> -d <dyno_instance> --ssh

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

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

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


mos*_*azh 6

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

但是,您可以通过添加附加组件(例如FixieProximo这些附加组件之一)来拥有专用/静态 IP

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

  • 它们的变化速度可能超出您的管理能力,但这里有一种公开其面向公共/互联网的 IP 的方法。从 https://requestb.in 创建一个 RequestBin 并让 Dynos 向它发出请求并刷新页面以查看对该唯一 https://requestb.in/XXXXXX url 发出的所有请求。 (2认同)