Перейти к контенту
  • 0

Сообщение "не удается определить Ваш ip адрес"


wolcha

Вопрос

Здравствуйте! Помогите решить проблему пожалуйста. Есть форум 3.1.4 У одного из пользователей (Беларусь) при заходе на форум появляется сообщение "не удается определить Ваш ip адрес" По интернету порыл, примерное решение нашёл, но при установленном фиксе не работает авторизация (новый пользователь не может авторизоваться, а я не могу выйти из аккаунта)

Для решения использовал данные отсюда

support.ihc.ru/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=184

так же читал вот это сообщение - не помогает

 

Song:
Симтомы: некоторые пользователи не могут попасть на ваш форум, вместо отображения страницы у них появляется надпись: "Could not determine your IP address" ("Невозможно определить ваш IP адрес").

Причина:
она чаще всего состоит в том, что у этих пользователей между их компьютером и интернетом есть кеширующий неправильно настроенный прокси, который отдаёт "на улицу" неправильные заголовки. В частности неправильно отдаётся заголовок X_FORWARDED_FOR, в котором передаётся IP адрес за роутером. А анализ этого заголовка включен на вашем форуме. IP адрес передаётся пустой (что и вызывает ошибку) или передаются "бессмысленные" IP адреса, такие как 10.0.0.*, 192.168.0.* и др.

Исправление: как уже отмечалось, это проблема этого конкретного пользователя. Со своей стороны Вы можете выключить анализ этого заголовка. Сделать это можно в:

Админ-центр -> Системные настройки -> Все настройки форума -> Безопасность -> Включить получение IP-адресов из X_FORWARDED_FOR? -> "Нет".

Однако, считаем нужным вас предупредить, что при выключении данной опции возможны визуальные неудобства в определении IP адресов и возможно ошибки в авторизации в некоторых случаях, например, если посетители вашего форума из локальной сети или из корпоративного прокси.

Примечания:
1) Данная проблема появилась после того как была закрыта SQL IP инъекция: SQL-инъекция в IP адресе
2) Аналогичная проблема возникает при настройке nginx и PHP в fast-cgi при использовании настроек FCGI по умолчанию. Более подробно о проблемах с nginx можно почитать http://www.zu1us.ru/...5/nginx-vs-ipb/

 

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Все, я вас раскусил.
У вас сервер слушает по ipv6

forum.wolcha.ru
Addresses:  2a03:6f00:1::5c35:7be7
          92.53.123.231

А функция проверки в IPB 3.1 такая:
 

                        if ( ipsRegistry::$settings['xforward_matching'] ) //Этот блок работает только при включенной опции Включить получение IP-адресов из X_FORWARDED_FOR
			{
				foreach( array_reverse( explode( ',', my_getenv('HTTP_X_FORWARDED_FOR') ) ) as $x_f ) 
//В строке через запятую идут все прокси каскадом. перебирает начиная с последнего, все похожее на IP добавляется в массив
				{
					$x_f = trim($x_f);

					if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $x_f ) )
					{
						$addrs[] = $x_f;
					}
				}
//Добавление в массив всех остальных возможных адресов прокси
				$addrs[] = my_getenv('HTTP_CLIENT_IP');
				$addrs[] = my_getenv('HTTP_X_CLUSTER_CLIENT_IP');
				$addrs[] = my_getenv('HTTP_PROXY_USER');
			}
//добавление в массив обычной переменно адреса клиента
			$addrs[] = my_getenv('REMOTE_ADDR');

			//-----------------------------------------
			// Do we have one yet?
			//-----------------------------------------

			foreach ( $addrs as $ip )//перебираем полученный на предыдущем шаге массив в поисках первого нормального адреса.
			{
				if ( $ip )
				{
					preg_match( '/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/', $ip, $match );

					self::instance()->ip_address = $match[1].'.'.$match[2].'.'.$match[3].'.'.$match[4];//присваиваем адрес переменной

					if ( self::instance()->ip_address AND self::instance()->ip_address != '...' )//если получилось, то хватит
					{
						break;
					}
				}
			}

			//-----------------------------------------
			// Make sure we take a valid IP address
			//-----------------------------------------

			if ( ( ! self::instance()->ip_address OR self::instance()->ip_address == '...' ) AND ! isset( $_SERVER['SHELL'] ) AND $_SERVER['SESSIONNAME'] != 'Console' )
