Настройка squid

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

Иерархия: VMmanager KVM -> Шаблоны операционных систем
VMmanager Cloud -> Шаблоны операционных систем
DCImanager -> Шаблоны операционных систем
DCImanager Enterprise -> Шаблоны операционных систем

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

Установка

Squid должен быть установлен и настроен на мастер-узле кластера.

CentOS 6:

yum install squid
chkconfig --add squid

CentOS 7:

yum install squid
systemctl enable squid.service

Настройка

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

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

CentOS 6:

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

Для кэширования архивов ядер ОС и других больших файлов необходимо изменить ограничение по умолчанию на максимальный размер кэшируемых файлов:

maximum_object_size 1024 MB

Пример конфигурационного файла, с которым работает VMmanager, для squid версии 3.1:

acl install_net src 10.0.0.0/8
acl install_net src 172.16.0.0/12
acl install_net src 192.168.0.0/16
acl install_net src fc00::/7
acl install_net src fe80::/10
 
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 manager proto cache_object 
 
http_access allow manager localhost
http_access deny manager
http_access allow install_net
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
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

Два варианта настройки:

  1. Адрес и порт кэширующего прокси-сервера указать в разделе "Политики" (подробно о разделе "Политики" описано в статье "Настройка_политик_панели_управления) в полях "HTTP proxy для IPv4" и при необходимости использования IPv6 — "HTTP proxy для IPv6";
  2. Адрес и порт кэширующего прокси-сервера указать в конфигурационном файле в параметрах "HTTPProxyv4" и при необходимости использования IPv6 — "HTTPProxyv6".
Например:
HTTPProxyv4 http://127.1.1.1.1:3128/
HTTPProxyv6 http://[1111:2222:3333::4444]:3128/

Настройка DCImanager

Два варианта настройки:

  1. Адрес и порт кэширующего прокси-сервера указать в разделе "Настройки" -> "Глобальные настройки" в полях "Прокси-сервер IPv4" и при необходимости использования IPv6 — "Прокси-сервер IPv6";
  2. Адрес и порт кэширующего прокси-сервера указать в конфигурационном файле в параметрах "HTTPProxyv4" и при необходимости использования IPv6 — "HTTPProxyv6".
Например:
HTTPProxyv4 http://127.1.1.1.1:3128/
HTTPProxyv6 http://[1111:2222:3333::4444]:3128/

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