У меня возникла ситуация: обнаружено более 13 000 краулеров, а трафик базы данных вырос до небес. Очевидно, что кто-то парсит наш форум, но я не уверен, как определить IP-адрес и предпринять меры, поскольку запросы идут через DNS CloudFlare.
Есть ли у кого-то идеи, как это сделать?
Я хотел бы настроить автоматическое решение для ограничения скорости, которое будет выявлять агрессивное сетевое поведение, а затем либо ограничивать скорость для таких клиентов, либо отключать их на определённый период времени.
Я должен упомянуть, что у меня возникла серьёзная проблема: доступ к базе данных (я использую отдельный сервер БД на том же сайте) постоянно находится в диапазоне 13–20 Мбит/с. Скорость резко возросла, когда количество краулеров достигло пика, и с тех пор уже почти две недели не снижается. Панель управления сервером показывает, что трафик в это же время вырос до абсурдных значений и не возвращается к норме. Если такая ситуация сохранится, серверы могут исчерпать доступную полосу пропускания.
Как вы, возможно, помните, я подумывал о том, чтобы в данный момент сократить потребление трафика, просто изменив всё так, чтобы использовались внутренние приватные IP-адреса, поскольку это хотя бы остановит получение мною крупных счетов.
Я также заметил кое-что ещё необычное. Я изменил подключение к базе данных с публичного IP-адреса на приватный, чтобы не так быстро расходовать месячное квоту на передачу данных, но на сервере базы данных я ожидал видеть только подключения, осуществляемые с приватного IP-адреса от сервера Discourse в Docker. Сейчас я действительно вижу трафик с локального приватного IP-адреса, но всё ещё наблюдаю несоразмерно большое количество трафика, поступающего с публичного IP-адреса, из-за чего месячная квота всё ещё быстро расходуется.
Я искал и искал как публичный IP-адрес, так и имя хоста сервера базы данных на сервере Discourse в Docker, но нигде не мог их найти. Даже если я захожу в приложение (./launcher enter app) и выполняю команду env | grep DB, я вижу правильный ПРИВАТНЫЙ IP-адрес для используемой здесь локальной сети. Я могу выполнить поиск через файловую систему, но просто не нахожу тех вхождений, которые ожидал бы увидеть.
Есть ли у вас какие-либо идеи, почему Discourse или образ Docker всё ещё могут обращаться к неправильному IP-адресу? Я просто не могу понять, откуда на сервере Discourse берётся весь этот трафик с публичного IP-адреса.