Поиск по сайту:

Как контролировать веб-трафик с помощью Squid Cache и маршрутизатора Cisco в Linux


Одной из важных задач в сети является контроль и управление трафиком веб-серфинга персонала. Существует множество решений, которые могут решить эту проблему, одно из лучших решений — использование кэша squid на машине с Linux. Squid может проверять, ограничивать и кэшировать поток веб-трафика из одной сети в другую, например, из локальной сети в Интернет.

Существует несколько способов перенаправления веб-запросов клиента на компьютер Squid. В этой статье мы покажем вам, как перенаправить веб-трафик с маршрутизатора CISCO на компьютер Squid Cache с использованием протокола WCCP.

На рисунке ниже показан пример базового сценария.

Как вы видите на рисунке выше, весь веб-трафик клиента сначала поступает на Cisco Router (это их шлюз по умолчанию), затем маршрутизатор автоматически перенаправляет пакеты на машину squid, теперь squid может играть свою роль, основные роли кэширование веб-содержимого, ограничение доступа на основе доменов, временных интервалов, IP-адресов, размера файлов и т. д.

Мы рассмотрим конфигурацию этого сценария в два основных этапа: сначала мы должны установить и настроить squid и Linux, затем настроить маршрутизатор для перенаправления пакетов веб-трафика в squid с использованием протокола WCCP.

Тестовая среда

В этом сценарии я использую CENTOS 6.5 в качестве сервера LINUX и Cisco 2691 в качестве системы маршрутизатора.

Operating System: CENTOS 6.5
Application: Squid
Router: Cisco 2691

Шаг 1. Установка Squid Cache

Squid доступен в репозитории по умолчанию CENTOS, мы сначала устанавливаем его с помощью прекрасной команды yum, затем запускаем их службы и, наконец, устанавливаем автоматический запуск службы squid.

yum -y install squid
service squid start
chkconfig squid on

Шаг 2. Подготовка кэша Squid

Теперь нам нужно изменить некоторые параметры поведения операционной системы Centos по умолчанию: нам нужно включить пересылку пакетов и отключить фильтр обратного пути (RPF), мы включаем пересылку пакетов, чтобы позволить Centos действовать как прозрачный сервер пересылки (например, маршрутизатор).

Позвольте мне объяснить более подробно: когда трафик попадает в Centos, он имеет адреса источника и назначения, например, когда клиент вводит www.example.com в своем браузере, генерируется пакет http-запроса, и он иметь исходный IP-адрес клиентского компьютера (например, 192.168.1.20) и IP-адрес назначения сервера example.com (например, 2.2.2.2).

Таким образом, когда пакет, полученный Centos, он обнаруживается как неправильный пакет, поскольку IP-адрес Centos не является адресом назначения пакета, по соображениям безопасности Centos отбрасывает пакет, но мы хотим, чтобы squid действовал в прозрачном режиме. Мы сообщаем об этой ситуации Centos, включив зелье пересылки пакетов.

Затем мы должны отключить фильтрацию обратного пути, чтобы позволить centos принимать пакеты, которые недоступны для машины squid, или пакеты, которые не имеют IP-адреса в той же подсети машины squid.

nano /etc/sysctl.conf
net.ipv4.ip_forward = 1 #set to 1 for enable the packet forwarding feature
net.ipv4.conf.default.rp_filter = 0 # set to 0 for disable the reverse path filter behavior

Далее нам нужно создать интерфейс GRE на машине CENTOS. Для чего?? Позвольте мне объяснить подробнее: протокол WCCP работает через туннель GRE, это означает, что языком между маршрутизатором и Squid является GRE, поэтому у centos должен быть интерфейс GRE для De- инкапсулировать пакеты GRE.

Нам нужно создать файл конфигурации для интерфейса GRE по пути «/etc/sysconfig/network-script/ifcfg-gre0».

Введите приведенные ниже коды в файл конфигурации ifcfg-gre0.

DEVICE=gre0
BOOTPROTO=static
IPADDR=10.0.0.2         #unused ip address in your network
NETMASK=255.255.255.252
ONBOOT=yes
IPV6INIT=no

После создания интерфейса GRE нам необходимо перезапустить сетевую службу.

service network restart

Шаг 3. Настройка кэша Squid

Нам нужно указать squid принимать пакеты WCCP от маршрутизатора. Введите приведенные ниже коды в файл /etc/squid/squid.conf.

http_port 3128 intercept                 # Define SQUID listening port
wccp2_router 192.168.1.254          #ip address of the router
wccp2_forwarding_method gre
wccp2_return_method gre
wccp2_service standard 0

Сохраните файл конфигурации и перезапустите службу squid.

service squid restart

Squid прослушивает пакеты на порту 3128, но номер порта назначения нашего пакета — 80, поэтому для изменения порта назначения 80 на 3128< нам нужно создать правило NAT на интегрированном брандмауэре CENTOS (с именем iptable).

iptables -t nat -A PREROUTING -i gre0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -j MASQUERADE

Шаг 4. Конфигурации маршрутизатора Cisco

Сначала нам нужно включить WCCP на маршрутизаторе Cisco.

R1(config)# ip wccp version 2
Then we must use an ACL for introducing SQUID cache machine to router
R1(config)# ip access-list standard SQUID-MACHINE
R1(config-std-nacl)# permit host 192.168.1.10

Затем мы определяем еще один список доступа для двух разных целей: во-первых, мы должны исключить перенаправление трафика SQUID по протоколу WCCP (если нет, мы попадаем в бесконечный цикл!!), во-вторых, мы определяем какой трафик LAN мы хотим пропускать через WCCP и SQUID.

R1(config)#ip access-list LAN-TRAFFICS
R1(config-ext-nacl)#deny ip host 192.168.1.10 any                            #Prevent SQUID to get in loop
R1(config-ext-nacl)#permit tcp 192.168.1.0 0.0.0.255 any equal www           #define LAN Traffics

После создания списка доступа мы должны настроить протокол WCCP на маршрутизаторе.

R1(config)# ip wccp web-cache redirect-list LAN-TRAFFIC group-list SQUID-MACHINE

Все готово к последнему шагу: мы должны сообщить маршрутизатору, в каком интерфейсе/интерфейсах он должен перенаправлять трафик, используя их конфигурацию WCCP.

R1(config)#interface fastEthernet 0/0
R1((config-if)# ip wccp web-cache redirect in

Краткое содержание

Пришло время свести все команды и тексты в несколько строк для лучшего понимания. В соответствии со сценарием мы перенаправляем пакеты веб-серфинга сотрудников (то есть на TCP-порт 80) с РОУТЕРА (то есть шлюза по умолчанию клиенты) к кэш-машине Squid по протоколу WCCP.

Все эти процессы происходили незаметно, и на стороне клиента не требуется никакой дополнительной настройки. Таким образом, мы можем контролировать и устанавливать политики веб-трафика в локальной сети. Например, мы можем получить доступ к веб-серфингу всего за ограниченное время, ограничить максимальный размер загрузки, определить собственный черный и белый списки, создать полные отчеты об использовании интернет-активности и т. д.

Одним из интересных фактов в этом сценарии является то, что когда машина Squid выходит из строя, маршрутизатор обнаруживает эту проблему и прекращает перенаправлять пакеты на нее, так что вы можете наслаждаться нулевым временем простоя в вашей сети.

Если у вас есть какие-либо вопросы относительно этой статьи, пожалуйста, оставьте ответ в поле для комментариев ниже.