背景:在通话中,我需要能够通过手机快速SSH进入AWS生产服务器(例如,如果我没有便携式笔记本电脑,并且有手机覆盖范围但没有wifi) 。 SSH访问仅允许来自少数IP地址,在进行SSH之前,我需要将手机的公共IP地址添加到该列表中。我正在使用提示2和AWS Mobile Console。
问题:如何找到需要添加到AWS安全组的手机的公共IP地址? (请在关闭重复项之前先阅读整个问题)
听起来很容易,对吧?除非我找不到确定我手机的实际公共IP地址的简便方法。例如,当通过手机网络访问Internet时,whatismyip.com报告我的公共IP地址为107.77.xxx.xxx。将该地址添加到安全组不起作用。 ipchicken.com和其他一些网站报告的地址相同。
接下来,我发现两者之间可能存在各种各样的NAT,并且也许某些更智能的Web工具可以处理该问题。实际上,在我的情况下,ifconfig.me和checkip.dyndns.org报告了另一个公共IP地址166.170.xx.xx。将该地址添加到安全组中,也不允许我通过SSH进入服务器。
现在,作为我的最后选择,我将手机从ssh切换到另一台服务器,该服务器不包含生产数据,并且允许从任何地址进行ssh访问:
$ netstat -an|grep ":22 .* ESTABLISHED"
tcp 0 0 172.31.14.173:22 107.72.xx.xx:23255 ESTABLISHED
$
每个netstat,我的ssh会话来自IP地址107.72.xx.xx(已编辑完整地址)。现在,如果我将那个地址添加到我的AWS安全组,那么我终于可以从手机SSH到生产服务器了。因此,这最后一种方法的确能产生我所需的正确地址,但要获得它却有些困难,尤其是当我无法访问允许任何地址通过SSH的其他服务器时。
因此,简而言之:是否存在像whatismyip.com或ifconfig.me这样的网站,该网站可以让我访问由netstat确定的手机的“真实”公共IP地址。
我正在使用iPhone,因此无法运行本地UNIX命令。我的手机服务提供商是AT&T,如果有帮助的话。我也将手机置于现场测试模式,但它只给我AT&T的不可路由的内部10.x.x.x地址。
答案 0 :(得分:2)
听起来好像Web流量被代理了,所以您需要通过非HTTP方法检查地址。
Getting a public IP without access to a browser? - Networking - Spiceworks建议使用DNS查找来获取地址,这样可以避免使用代理。