【问题标题】:How to get IP of my site, exactly? [closed]究竟如何获取我网站的IP? [关闭]
【发布时间】:2014-08-17 11:19:00
【问题描述】:

我已经联系了一些网站管理员以获得他们的 API,作为回报,他们要求提供源 IP,以便将其列入白名单,这样只有来自该 IP 的请求才会被视为合法(即使它是可以的共享 IP)。

所以,现在的问题是我如何获得网站的 ip。作为一名 PHP 开发人员,我尝试过 gethostbyname() 提供随机 IP 和 $_SERVER['REMOTE_ADDR'](从其他服务器调用),它始终提供单个 IP。我对此完全感到困惑,而且我也没有多少时间给他们我的源 IP。

我没有付费托管。我总是使用免费的 appfog (*.aws.af.cm) 和 openshift (*-name.rhcloud.com)。如果有人能告诉我寻找这些 IP 地址的过程,或者告诉我一种免费或其他主机获取静态 IP(我可以与他们共享)的方法,那就太好了。此外,他们只允许使用此 API 10 天。

更新:我也试过ping mysite.aws.af.cm(与gethostbyname()相同)为不同的呼叫提供不同的IP。

【问题讨论】:

  • PING www.google.com (74.125.228.115) 56(84) bytes of data.
  • 我已经尝试过了,并且在 ping 时获得了 IP,但 ping request timed out。那样可以么?我可以给他们这个 IP 地址吗?恐怕,我不能一次又一次地要求他们更改 IP。
  • 您可以将服务器/路由器/交换机配置为忽略 ICMP 数据包,这将有效地静默丢弃 ping 和跟踪(并导致客户端的请求超时)。一些服务器这样做是为了减轻 DOS 攻击。
  • 对不起,我没有得到你。你能解释一下吗?

标签: php openshift appfog


【解决方案1】:

Web 主机通常具有静态 IP 地址,但令我惊讶的是,它们需要 IP 用于基于 Web 的 API,而不是域/某种密钥。

您是否考虑过 ping 您的域,因为 ping 命令会将您的域转换为它对应的 IP 地址?

编辑:另一种解决方案。

考虑到服务器正在联系您的 API,我在自己的网站上创建了一个返回 $_SERVER['REMOTE_ADDR'] 的文件,但您应该使用您网站上的脚本访问该文件!

将以下内容上传到您的网站并运行它:

<?php
    echo file_get_contents("http://barathesh.com/server.php");
?>

【讨论】:

  • 我已经尝试过了,并且在 ping 时获得了 IP,但 ping 请求超时。那样可以么?我可以给他们这个 IP 地址吗?恐怕,我不能一次又一次地要求他们更改 IP
  • 这是最有可能的 IP,如果超时,可能只是他们的防火墙阻止了 ping 请求。
  • 只是添加一个注释,这听起来不像你,但如果你碰巧有你的网站从负载平衡器后面提供服务(即,你实际上有多个服务器运行你的网站) ,那么您将拥有多个需要识别和发送的 IP。
  • @JamesHunt 我也尝试过(问题中也提到过)。这总是返回一个 IP,但我不知道他们如何验证我的 IP。如果他们是这样做的,那就没问题了。如果他们使用其他方法,我的 IP 地址将不是静态的。
  • (我很抱歉,没有看到“来自另一台服务器”的部分)为什么不给他们返回的那个并通过电子邮件向他们解释你是如何得到它的以及它是否正确?如果您提出有意义的问题,他们几乎不会因此而贬低您!
【解决方案2】:

从命令行

从您的终端 Ping 它(适用于基于 Windows 和 Linux 的操作系统)

ping youhostname.com

会打印类似的东西

64 bytes from 74.125.206.100: icmp_seq=0 ttl=44 time=3.151 ms
64 bytes from 74.125.206.100: icmp_seq=1 ttl=44 time=3.116 ms

纯 PHP

看看gethostbyname函数

echo gethostbyname('yourdomain.com');

会输出yourdomain.com的ip地址

【讨论】:

  • 我收到了request timed out。这是什么意思?
  • 可能提供商没有响应 ping,这很令人惊讶!我更新了一个纯php版本,你可以试试吗?
  • 这个gethostbyname() 给了我不同的IP,正如我在问题中已经提到的那样。
  • 如果您将它与google.com 一起使用,您将获得不同的结果,具体取决于您的地理位置:Google 有很多服务器。如果 ip 错误,请检查您是否使用类似 sub.domain.com 而不是类似 http://sub.domain.com/ 的主机调用函数
  • 所以,我猜这就是问题所在。我使用 Appfog.com,他们使用在世界各地拥有许多服务器的 AWS。因此,我为不同的 ping 获得了不同的 IP。如果是,请告诉我一个解决方法吗?
【解决方案3】:

使用这个 php 函数并像这样回显结果:

$myip = ($_SERVER['REMOTE_ADDR']); echo $myip

【讨论】:

  • 'REMOTE_ADDR' The IP address from which the user is viewing the current page. OP 想要他的网络主机的 IP,而不是用户。
猜你喜欢
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多