Как заблокировать диапазон IPv6

Блокировка диапазонов IPv6-адресов требует понимания их структуры. IPv6-адреса состоят из 128 бит, и диапазоны блокируются с использованием масок подсети (CIDR notation). Например, 2a13:8580::/32 блокирует все адреса, начинающиеся с 2a13:8580.


Как заблокировать диапазон IPv6

1. Определите диапазон для блокировки

IPv6-адреса имеют иерархическую структуру. Например:

  • 2a13:8580:a756:ad29:d29d:4ce:8e1f:d0f5
  • 2a13: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. Пример использования

  1. В админке WordPress перейдите на страницу плагина Advanced Visitor Tracker.
  2. В поле для ручного ввода IP введите диапазон, например: 2a13:8580::/32.
  3. Нажмите кнопку Заблокировать.

5. Проверка блокировки

После добавления правила в .htaccess все запросы с IP-адресов, начинающихся на 2a13:8580, будут блокироваться. Например:

  • 2a13:8580:a756:ad29:d29d:4ce:8e1f:d0f5
  • 2a13: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).

Важные моменты

  1. Не блокируйте слишком широкие диапазоны: Например, блокировка /32 может затронуть легитимных пользователей.
  2. Проверяйте логи: Убедитесь, что блокировка не влияет на обычных пользователей.
  3. Используйте CDN: Если ваш сайт использует Cloudflare или другой CDN, блокируйте диапазоны через их панель управления.

Теперь ваш плагин поддерживает блокировку как одиночных IPv6-адресов, так и целых диапазонов!

5/5 - (1 голос)
Поделиться постом:

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *