Способы блокировки IPv6 через файл .htaccess. Избавляемся от ботов на сайте

IPv6 (Internet Protocol version 6) активно распространяется в интернете как замена устаревшего IPv4. Однако бывают случаи, когда администратору сайта необходимо временно или постоянно ограничить доступ по IPv6. Это может быть связано с безопасностью, особенностями хостинга или специфическими настройками.

Блокировка нежелательного трафика и влияние на SEO

Одним из практических применений блокировки IPv6 является защита от ботов, которые автоматически нагуливают профили пользователей для последующей накрутки (ПФ). На сайтах с высоким уровнем трафика, особенно с активным притоком с IPv6-адресов, можно столкнуться с ухудшением поведенческих факторов. Это, в свою очередь, способно негативно сказаться на показателях поискового трафика, так как поисковые системы учитывают качество взаимодействия пользователей с сайтом. Поэтому блокировка подозрительного IPv6-трафика может стать действенным инструментом для защиты поведенческой репутации сайта.

Поисковый трафик на протяжении 6 мес не давал показателей, несмотря на проводимые работы с сайтом. 
Поисковый трафик на протяжении 6 мес не давал показателей, несмотря на проводимые работы с сайтом. 

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

Один из способов блокировки IPv6-адресов — использование файла .htaccess на сервере Apache. Ниже рассмотрены основные методы.

1. Блокировка по диапазону IPv6-адресов

IPv6-адреса можно блокировать по определённым диапазонам с помощью директивы Deny from. Например:

<RequireAll> Require all granted Require not ip 2001:db8::/32 </RequireAll>

Этот код запрещает доступ ко всем пользователям с IPv6-адресами в диапазоне 2001:db8::/32. Аналогично можно указывать другие диапазоны.

2. Полная блокировка всех IPv6-адресов

Чтобы заблокировать весь IPv6-трафик, можно использовать регулярные выражения в связке с модулем mod_rewrite:

RewriteEngine On RewriteCond %{REMOTE_ADDR} ^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$ RewriteRule ^ - [F]

Здесь используется проверка, подходит ли IP-адрес под формат IPv6. При совпадении доступ запрещается (код ответа 403).

3. Комбинированный подход с логированием

Можно не только блокировать IPv6-доступ, но и вести лог событий для анализа:

RewriteEngine On RewriteCond %{REMOTE_ADDR} ^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$ RewriteRule .* - [F,E=BLOCKED_IPV6:1] SetEnvIf BLOCKED_IPV6 1 ipv6_blocked CustomLog logs/ipv6_block.log common env=ipv6_blocked

Этот способ позволяет записывать попытки IPv6-доступа в отдельный лог-файл ipv6_block.log.

4. Учет обратной совместимости и ограничений

Важно помнить:

  • Поддержка директив зависит от конфигурации Apache и доступных модулей.
  • Некоторые хостинги могут не поддерживать .htaccess или работу mod_rewrite.
  • Вместо блокировки можно настроить переадресацию IPv6-пользователей на специальную страницу.

5. Отключение IPv6 через DNS

Ещё один способ ограничения IPv6-доступа заключается в удалении AAAA-записей из DNS-зоны сайта. AAAA-запись указывает IPv6-адрес хоста. При её отсутствии устройства, поддерживающие IPv6, включая мобильные телефоны, будут автоматически обращаться к сайту по протоколу IPv4 через A-запись. Такой подход не требует настроек на стороне сервера и является эффективным решением при необходимости быстрой деактивации IPv6-подключений.

В заключении

Файл .htaccess предоставляет гибкие средства для управления доступом, включая возможность блокировки IPv6. В зависимости от задач и инфраструктуры можно выбрать оптимальный способ: от простой блокировки диапазонов до логирования и кастомной обработки трафика. Перед применением любых изменений рекомендуется протестировать конфигурацию в безопасной среде.

1
3 комментария