如何使用 php 获取 NAT 后面的 ip?

Posted

技术标签:

【中文标题】如何使用 php 获取 NAT 后面的 ip?【英文标题】:how to get ip behind NAT using php? 【发布时间】:2012-01-25 02:05:49 【问题描述】:

是否可以在 php 中检索 NAT 后面的 IP? 我正在使用$_SERVER["REMOTE_ADDR"] 获取客户端的 IP 地址。它没有给出位于 NAT 后面的客户端的确切 IP 地址。

【问题讨论】:

【参考方案1】:

不,不可能。 NAT 表示网络地址翻译 - 数据包的 IP 地址在 NAT 设备上被重写,因此就您的服务器所知,公共 IP 地址是唯一的。

但是,您可以使用一些技巧 - 例如使用 Java Applet 检查内部 IP 地址。看到这个:Get the correct local IP address from java applet

【讨论】:

(无论如何,我不确定您需要什么内部 IP 地址;请注意,可以有多个嵌套的 NAT - 因此计算机可能会被视为 192.168.0.153、10.53 .0.1、192.168.42.12 和 1.2.3.4,取决于网络拓扑) 我需要内部 IP 来跟踪网络附近的系统。他们在这里使用多个 NAT 网络。【参考方案2】:

无法使用 HTTP 和 php 获取 NAT 后面的 IP。

【讨论】:

【参考方案3】:

没有。 PHP 只看到外部 IP。

'REMOTE_ADDR' 用户查看当前页面的 IP 地址。

【讨论】:

【参考方案4】:

如果他们使用代理,你可以使用

       $real_ip = $_SERVER['HTTP_X_FORWARDED_FOR']

否则是不可能的

【讨论】:

$real_ip = $_SERVER['HTTP_X_FORWARDED_FOR'] 用于代理检测对吗?【参考方案5】:

您看不到客户的私人地址,通常您也不想看到它,因为您无法访问它。即使它使用代理,有时您也可以通过以下方式获取地址:

 $_SERVER['HTTP_X_FORWARDED_FOR']

【讨论】:

以上是关于如何使用 php 获取 NAT 后面的 ip?的主要内容,如果未能解决你的问题,请参考以下文章

如果您在防火墙后面的 NAT 上,如何使用 php xdebug?

获取本地某个端口的 NAT 转换后的 IP 和端口

如何在 NAT 后面的两个节点之间进行通信?

追踪溯源--抓住隐藏在NAT后面的罪犯

如何从 STUN 请求中获取我的外部 IP 地址和外部端口号?

如何在 2 个 nat 后面执行 p2p?