Способы перенаправления запросов с заблокированных сайтов на заданную страницу в SQUID

Появилась необходимость настроить в Squid перенаправление на определенный сайт в случае если пользователь пытается зайти на сайт который находится в списке заблокированных. Я нашел для себя несколько способов реализовать данную задачу. Рассмотрим способ мгновенного редиректа на заданный сайт и редирект с отображением страницы  ERR_ACCESS_DENIED (входящую в состав Squid) и через несколько секунд выполнять редирект на заданную страницу.

Сразу хочу предупредить, что выполнить перенаправление на заданную страницу в Squid возможно только при посещении пользователем HTTP сайтов. К сожалению с HTTPS сайтами перенаправление работать не будет.

Проделываться все будет на Squid 3.5.19 (статья по установке) установленным на Ubuntu server 14.04.5 LTS. Но уверен что способы будут работать и на отличных от моих параметров.

Первый способ. Мгновенный редирект на заданную страницу.

Данный способ крайне просто в применении. В данном способе используем директиву deny_info, синтаксис ее выглядит так:

  • deny_info http://… acl — с указанием внешнего сайта для редиректа.
  • deny_info err_access_denied acl — в указанием информ. страниц Squid

Пример использования:

У нас задан acl к файлу со списком запрещенных сайтов

# Путь к черному списку сайтов
acl BlackList dstdomain "/etc/squid/BlackList.txt"

И после правила блокирования сайтов из данного списка, задаем правило перенаправления на нужную нам страницу

# Блокировать запрещенные сайты
http_access deny BlackList
# Страница перенаправления
deny_info http://www.yandex.ru BlackList

Сохраняем конфигурацию и перезапускаем Squid

sudo service squid restart

Теперь если пользователь попытается зайти на заблокированный сайт, то он сразу будет перенаправлен на сайт yandex.ru

Второй способ. Отображением страницы  ERR_ACCESS_DENIED и последующим редиректом на заданную страницу.

Данный способ отличается от первого тем что, пользователь сперва видит страницу err_access_denied и через несколько секунд перенаправляется на заданную нами страницу. Здесь мы не будем использовать директиву deny_info, а пропишем параметры редиректа в самой странице err_access_denied.

Все страницы заготовки Squid находятся тут /usr/share/squid/errors/Russian-koi8-r. Отредактируем страницу ERR_ACCESS_DENIED

sudo nano /usr/share/squid/errors/Russian-koi8-r/ERR_ACCESS_DENIED

Нас интересует параметр <meta> в секции <head></head>, находим строчку:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Приводим к такому виду:

<meta http-equiv="refresh" content="5;http://www.yandex.ru">

Пояснения:

http-equiv="refresh" - Загрузить другой документ в текущее окно браузера.
content="5;http://www.yandex.ru"> - где 5 кол-во секунд и адрес сайта который нужно загрузить.

Сохраняем и проверяем работу. Теперь если пользователь попытается зайти на заблокированный сайт, то он сразу увидит страницу err_access_denied (оповещение что данный сайт в списке блокировки) и через 5 секунд будет перенаправлен на сайт yandex.ru.

 

Понравилась или оказалась полезной статья, поблагодари автора

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (1 голос(ов), в среднем: 4,00 из 5)
Загрузка...

Оставить ответ

20 + четырнадцать =