Столкнулся с тем, что хостинг выдаёт на 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) | ||
request.setRequestHeader('X_REAL_IP', 'Нежданчик'); где 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-модули:
Затем ребутнем апач на всякий случай
Затем ставим apxs2 для Апача
ребутаем апач снова
Скачиваем и устанавливаем mod_rpaf
Создаем файл rpaf-2.0.load и вписываем туда
Где 127.0.0.0 и x.x.x.x, это IP-адреса прокси серверов с которых приходит запрос (например nginx)
Сохраняем и закачиваем файл в раздел
Включаем модуль mod_rpaf
Перезапускаем Апач
Всё. Теперь IP-адреса посетителей должны определять снова нормально.
Для проверки работы модуля mod_rpaf на любом из доменов, которые расположены на Вашем сервере, разместите файл test.php с содержимым:
Далее зайдите по ссылке http://vashdomen.ru/test.php, где vashdomen.ru - имя вашего домена.
Если как результат отображается IP, отличающийся от IP вашего сервера, модуль работает корректно.
Свернутый текст
Решаем проблему, когда на связке 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".Точнее сказать,при обращении к ним показывается адрес их сервера
А где же на самом деле наш ip adress? - в нашем случаи,автор топика как раз и выяснил где "X_FORWARDED_FOR".Там и хранится наш Ip.(адрес удалённого хоста)
С логической точки зрения это смешно,но большинство людей понятия не имеют как всё это работает.
Мне приходилось писать программу которая сверяет всю эту лабуду.
Следует писать определённые регулярные выражения,так как в X-Forwarded-For могут оказаться IP адреса через запятую, или доменные имена или не через запятую. А может и оказаться слово "fuck it man".Что мне и попалось.
HTTP_ - нельзя использовать Это подделать может любой школьник.
Почему?- всё что начинается с префикса HTTP_ игнорируйте.
Это ведь заголовки.
Если у хостеров кривые-руки,что же делать? - это очень сомнительное дело.На личном опыте скажу,если в таких делах кривые руки у хостеров,это только начало цирка.
А где же на самом деле наш ip adress? - в нашем случаи,автор топика как раз и выяснил где "X_FORWARDED_FOR".Там и хранится наш Ip.(адрес удалённого хоста)
С логической точки зрения это смешно,но большинство людей понятия не имеют как всё это работает.
Мне приходилось писать программу которая сверяет всю эту лабуду.
Следует писать определённые регулярные выражения,так как в X-Forwarded-For могут оказаться IP адреса через запятую, или доменные имена или не через запятую. А может и оказаться слово "fuck it man".Что мне и попалось.
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 Затем ребутнем апач на всякий случай /etc/init.d/apache2 restart Затем ставим apxs2 для Апача apt-get install apache2-prefork-dev ребутаем апач снова /etc/init.d/apache2 restart Скачиваем и устанавливаем mod_rpaf cd /usr/local/src Создаем файл rpaf-2.0.load и вписываем туда LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf-2.0.so Где 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 с содержимым: <? Далее зайдите по ссылке 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) |
Спустя 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 ..
а зачем тогда, 127.0.0.0 ? на сколько я знаю используется локальный адрес 127.0.0.1 ..
Спустя 4 дня, 21 час, 44 минуты, 44 секунды (15.02.2012 - 13:30) inpost написал(а):
Ответ от админов:
- "У нас работало раньше, сейчас сбилось".
- "Мы знаем про mod_rpaf2".
- "Всё, исправили".
Собственно, хорошо всё, что хорошо кончается. Не забывайте проверять настройки сервера и вовремя писать админам с просьбой устранить неполадку.
- "У нас работало раньше, сейчас сбилось".
- "Мы знаем про 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).