15

我有一个 Heroku 应用程序对外部服务进行一些 API 调用。存在一些问题,服务想知道哪些 IP 正在进行调用。

机器上不存在许多基本工具,如ifconfigtraceroute、等。netstat看起来他们正在运行一个非常简单的 Ubuntu 14.04.5 版本。

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

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

如何获取所有测功机实例和/或路由器的 IP?

4

2 回答 2

17

使用命令获取测功机列表heroku ps -a <app>

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

使用命令获取单个测功机 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 实例重复以编程方式从每个 dyno 检索 IP。

于 2017-09-13T02:46:50.193 回答
6

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

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

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

于 2017-09-13T00:30:27.240 回答