Как заблокировать диапазон 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. Пример использования
- В админке WordPress перейдите на страницу плагина Advanced Visitor Tracker.
- В поле для ручного ввода IP введите диапазон, например:
2a13:8580::/32
. - Нажмите кнопку Заблокировать.
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
).
Важные моменты
- Не блокируйте слишком широкие диапазоны: Например, блокировка
/32
может затронуть легитимных пользователей. - Проверяйте логи: Убедитесь, что блокировка не влияет на обычных пользователей.
- Используйте CDN: Если ваш сайт использует Cloudflare или другой CDN, блокируйте диапазоны через их панель управления.
Теперь ваш плагин поддерживает блокировку как одиночных IPv6-адресов, так и целых диапазонов!