Если вы хотите сделать так, чтобы при попытке зайти на заблокированный сайт пользователь видел сообщение о блокировке (например, как у Роскомнадзора), можно использовать DNS-перенаправление или прокси-заглушку через iptables
+ nginx/apache
.
Настроить локальный DNS (например, dnsmasq
), чтобы заблокированные домены перенаправлялись на ваш IP с заглушкой.
# В /etc/dnsmasq.conf добавляем:
address=/заблокированный-сайт.ru/192.168.1.100
Где 192.168.1.100
— IP вашего сервера с веб-заглушкой.
# Перехватываем HTTP-запросы (80 порт) и перенаправляем на локальный веб-сервер
iptables -t nat -A PREROUTING -p tcp --dport 80 -d заблокированный-сайт.ru -j DNAT --to-destination ваш-сервер:80
# Если нужен HTTPS (443 порт), то аналогично:
iptables -t nat -A PREROUTING -p tcp --dport 443 -d заблокированный-сайт.ru -j DNAT --to-destination ваш-сервер:80
server {
listen 80;
server_name заблокированный-сайт.ru;
location / {
return 200 "Доступ к сайту заблокирован по решению администратора";
# Или можно отдавать HTML-страницу:
# root /var/www/blocked;
# index index.html;
}
}
Можно сделать красивую страницу в стиле РКН.
Если у вас стоит Squid, можно настроить deny_info
:
acl blocked_sites dstdomain .rutracker.org .thepiratebay.org
http_access deny blocked_sites
deny_info http://ваш-сервер/blocked.html blocked_sites
И разместить на ваш-сервер/blocked.html
сообщение о блокировке.
Самый простой способ — DNS-подмена (dnsmasq
).
Более надежный — iptables + nginx
(перехват трафика + заглушка).
Для корпоративных сетей — Squid с deny_info
.
Если нужно полное подобие РКН, можно сделать редирект на страницу с объяснением причины блокировки.
Нет комментариев.