как да получа ip зад NAT с помощта на php?

Възможно ли е да се извлече IP зад NAT в PHP? Използвам $_SERVER["REMOTE_ADDR"] за получаване на IP адрес на клиента. Не дава точен IP адрес на клиента, който е зад NAT.


person Javad Shareef    schedule 21.12.2011    source източник


Отговори (5)


Не, не е възможно. NAT означава транслация на мрежов адрес - IP адресът на пакетите се пренаписва на NAT устройството, така че публичният IP адрес е единственият, доколкото вашият сървър знае.

Въпреки това можете да използвате някои трикове - като например проверка за вътрешния IP адрес с помощта на Java Applet. Вижте това: Вземете правилния локален IP адрес от java applet

person Piskvor left the building    schedule 21.12.2011
comment
(Въпреки това не съм сигурен за какво ще ви е нужен вътрешният IP адрес; имайте предвид, че са възможни множество вложени NAT - така че компютърът да може да се вижда например като 192.168.0.153, 10.53.0.1, 192.168.42.12 и 1.2 .3.4, в зависимост от топологията на мрежата) - person Piskvor left the building; 21.12.2011
comment
Имам нужда от вътрешен IP за проследяване на системи в близост до мрежата. Тук те използват множество NAT за мрежа. - person Javad Shareef; 21.12.2011

Не е възможно да получите IP зад NAT чрез HTTP и php.

person fyr    schedule 21.12.2011

Не. PHP вижда само външния IP.

'REMOTE_ADDR' IP адресът, от който потребителят разглежда текущата страница.

person stefandoorn    schedule 21.12.2011

ако те използват прокси, можете да използвате

       $real_ip = $_SERVER['HTTP_X_FORWARDED_FOR']

иначе не е възможно

person mustafa    schedule 21.12.2011
comment
$real_ip = $_SERVER['HTTP_X_FORWARDED_FOR'] се използва за откриване на прокси нали? - person Javad Shareef; 21.12.2011

Не можете да видите частния адрес на клиента и обикновено не ви е грижа да го видите, защото нямате достъп до него. Дори ако е използвал прокси, понякога може да получите адрес чрез:

 $_SERVER['HTTP_X_FORWARDED_FOR']
person ocirocir    schedule 21.12.2011