Настройка MAXMIND для обратных IP-запросов

Что такое MAXMIND и зачем он мне нужен?

Discourse использует MAXMIND для предоставления географической информации при обратном поиске по IP-адресу.

Без базы данных Maxmind вы увидите что-то вроде этого:

Или, возможно, вы замечали это сообщение, появляющееся при пересборке вашего контейнера:

Загрузка базы данных IP-адресов MaxMind требует идентификатора аккаунта и лицензионного ключа.
Пожалуйста, установите переменные DISCOURSE_MAXMIND_ACCOUNT_ID и DISCOURSE_MAXMIND_LICENSE_KEY. Дополнительные сведения см. по адресу https://meta.discourse.org/t/configure-maxmind-for-reverse-ip-lookups/173941.

Почему это важно?

Модераторам часто полезно видеть, откуда пользователь входит в систему, чтобы определить, является ли он тем (и находится ли там), за кого себя выдает, или для диагностики проблем на вашем сайте. («О, мы часто сталкиваемся с проблемами у Special-ISP».)

Кроме того, начиная с версии 2.2.0.beta4, Discourse также использует эту информацию для уведомления администраторов, если вход выполнен из нового местоположения. Без базы данных Maxmind Discourse не может предоставлять такие уведомления.

Что будет, если я не создам аккаунт MaxMind и не сгенерирую лицензионный ключ?

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

Как создать аккаунт MaxMind и получить идентификатор аккаунта и лицензионный ключ?

Актуальные инструкции см. на странице MaxMind: Generate a license key. Однако вам необходимо:

  • Перейти на страницу регистрации GeoLite2.
  • После входа в систему сгенерировать лицензионный ключ на вкладке Управление ключами лицензии в левой панели навигации. Создайте новый ключ и скопируйте идентификатор аккаунта и лицензионный ключ. Если вы его потеряете, вам придется сгенерировать новый.

Затем добавьте этот ключ в секцию ENV вашего файла app.yml, добавив строки вида:

  DISCOURSE_MAXMIND_ACCOUNT_ID: ваш-идентификатор-аккаунта
  DISCOURSE_MAXMIND_LICENSE_KEY: ваш-ключ

Или введите их при использовании discourse-setup, когда система попросит об этом.

Примечания для пользователей IPv6

Стандартная установка не поддерживает IPv6 полностью «из коробки». Если у вас настроен сервер с поддержкой IPv6 и вам нужна информация MaxMind для адресов IPv6, убедитесь, что Discourse получает реальный IP-адрес пользователя. Обычно это делается с помощью внешнего прокси, передающего удаленный IP-адрес в Discourse. Это требует более глубоких знаний системного администрирования, чем стандартная установка.

31 лайк

@pfaffman, URL в разделе «Мои ключи лицензии» содержит ваш идентификатор аккаунта в MaxMind, поэтому он будет работать только для вас :wink:

3 лайка

У меня работает! :winking_face_with_tongue:

Но забавно то, что за 3 года никто другой не жаловался! Это вики, так что вы можете это исправить. Я попробую обновить, когда доберусь до компьютера, если успею вспомнить.

2 лайка

Показывает, сколько людей на самом деле читают такие страницы :grin:

Я отредактировал страницу :nerd_face:

3 лайка

Точно!? И я потратил немало времени на его создание. Не знаю, как я упустил тот факт, что ссылка работала только для меня, но, видимо, необходимость входа в систему меня отвлекла, и, возможно, многих других тоже.

2 лайка

Просто вопрос из любопытства, @evert, вы действительно хотели оставить эти скобки? Если да, то не выглядело бы это лучше в виде кнопки?

Пример кнопки

Управление ключами лицензии

<kbd>Управление ключами лицензии</kbd>
3 лайка

Конечно, почему бы и нет? :+1:t2:

2 лайка

Насколько я могу судить, всё в порядке

image

но у всех пользователей указано местоположение «неизвестно»

Буду признателен за любую помощь.

Вам нужно удалить символ # в начале строки и пересобрать проект. Символ # делает всю строку комментарием в файле YAML.

5 лайков

Спасибо, просто написать и выйти или тоже пересобрать?

Вам нужно пересобрать. В противном случае Discourse не увидит изменения в app.yml.

4 лайка

Спасибо, готово и работает :hugs:

2 лайка

Для большинства здесь это, вероятно, и так очевидно, но пользователь, использующий VPN, может генерировать больше предупреждений, чем другие. Это лишь сигнал для администраторов и не обязательно указывает на злонамеренного пользователя.

2 лайка

Отлично! Спасибо за этот урок.

1 лайк

Извините,
Когда Discourse выполняет поиск по IP (обратный IP-адрес) для панели администратора, он использует оффлайн-базу GeoIP или каждый раз запрашивает внешний API?

Спасибо!!

1 лайк

Для справки: я предпочитаю выполнять поиск по IP-адресам офлайн, указав Discourse на локальный файл GeoLite2-City.mmdb, вместо вызова внешнего API.

Но IPv6 не поддерживается? Может, пора перенаправить этот трафик на v4 ):

(Удаляю свой вопрос здесь и публикую его в разделе Поддержка: Ошибка MaxMind 401 — есть лицензионный ключ, но не могу скачать)