flip:linux:squid
Это старая версия документа!
Содержание
SQUID
Файл конфигурации: /etc/squid/squid.conf
Перезагрузка конфигурации
После изменения squid.conf
проверьте конфигурацию
squid -k parse
Если ошибок нет, перезапустите Squid
systemctl restart squid
Настройка
Основные настройки
# Порт, на котором работает Squid (по умолчанию 3128) http_port 3128 # Порт для HTTPS-прокси (если поддерживается) https_port 3130 cert=/etc/squid/ssl_cert/server.pem key=/etc/squid/ssl_cert/server.key # Имя или IP-адрес, который виден клиентам (если прокси находится за NAT) visible_hostname proxy.example.com # PID-файл для управления демоном pid_filename /var/run/squid.pid # Директория для кэша cache_dir ufs /var/spool/squid 10000 16 256 # ufs — тип файловой системы кэша # /var/spool/squid — путь к кэшу # 10000 — размер кэша в МБ # 16 — количество 1-уровневых поддиректорий # 256 — количество 2-уровневых поддиректорий
Настройки доступа
# Разрешить доступ только с локальной сети acl localnet src 192.168.1.0/24 http_access allow localnet # Запретить все остальные подключения http_access deny all # Настройки аутентификации (например, через NTLM или Basic Auth) auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords auth_param basic realm Squid proxy acl authenticated proxy_auth REQUIRED http_access allow authenticated
Настройки кэширования
# Максимальный размер объекта в кэше (в МБ) maximum_object_size 256 MB # Минимальный размер объекта для кэширования (в КБ) minimum_object_size 0 KB # Не кэшировать динамические страницы (например, PHP) acl dynamic_content urlpath_regex \.php$ cache deny dynamic_content # Время жизни кэша для разных типов данных refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
Логирование
# Формат логов logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh # Основной лог-файл доступа access_log /var/log/squid/access.log combined # Лог кэширования cache_log /var/log/squid/cache.log # Лог ошибок debug_options ALL,1
Безопасность
# Запретить доступ к опасным портам acl dangerous_ports port 22 23 563 # SSH, Telnet, NNTP over SSL http_access deny dangerous_ports # Запретить доступ к определенным сайтам acl blocked_sites dstdomain .example.com .facebook.com http_access deny blocked_sites # Защита от DDoS acl overload maxconn 10 http_access deny overload
Оптимизация
# Использование DNS-кэша positive_dns_ttl 6 hours negative_dns_ttl 1 minute # Количество DNS-запросов в параллель dns_nameservers 8.8.8.8 1.1.1.1 dns_defnames off # Оптимизация TCP tcp_outgoing_address 192.168.1.100 tcp_outgoing_tos 0x10
Дополнительные настройки
# Прозрачный прокси-режим (если Squid работает как прозрачный прокси) http_port 3128 intercept https_port 3130 intercept ssl-bump cert=/etc/squid/ssl_cert/server.pem key=/etc/squid/ssl_cert/server.key # Поддержка ICAP (для антивирусной проверки) icap_enable on icap_service service_req reqmod_precache icap://icap.server:1344/scan adaptation_access service_req allow all
Примеры
Простой прокси
Конфигурации Squid без ограничений (прозрачный прокси, без аутентификации, без блокировок)
# Базовые настройки http_port 3128 # Разрешить доступ всем (без ограничений) http_access allow all # Отключить кэширование (по желанию) cache deny all # Логирование (опционально) access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log # Видимое имя прокси (можно заменить на IP или домен) visible_hostname my_proxy # Отключить DNS-кэширование (ускоряет работу, но увеличивает нагрузку на DNS) negative_dns_ttl 1 second positive_dns_ttl 1 second
Прокси с авторизацией
Используем htpasswd
для генерации паролей
htpasswd -c /etc/squid/passwords proxy_user
-c
– создать новый файл (используйте без -c
для добавления пользователей).
proxy_user
– имя пользователя.
Введите пароль при запросе.
Добавление ещё одного пользователя
htpasswd /etc/squid/passwords another_user
Отредактируйте /etc/squid/squid.conf
# Базовый порт прокси http_port 3128 # Включить аутентификацию Basic Auth auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords auth_param basic realm "Squid Proxy - Auth Required" auth_param basic credentialsttl 24 hours # Создать ACL для аутентифицированных пользователей acl authenticated proxy_auth REQUIRED # Разрешить доступ только аутентифицированным http_access allow authenticated # Запретить всё остальное http_access deny all # Логирование (опционально) access_log /var/log/squid/access.log squid cache_log /var/log/squid/cache.log # Имя прокси (можно заменить на IP или домен) visible_hostname my_proxy
Ограничение доступа по IP (если нужно)
acl allowed_ips src 192.168.1.0/24 # Разрешить только локальную сеть http_access allow allowed_ips authenticated # Только авторизованные + из разрешённой сети http_access deny all
Включение HTTPS-прокси (если нужно)
https_port 3130 cert=/etc/squid/ssl_cert/server.pem key=/etc/squid/ssl_cert/server.key
flip/linux/squid.1743019812.txt.gz · Последнее изменение: 2025/03/26 20:10 — flip