2016-02-26 6 views
0

У меня есть сайт, размещенный на локальном сервере в локальной сети. Этот сервер выставляется внешним путем перенаправления портов с маршрутизатора. Я хочу знать, подключен ли клиент из-за пределов локальной сети или внутри локальной сети.Javascript/PHP - найти, если клиент находится в одной сети

+0

IP check .... Если кто-то должен получить доступ к веб-сайту в вашей сети, этот человек будет использовать тот же IP-адрес, что и IP-адрес сервера, любые другие подключенные IP-адреса будут подключаться из-за пределов локальной сети. – NewToJS

+0

Вы можете проверить '$ _SERVER ['REMOTE_ADDR']' в PHP. Вы уже должны знать IP-адрес вашего сервера, если 'REMOTE_ADDR' находится в той же подсети (или, если это частный IP-адрес), клиент является локальным. – ROAL

ответ

3

Любой запрос на ваш сервер, который был перенаправлен в порт, будет отображаться исходящим от 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), и вы используете один и тот же имя хоста как внутри, так и вне локальной сети, и DNS внутри локальной сети указывает, что имя хоста в сети Интернет сталкивается с IP-адрес маршрутизатора, то запросы все равно будут перенаправлены портами маршрутизатором.

+0

Я использую имя DNS dns, но в локальной сети я добавляю статическую запись DNS в свой маршрутизатор с точками непосредственно на локальные адреса сервера. Так что я думаю, что он не должен быть перенаправлен маршрутизатором? – dragonn