Подсети хостинга Hetzner Online GmbH (AS24940, AS213230)
Подсети хостинга Hetzner Online GmbH (AS24940, AS213230) — Крупнейший немецкий хостинг-провайдер и дата-центр (Falkenstein, Nuremberg, Helsinki, Ashburn). Из-за низкой стоимости аренды серверов и безлимитного скоростного трафика инфраструктура Hetzner является главным в Европе источником автоматических парсеров контента, скрейперов цен интернет-магазинов, спам-ботов, краулеров на Scrapy/Puppeteer/Selenium и сканеров уязвимостей. В access-логах боты из Hetzner часто маскируются под Googlebot или YandexBot.
1. Общие сведения и профиль сетевой активности
Диапазоны адресов закреплены за инфраструктурой AS24940 (HETZNER-AS), AS213230. Входящий трафик из этих сетей исходит от серверных виртуальных машин (VPS), контейнеров и выделенных серверов. Живые пользователи интернета не используют серверные IP-адреса для веб-серфинга (за редким исключением частных VPN-туннелей). По статистике AntiBotCore WAF, свыше 90–95% запросов из подсетей Hetzner Online к публичным сайтам являются автоматизированными скриптами: парсерами цен конкурентов, скрейперами контента, краулерами на базе Selenium/Puppeteer, спам-ботами и сканерами уязвимостей.
Рекомендация по защите сайта:
Если ваш ресурс предназначен для конечных пользователей (e-commerce, медиа, доска объявлений) и не предоставляет публичный API для интеграций, ограничение доступа к данным подсетям снижает паразитную нагрузку на базу данных и веб-сервер на 30–70% без потерь в реальном трафике. Если вы используете собственные серверы в Hetzner Online для CRM или выгрузок, добавьте персональные IP в список исключений перед блокировкой.
2. Диапазоны IPv4 (CIDR)
Актуальный перечень IPv4-подсетей провайдера для добавления в правила блокировки или ограничения:
| Подсеть (CIDR) | Сетевая маска | Количество IP-адресов | Действие |
|---|---|---|---|
| 65.108.0.0/16 | 255.255.0.0 | 65 536 | |
| 65.109.0.0/16 | 255.255.0.0 | 65 536 | |
| 95.216.0.0/16 | 255.255.0.0 | 65 536 | |
| 95.217.0.0/16 | 255.255.0.0 | 65 536 | |
| 116.202.0.0/16 | 255.255.0.0 | 65 536 | |
| 116.203.0.0/16 | 255.255.0.0 | 65 536 | |
| 135.181.0.0/16 | 255.255.0.0 | 65 536 | |
| 136.243.0.0/16 | 255.255.0.0 | 65 536 | |
| 138.201.0.0/16 | 255.255.0.0 | 65 536 | |
| 144.76.0.0/16 | 255.255.0.0 | 65 536 | |
| 148.251.0.0/16 | 255.255.0.0 | 65 536 | |
| 159.69.0.0/16 | 255.255.0.0 | 65 536 | |
| 162.55.0.0/16 | 255.255.0.0 | 65 536 | |
| 168.119.0.0/16 | 255.255.0.0 | 65 536 | |
| 176.9.0.0/16 | 255.255.0.0 | 65 536 | |
| 178.63.0.0/16 | 255.255.0.0 | 65 536 | |
| 188.40.0.0/16 | 255.255.0.0 | 65 536 | |
| 195.201.0.0/16 | 255.255.0.0 | 65 536 | |
| 213.133.96.0/19 | 255.255.224.0 | 8 192 | |
| 213.239.192.0/18 | 255.255.192.0 | 16 384 | |
| 49.12.0.0/16 | 255.255.0.0 | 65 536 | |
| 49.13.0.0/16 | 255.255.0.0 | 65 536 | |
| 88.198.0.0/16 | 255.255.0.0 | 65 536 | |
| 88.99.0.0/16 | 255.255.0.0 | 65 536 | |
| 78.46.0.0/15 | 255.254.0.0 | 131 072 | |
| 157.90.0.0/16 | 255.255.0.0 | 65 536 |
3. Диапазоны IPv6 (CIDR)
Для веб-серверов с активированным IPv6 добавьте следующие диапазоны:
| IPv6 подсеть (CIDR) | Длина префикса | Действие |
|---|---|---|
| 2a01:4f8::/32 | 32 бит | |
| 2a01:4f9::/32 | 32 бит |
4. Проверка подлинности (Reverse DNS / PTR)
rDNS запрос возвращает доменное имя в зоне *.your-server.de или *.hetzner.com. Запросы с заголовком Googlebot или YandexBot из подсетей Hetzner являются 100% спуфингом (подделкой), так как поисковые системы никогда не используют арендованные VPS в Hetzner для индексации.
# 1. Получаем PTR запись проверяемого IP:
$ dig -x <IP-АДРЕС> +short
# 2. Проверяем прямую A-запись полученного хоста:
$ dig <ПОЛУЧЕННЫЙ_ХОСТ> +short
# Если возвращенный хост оканчивается на *.your-server.de, *.hetzner.com — запрос исходит из серверного пула хостинга.
# Любой поисковый User-Agent (YandexBot, Googlebot) с такого адреса является подделкой (spoofing).
5. Конфигурации для веб-серверов
Используйте готовые директивы для блокировки или ограничения трафика с подсетей данного хостинга:
# Поместите в блок server { ... } или location / { ... }
deny 65.108.0.0/16;
deny 65.109.0.0/16;
deny 95.216.0.0/16;
deny 95.217.0.0/16;
deny 116.202.0.0/16;
deny 116.203.0.0/16;
deny 135.181.0.0/16;
deny 136.243.0.0/16;
deny 138.201.0.0/16;
deny 144.76.0.0/16;
deny 148.251.0.0/16;
deny 159.69.0.0/16;
deny 162.55.0.0/16;
deny 168.119.0.0/16;
deny 176.9.0.0/16;
deny 178.63.0.0/16;
deny 188.40.0.0/16;
deny 195.201.0.0/16;
deny 213.133.96.0/19;
deny 213.239.192.0/18;
deny 49.12.0.0/16;
deny 49.13.0.0/16;
deny 88.198.0.0/16;
deny 88.99.0.0/16;
deny 78.46.0.0/15;
deny 157.90.0.0/16;
deny 2a01:4f8::/32;
deny 2a01:4f9::/32;
# Или через модуль geo (контекст http):
geo $is_bad_hetzner {
default 0;
65.108.0.0/16 1;
65.109.0.0/16 1;
95.216.0.0/16 1;
95.217.0.0/16 1;
116.202.0.0/16 1;
116.203.0.0/16 1;
135.181.0.0/16 1;
136.243.0.0/16 1;
138.201.0.0/16 1;
144.76.0.0/16 1;
# ...
}
<RequireAll>
Require all granted
Require not ip 65.108.0.0/16
Require not ip 65.109.0.0/16
Require not ip 95.216.0.0/16
Require not ip 95.217.0.0/16
Require not ip 116.202.0.0/16
Require not ip 116.203.0.0/16
Require not ip 135.181.0.0/16
Require not ip 136.243.0.0/16
Require not ip 138.201.0.0/16
Require not ip 144.76.0.0/16
Require not ip 148.251.0.0/16
Require not ip 159.69.0.0/16
Require not ip 162.55.0.0/16
Require not ip 168.119.0.0/16
Require not ip 176.9.0.0/16
Require not ip 178.63.0.0/16
Require not ip 188.40.0.0/16
Require not ip 195.201.0.0/16
Require not ip 213.133.96.0/19
Require not ip 213.239.192.0/18
Require not ip 49.12.0.0/16
Require not ip 49.13.0.0/16
Require not ip 88.198.0.0/16
Require not ip 88.99.0.0/16
Require not ip 78.46.0.0/15
Require not ip 157.90.0.0/16
Require not ip 2a01:4f8::/32
Require not ip 2a01:4f9::/32
</RequireAll>
(ip.src in {
65.108.0.0/16 65.109.0.0/16 95.216.0.0/16 95.217.0.0/16
116.202.0.0/16 116.203.0.0/16 135.181.0.0/16 136.243.0.0/16
138.201.0.0/16 144.76.0.0/16 148.251.0.0/16 159.69.0.0/16
162.55.0.0/16 168.119.0.0/16 176.9.0.0/16 178.63.0.0/16
188.40.0.0/16 195.201.0.0/16 213.133.96.0/19 213.239.192.0/18
49.12.0.0/16 49.13.0.0/16 88.198.0.0/16 88.99.0.0/16
78.46.0.0/15 157.90.0.0/16 2a01:4f8::/32 2a01:4f9::/32
})
Создайте Custom Rule в Cloudflare Dashboard: Security → WAF → Custom rules с действием: Managed Challenge (Капча) или Block (Блокировка).
# Блокировка входящего трафика подсетей хостинга:
iptables -A INPUT -s 65.108.0.0/16 -j DROP
iptables -A INPUT -s 65.109.0.0/16 -j DROP
iptables -A INPUT -s 95.216.0.0/16 -j DROP
iptables -A INPUT -s 95.217.0.0/16 -j DROP
iptables -A INPUT -s 116.202.0.0/16 -j DROP
iptables -A INPUT -s 116.203.0.0/16 -j DROP
iptables -A INPUT -s 135.181.0.0/16 -j DROP
iptables -A INPUT -s 136.243.0.0/16 -j DROP
iptables -A INPUT -s 138.201.0.0/16 -j DROP
iptables -A INPUT -s 144.76.0.0/16 -j DROP
iptables -A INPUT -s 148.251.0.0/16 -j DROP
iptables -A INPUT -s 159.69.0.0/16 -j DROP
# Для массовой загрузки сотен подсетей без замедления используйте ipset:
# ipset create hetzner hash:net
# iptables -I INPUT -m set --match-set hetzner src -j DROP