Настройка squid

Материал из ISPWiki
Перейти к: навигация, поиск

Настройка squid для работы с VMmanager и DCImanager. VMmanager и DCImanager для ускорения установки ОС могут использовать кэширующий прокси-сервер.

Он будет кэшировать пакеты, скачиваемые с зеркал, с репозиториев ОС.

Рассмотрим установку squid.


Установка

CentOS 6

yum install squid
chkconfig --add squid

CentOS 7

yum install squid
systemctl enable squid.service

Настройка

Для CentOS настройка выполняется в файле /etc/squid/squid.conf

После настройки для применения параметров необходимо перезапустить squid командой

service squid reload

Для Centos 7

systemctl restart squid.service

Чтобы IP прокси сервера не попал в различные блок-листы, как открытый, необходимо разрешить доступ к нему только с нужных IP (адреса виртуальных машин и выделенных серверов).

Эти адреса задаются через acl

acl install_net src 1.1.1.0/24
acl install_net src 2.2.2.0/24
acl install_net src 1111:2222:3333::4444/64

Ниже в конфиге нужно разрешить доступ с этих сетей, и запретить со всех остальных

http_access allow install_net
http_access deny all

Также нужно разрешить кэшировать большие файлы. Значение по умолчанию не позволит кэшировать архивы ядер ОС и архивы FreeBSD

maximum_object_size 1024 MB

Вот пример конфига, с которым работает VMmanager для squid 3.1:

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
 
acl install_net src 1.1.1.0/24
acl install_net src 2.2.2.0/24
acl install_net src 1111:2222:3333::4444/64
 
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
acl Purge method PURGE
http_access allow localhost Purge
http_access deny Purge
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
 
http_access allow localhost
 
http_access allow install_net
http_access deny all
http_port 3128
cache_dir ufs /var/spool/squid 4096 16 256
 
maximum_object_size 1024 MB
 
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i /mirrorlist.centos.org/      1440    20%     10080
refresh_pattern -i /download.ispsystem.com/     0       20%     30
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern -i repomd.xml   0    0%      0
refresh_pattern -i /repodata\/repomd\.xml/      5    10%      160
refresh_pattern -i /repodata.+gz/ 0    0%      60
refresh_pattern -i (Packages.gz|Release|Release.gpg)$ 0    10%      60
refresh_pattern -i /vmmgr?/ 0    0%      0
refresh_pattern -i /dcimgr?/ 0    0%      0
refresh_pattern -i /install\.5\.sh/ 0    0%      0
refresh_pattern -i /\.treeinfo/ 0    0%      0
refresh_pattern -i /\w+\.lic/ 0    0%      0
refresh_pattern . 0       20%     4320


Примеры конфигурационных файлов смотрите в документации Squid: Configuring Squid

Необходимо учитывать, чтобы на разделе, на котором находится директория из параметра cache_dir было достаточно места. Не меньше 10 Гигабайт. При установке squid директория /var/spool/squid создается автоматически, однако, если перезапуск службы завершается с ошибкой, имеет смысл проверить вывод команды systemctl status squid.service:

squid[21524]: Failed to make swap directory /var/spool/squid: (13) Permission denied

В этом случае создайте директорию:

mkdir /var/spool/squid
chown -R squid:squid /var/spool/squid

Проверка

Для проверки работы скачайте какой-либо файл wget`ом через прокси.

Например, так:

http_proxy=http://127.1.1.1:3128/ wget -O /dev/null http://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz

После посмотрите в лог squid`а. На СentOS - это /var/log/squid/access.log Если всё нормально, там будет такая запись:

1381394282.324  12352 1.1.1.1 TCP_MISS/200 52127893 GET http://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz - DIRECT/2001:6c8:130:800::4 application/x-gzip

При повторном скачивании, TCP_MISS должно замениться на TCP_HIT или TCP_HIT_MEM

1381394328.563    235 1.1.1.1 TCP_HIT/200 52127902 GET http://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz - NONE/- application/x-gzip


Настройка VMmanager (DCImanager)

Нужно прописать в конфиг параметры

VMmanager:

HTTPProxyv4 http://127.1.1.1.1:3128/
HTTPProxyv6 http://[1111:2222:3333::4444]:3128/

DCImanager:

HTTPProxy http://127.1.1.1.1:3128/
HTTPProxyv6 http://[1111:2222:3333::4444]:3128/

указав ваши IP адреса и порты. HTTPProxyv6 нужно указывать, если у Вас есть IPv6.

Важно: Указывать необходимо реальные IP адреса, к которым виртуальная машина или выделенный сервер смогут подключиться. Если прокси-сервер расположен на том же узле, что и VMmanager, нельзя указывать loopback-адрес в качестве параметра HTTPProxyv4 или HTTPProxyv6, так как доступ к этому IP должен быть с любого из узлов кластера.