Инструменты пользователя

Инструменты сайта


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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki