Создание небольшой локальной сети с помощью Ubuntu: настраиваем кеширующий прокси-сервер squid3
В заключительной, третьей, части цикла постов “Создание небольшой локальной сети с помощью Ubuntu” я кратко опишу процедуру настройки кэширующего прокси-сервера Squid3 для снижения нагрузки на канал в нашей локальной сети.
Установка прокси-сервера squid3 производится командой:
sudo apt-get install squid3
Пора создать копию конфигурационного файла squid(на случай, если мы что-то напутаем в нашем конфигурационном файле). Всегда делайте копию конфигурационных фалов, перед тем, как начнёте активно их править.
sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.orig
sudo chmod 400 /etc/squid3/squid.conf.orig
А теперь открываем в любимом редакторе наш конфигурационный файл(вместо gedit укажите ваш любимый редактор):
sudo gedit /etc/squid3/squid.conf
И приводим его к такому виду:
# Списки доступа рекомендованные по умолчанию
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
# Список доступа для нашей сети our_network, указывающий IP-сети/маску подсети в качестве источника соединений
acl our_network src 192.168.0.0/24
# Списки прав доступа SSL_ports и Safe_ports, в которые добавляем соответствующие порты
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 8080 # http
acl Safe_ports port 443 # https
# Список CONNECT описывает метод соединения
acl CONNECT method CONNECT
# Разрешаем доступ к cachemgr только с localhost
http_access allow manager localhost
# Запрещаем доспуп к cachemgr из других сетей(в целях безопасности)
http_access cachemgr deny manager
# Запрещаем соединения к небезопасным портам
http_access deny !Safe_ports
# Запрещаем соединения к портам, не входящим в список SSL_ports
http_access deny CONNECT !SSL_ports
# Запрещаем доступ к web-серверам, работающим на localhost
http_access deny to_localhost
# Разрешаем доступ в интернет через наш прокси с localhost
http_access allow localhost
# Разрешаем доступ в интернет через наш прокси с нашей сети our_network
http_access allow our_network
# Запрещаем доступ к нашему прокси-серверу из всех других сетей(кроме указанных выше)
http_access deny all
# squid будет слушать порт 3128 в режиме intercept(данный режим позволяет принимать
# запросы перенаправленные с 80-го порта на 3128-ый порт)
http_port 3128 intercept
# Указываем директорию для кэшируемой информации
cache_dir ufs /var/spool/squid3 100 16 256
# Храним coredumps в каталоге первого уровня, а не в его подкаталогах
coredump_dir /var/spool/squid3
# Задаём шаблоны refresh_pattern
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
# Задаём отображаемое в сообщениях об ошибках, и прочих сообщениях, имя хоста
visible_hostname my_host
Перезагружаем squid командой:
service squid3 restart
Добавляем в NAS правило для заворачивания пакетов с портов 80 и 8080 на прокси-сервер(как прописать правила для перенаправления пакетов я описывал в первой части данного цикла постов о настройке сети):
iptables -t nat -A PREROUTING -i eth1 ! -d 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128
Ну вот, прокси-сервер с кэшированием запросов настроен. Конечно, вы можете ещё много чего настроить, ведь squid - необычайно мощный инструмент, но главное что основы работы с данным прокси-сервером вы уже освоили. Можете теперь с гордостью говорить, что вы - настоящий админ локалхоста и прилегающих к нему угодийИ радуемся, что нагрузка на интернет-канал теперь будет немного ниже благодаря кэшированию:)