【问题标题】:Javascript/PHP - find if the client is in the same networkJavascript/PHP - 查找客户端是否在同一个网络中
【发布时间】:2016-02-26 13:10:57
【问题描述】:

我在我的 LAN 网络中的本地服务器上托管了一个网站。该服务器通过路由器的端口转发暴露在外部。我想知道客户端是从局域网外连接还是局域网内连接

【问题讨论】:

  • IP 检查.... 如果有人要访问您网络内的网站,该人将与服务器 IP 共享相同的 IP,任何其他连接的 IP 将是来自本地网络外部的连接。
  • 你可以在 PHP 中查看$_SERVER['REMOTE_ADDR']。您应该已经知道服务器的 IP,如果 REMOTE_ADDR 在同一个子网中(或者通常是私有 IP 地址),那么客户端是本地的。

标签: javascript php lan


【解决方案1】:

对您的服务器进行端口转发的任何请求似乎都源自执行端口转发的设备的 IP 地址。

所以你只需要测试:

if ($_SERVER['REMOTE_ADDR'] == $the_ip_address_of_the_router_on_the_lan)

其中$the_ip_address_of_the_router_on_the_lan 是已知值,例如192.168.0.1

LAN 上的设备(假设它们直接访问您的服务器)会发出看似源自它们自己的 LAN IP 地址的请求。

警告:如果使用主机名(例如foo.example.com)访问服务器,并且您在 LAN 内部和外部使用相同的主机名,并且 LAN 内部的 DNS 指向该主机名到路由器的面向Internet的IP地址,则请求仍将由路由器端口转发。

【讨论】:

  • 我使用 dns 主机名,但在 LAN 中,我在路由器中添加了一个静态 DNS 条目,并直接指向服务器本地地址。所以我认为它不应该被路由器转发?
猜你喜欢
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
相关资源
最近更新 更多