[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: REMOTE_ADDR выдаёт неверный IP, почему?
inpost
Всем привет.
Столкнулся с тем, что хостинг выдаёт на REMOTE_ADDR неверный IP, точнее IP самого сервера(!!!), а не гостя. Зато есть HTTP_X_REAL_IP && HTTP_X_FORWARDED_FOR , которые указывают мой IP.

Так вот сам вопрос, я так понял, что REMOTE_ADDR неправильно указывается из-за того, что неправильно сервер настроен? Что тогда? Писать админам с просьбой исправить всё это?
И возможно ли подделать заголовки HTTP_X_REAL_IP && HTTP_X_FORWARDED_FOR, чтобы их скрыть, тогда я смогу показать админам, что проблема у них, и невозможно определять IP вообще. Вот только как подделывать такие заголовки? Ничего толкового не нашел.
И может ли быть так, что их сервер автоматически мой REMOTE_ADDR переименовывает в REAL_IP, а потом делает внутреннюю переадресацию? В таком случае проблемы бы не было, и можно было использовать real_ip, но что произойдет, если кто-то уже отправит такой заголовок...

Вот такая беда. Что делать, что подскажите?



Спустя 2 часа, 54 минуты, 16 секунд (10.02.2012 - 02:35) Семён написал(а):
Это изза NginX, у нас тоже самое, на счёт подделать => нельзя.

Спустя 8 минут, 53 секунды (10.02.2012 - 02:44) Invis1ble написал(а):
Цитата
И возможно ли подделать заголовки HTTP_X_REAL_IP && HTTP_X_FORWARDED_FOR

request.setRequestHeader('X_REAL_IP', 'Нежданчик');
request.setRequestHeader('X_FORWARDED_FOR', '... и еще один');

где request - это XMLHttpRequest, ну или твой любимый ActiveXObject("Microsoft.XMLHTTP")

Спустя 12 минут, 56 секунд (10.02.2012 - 02:57) jetistyum написал(а):
Цитата (Invis1ble @ 10.02.2012 - 02:44)
Цитата
И возможно ли подделать заголовки HTTP_X_REAL_IP && HTTP_X_FORWARDED_FOR

request.setRequestHeader('X_REAL_IP', 'Нежданчик');
request.setRequestHeader('X_FORWARDED_FOR', '... и еще один');

где request - это XMLHttpRequest, ну или твой любимый ActiveXObject("Microsoft.XMLHTTP")

Думаю такие заголовки будут переписаны нжинксом на реальные.

Спустя 1 минута, 36 секунд (10.02.2012 - 02:59) Invis1ble написал(а):
Цитата
Думаю такие заголовки будут переписаны нжинксом на реальные.

Скорее всего, хотя думаю зависит от конфигурации nginx

Спустя 15 минут, 51 секунда (10.02.2012 - 03:14) Nikitian написал(а):
Установка mod_rpaf (debian nginx+apache)
Свернутый текст

Решаем проблему, когда на связке nginx+apache IP у всех обращений одинаковый. В т.ч. и IP всегда определяется как IP сервера.
Это очень неудобно и мы это исправим.

Сначала устанавливаем необходимые компоненты и Perl-модули:
apt-get install libhtml-parser-perl
apt-get install libwww-perl
apt-get install libcompress-zlib-perl


Затем ребутнем апач на всякий случай
/etc/init.d/apache2 restart


Затем ставим apxs2 для Апача
apt-get install apache2-prefork-dev


ребутаем апач снова
/etc/init.d/apache2 restart

Скачиваем и устанавливаем mod_rpaf
cd /usr/local/src
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs2 -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c


Создаем файл rpaf-2.0.load и вписываем туда
LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.0 x.x.x.x


Где 127.0.0.0 и x.x.x.x, это IP-адреса прокси серверов с которых приходит запрос (например nginx)
Сохраняем и закачиваем файл в раздел
/etc/apache2/mods-available/


Включаем модуль mod_rpaf
a2enmod rpaf-2.0


Перезапускаем Апач
/etc/init.d/apache2 restart



Всё. Теперь IP-адреса посетителей должны определять снова нормально.

Для проверки работы модуля mod_rpaf на любом из доменов, которые расположены на Вашем сервере, разместите файл test.php с содержимым:

<?
echo $_SERVER['REMOTE_ADDR'];
?>




Далее зайдите по ссылке http://vashdomen.ru/test.php, где vashdomen.ru - имя вашего домена.
Если как результат отображается IP, отличающийся от IP вашего сервера, модуль работает корректно.

Спустя 3 часа, 2 минуты, 21 секунда (10.02.2012 - 06:17) VELIK505 написал(а):
Установи на сервере mod_rpaf2 и подключи его в конфиге apache с указанием ip сервера

Спустя 4 часа, 24 минуты, 25 секунд (10.02.2012 - 10:41) Oyeme написал(а):
Существуют fuc*ing(wtf) хостеры.На их нем серваке нет такого понятия как " REMOTE_ADDR".Точнее сказать,при обращении к ним показывается адрес их сервера laugh.gif
А где же на самом деле наш ip adress? - в нашем случаи,автор топика как раз и выяснил где "X_FORWARDED_FOR".Там и хранится наш Ip.(адрес удалённого хоста)
С логической точки зрения это смешно,но большинство людей понятия не имеют как всё это работает.
Мне приходилось писать программу которая сверяет всю эту лабуду.

Следует писать определённые регулярные выражения,так как в X-Forwarded-For могут оказаться IP адреса через запятую, или доменные имена или не через запятую. А может и оказаться слово "fuck it man".Что мне и попалось. laugh.gif
HTTP_ - нельзя использовать Это подделать может любой школьник.
Почему?- всё что начинается с префикса HTTP_ игнорируйте.
Это ведь заголовки.

Если у хостеров кривые-руки,что же делать? - это очень сомнительное дело.На личном опыте скажу,если в таких делах кривые руки у хостеров,это только начало цирка.

Спустя 3 часа, 27 минут, 53 секунды (10.02.2012 - 14:09) zeromind написал(а):
Цитата (Nikitian @ 10.02.2012 - 03:14)
Установка mod_rpaf (debian nginx+apache)
Свернутый текст

Решаем проблему, когда на связке nginx+apache IP у всех обращений одинаковый. В т.ч. и IP всегда определяется как IP сервера.
Это очень неудобно и мы это исправим.

Сначала устанавливаем необходимые компоненты и Perl-модули:
apt-get install libhtml-parser-perl
apt-get install libwww-perl
apt-get install libcompress-zlib-perl


Затем ребутнем апач на всякий случай
/etc/init.d/apache2 restart


Затем ставим apxs2 для Апача
apt-get install apache2-prefork-dev


ребутаем апач снова
/etc/init.d/apache2 restart

Скачиваем и устанавливаем mod_rpaf
cd /usr/local/src
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs2 -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c


Создаем файл rpaf-2.0.load и вписываем туда
LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.0 x.x.x.x


Где 127.0.0.0 и x.x.x.x, это IP-адреса прокси серверов с которых приходит запрос (например nginx)
Сохраняем и закачиваем файл в раздел
/etc/apache2/mods-available/


Включаем модуль mod_rpaf
a2enmod rpaf-2.0


Перезапускаем Апач
/etc/init.d/apache2 restart



Всё. Теперь IP-адреса посетителей должны определять снова нормально.

Для проверки работы модуля mod_rpaf на любом из доменов, которые расположены на Вашем сервере, разместите файл test.php с содержимым:

<?
echo $_SERVER['REMOTE_ADDR'];
?>




Далее зайдите по ссылке http://vashdomen.ru/test.php, где vashdomen.ru - имя вашего домена.
Если как результат отображается IP, отличающийся от IP вашего сервера, модуль работает корректно.

Цитата
Где 127.0.0.0 и x.x.x.x, это IP-адреса прокси серверов с которых приходит запрос (например nginx)


так если у меня апач стоит на 8080 порте, nginx на 80ом, что мне писать в X.X.X.X ?
в location у меня указано следующее:

		location / {
root /home/zeromind/www;
index index.html index.htm index.php;
access_log off;
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

в апаче -
NameVirtualHost *:8080
Listen 127.0.0.1:8080

Спустя 55 минут, 9 секунд (10.02.2012 - 15:04) Invis1ble написал(а):
zeromind
Цитата
так если у меня апач стоит на 8080 порте, nginx на 80ом, что мне писать в X.X.X.X ?

Цитата
IP-адреса прокси серверов с которых приходит запрос (например nginx)

smile.gif

Спустя 41 минута, 27 секунд (10.02.2012 - 15:46) zeromind написал(а):
RPAFproxy_ips 127.0.0.0 x.x.x.x
а зачем тогда, 127.0.0.0 ? на сколько я знаю используется локальный адрес 127.0.0.1 ..

Спустя 4 дня, 21 час, 44 минуты, 44 секунды (15.02.2012 - 13:30) inpost написал(а):
Ответ от админов:
- "У нас работало раньше, сейчас сбилось".
- "Мы знаем про mod_rpaf2".
- "Всё, исправили".

Собственно, хорошо всё, что хорошо кончается. Не забывайте проверять настройки сервера и вовремя писать админам с просьбой устранить неполадку.

Спустя 1 час, 5 минут, 29 секунд (15.02.2012 - 14:36) killer8080 написал(а):
Цитата (Oyeme @ 10.02.2012 - 09:41)
Почему?- всё что начинается с префикса HTTP_игнорируйте.
Это ведь заголовки.

Когда nginx добавляет свой заголовок X-Real-Ip, аналогичный клиентский заголовок, если есть, убивается.


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.