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

最佳答案

已转发给端口的对服务器的任何请求似乎都源自执行端口转发的设备的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

假设局域网中的设备直接访问您的服务器,它们发出的请求似乎源自其自己的局域网IP地址。

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

09-18 13:00