如何使用 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?