//если адреса так и нету и мы не в локальной консоли, то ошибка
			{
				if ( ! defined('IPS_IS_SHELL') OR ! IPS_IS_SHELL )
				{
					print "Не удалось определить ваш IP адрес";//Ваше сообщение об ошибке
					exit();
				}
			}

На всех этапах код хочет найти DDD.DDD.DDD.DDD , а у нас ::ffff:HEX:HEX в лучшем случае, а то и полноценный IPv6.

Надо или отцепить IPv6 от апача или дописывать функцию, чтобы она как-то конвертировала адрес. Хотя, если там нативный ipv6, то адрес никак не сконвертировать.

  • Лайк 1
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Приветствую.

 

для начала надо выяснить, как работает PHP. Это либо связка nginx + fastcgi, либо apache + modphp, либо nginx + apachemodphp. Посмотреть можно в админке, кликнув по вкладке поддержка. Там после версии php в скобках будет указано как запущен php. Рядом будет ссылка на phpinfo() , а в нем параметры GATEWAY_INTERFACE, SERVER_SOFTWARE, SERVER_NAME, SERVER_ADDR, REMOTE_ADDR .

При связках с фронтендом REMOTE_ADDR может быть 127.0.0.1 .

Для дальнейшего гадания от вас нужны ответы на 2 вопроса. 1.Какая связка используется у вас на сервере? 2.Определяется ли REMOTE_ADDR правильно или там локальный 127.0.0.1?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Приветствую.

 

для начала надо выяснить, как работает PHP. Это либо связка nginx + fastcgi, либо apache + modphp, либо nginx + apachemodphp. Посмотреть можно в админке, кликнув по вкладке поддержка. Там после версии php в скобках будет указано как запущен php. Рядом будет ссылка на phpinfo() , а в нем параметры GATEWAY_INTERFACE, SERVER_SOFTWARE, SERVER_NAME, SERVER_ADDR, REMOTE_ADDR .

При связках с фронтендом REMOTE_ADDR может быть 127.0.0.1 .

Для дальнейшего гадания от вас нужны ответы на 2 вопроса. 1.Какая связка используется у вас на сервере? 2.Определяется ли REMOTE_ADDR правильно или там локальный 127.0.0.1?

Вот что выдрал - не знаю правильно ли.

 

GATEWAY_INTERFACE     CGI/1.1

_SERVER["SERVER_SOFTWARE"]    Apache/2.2.24

   SERVER_NAME forum.wolcha.ru

_SERVER["SERVER_ADDR"]    127.0.0.1

_SERVER["REMOTE_ADDR"]    95.24.83.100

Версия PHP     5.3.18 (apache2handler)

Изменено пользователем wolcha
Ссылка на комментарий
Поделиться на других сайтах

  • 0

А

HTTP_X_FORWARDED_FOR

HTTP_X_FORWARDED_PROTO

HTTP_X_REAL_IP

есть?

А 95.24.83.100 это адрес вашей машины или какого-то промежуточного сервера?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

А

HTTP_X_FORWARDED_FOR

HTTP_X_FORWARDED_PROTO

HTTP_X_REAL_IP

есть?

А 95.24.83.100 это адрес вашей машины или какого-то промежуточного сервера?

Мне говорит яша вот что

Ваш IP-адрес

 

IPv4:

95.24.83.100

 

далее по пунктам вот как

HTTP_X_REAL_IP 95.24.83.100 HTTP_X_FORWARDED_FOR 95.24.83.100

в настройках установлено Разрешить X_FORWARDED_FOR? - нет (других вариантов с X_FORWARDED_FOR не нашел )

Изменено пользователем wolcha
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Все, я вас раскусил.

У вас сервер слушает по ipv6

Надо или отцепить IPv6 от апача или дописывать функцию, чтобы она как-то конвертировала адрес. Хотя, если там нативный ipv6, то адрес никак не сконвертировать.

Т.е это нужно хостеру писать? Это реально, что бы сервер переключить на прослушку IPv4?

Изменено пользователем wolcha
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Возможно, что достаточно на стороне регистратора домена убрать из зоны IPv6 адреса.

  • Лайк 1
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.