2017-09-13 53 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