Как заблокировать диапазон IPv6
Блокировка диапазонов IPv6-адресов требует понимания их структуры. IPv6-адреса состоят из 128 бит, и диапазоны блокируются с использованием масок подсети (CIDR notation). Например, 2a13:8580::/32 блокирует все адреса, начинающиеся с 2a13:8580.
Как заблокировать диапазон IPv6
1. Определите диапазон для блокировки
IPv6-адреса имеют иерархическую структуру. Например:
2a13:8580:a756:ad29:d29d:4ce:8e1f:d0f52a13:8580:24aa:681:c3f4:5bb4:9acf:746e
Оба адреса начинаются с 2a13:8580. Это означает, что они принадлежат одной подсети. Вы можете заблокировать весь диапазон, используя маску /32:
- Диапазон для блокировки:
2a13:8580::/32
2. Блокировка через .htaccess
Для блокировки диапазона IPv6 в .htaccess используйте следующее правило:
# Блокировка диапазона IPv6
Deny from 2a13:8580::/32Это правило заблокирует все IP-адреса, начинающиеся с 2a13:8580.
3. Блокировка через плагин
Чтобы добавить поддержку блокировки диапазонов IPv6 в ваш плагин, нужно доработать функцию avt_block_ip. Вот обновленный код:
// Блокировка IP через AJAX (с поддержкой диапазонов IPv6)
add_action('wp_ajax_avt_block_ip', 'avt_block_ip');
function avt_block_ip() {
if (isset($_POST['ip'])) {
$ip = sanitize_text_field($_POST['ip']);
$htaccess = ABSPATH . '.htaccess';
// Проверяем, является ли IP диапазоном (содержит "/")
if (strpos($ip, '/') !== false) {
// Это диапазон (например, 2a13:8580::/32)
$rule = "\n# Блокировка диапазона IPv6 через Advanced Visitor Tracker\nDeny from " . $ip . "\n";
} elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
// Это одиночный IPv6-адрес
$rule = "\n# Блокировка IPv6 через Advanced Visitor Tracker\nDeny from " . $ip . "\n";
} else {
// Это одиночный IPv4-адрес
$rule = "\n# Блокировка IPv4 через Advanced Visitor Tracker\nDeny from " . $ip . "\n";
}
if (file_put_contents($htaccess, $rule, FILE_APPEND | LOCK_EX)) {
echo "IP $ip успешно заблокирован.";
} else {
echo "Ошибка при блокировке IP.";
}
}
wp_die();
}4. Пример использования
- В админке WordPress перейдите на страницу плагина Advanced Visitor Tracker.
- В поле для ручного ввода IP введите диапазон, например:
2a13:8580::/32. - Нажмите кнопку Заблокировать.
5. Проверка блокировки
После добавления правила в .htaccess все запросы с IP-адресов, начинающихся на 2a13:8580, будут блокироваться. Например:
2a13:8580:a756:ad29:d29d:4ce:8e1f:d0f52a13:8580:24aa:681:c3f4:5bb4:9acf:746e
Как определить маску подсети для блокировки
Если вы хотите заблокировать более узкий диапазон, например, только 2a13:8580:a756::/48, используйте более длинную маску:
/32— блокирует первые 32 бита (например,2a13:8580::/32)./48— блокирует первые 48 бит (например,2a13:8580:a756::/48)./64— блокирует первые 64 бита (например,2a13:8580:a756:ad29::/64).
Важные моменты
- Не блокируйте слишком широкие диапазоны: Например, блокировка
/32может затронуть легитимных пользователей. - Проверяйте логи: Убедитесь, что блокировка не влияет на обычных пользователей.
- Используйте CDN: Если ваш сайт использует Cloudflare или другой CDN, блокируйте диапазоны через их панель управления.
Теперь ваш плагин поддерживает блокировку как одиночных IPv6-адресов, так и целых диапазонов!



