Настройка прокси-сервера Squid: различия между версиями
Admin (обсуждение | вклад) Нет описания правки |
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026 |
||
| Строка 39: | Строка 39: | ||
2. Создайте базовую конфигурацию: | 2. Создайте базовую конфигурацию: | ||
<pre> | <pre># Базовые настройки | ||
http_port 3128 | http_port 3128 | ||
visible_hostname squid-server | visible_hostname squid-server | ||
# Директории для кэша | |||
cache_dir ufs /var/spool/squid 100 16 256 | cache_dir ufs /var/spool/squid 100 16 256 | ||
# Настройки доступа | |||
acl localnet src 192.168.1.0/24 | acl localnet src 192.168.1.0/24 | ||
acl localnet src 10.0.0.0/8 | acl localnet src 10.0.0.0/8 | ||
| Строка 53: | Строка 53: | ||
acl localnet src fe80::/10 | acl localnet src fe80::/10 | ||
# Разрешенные порты | |||
acl SSL_ports port 443 | acl SSL_ports port 443 | ||
acl Safe_ports port 80 | acl Safe_ports port 80 | ||
| Строка 67: | Строка 67: | ||
acl CONNECT method CONNECT | acl CONNECT method CONNECT | ||
# Правила доступа | |||
http_access deny !Safe_ports | http_access deny !Safe_ports | ||
http_access deny CONNECT !SSL_ports | http_access deny CONNECT !SSL_ports | ||
| Строка 76: | Строка 76: | ||
http_access deny all | http_access deny all | ||
# Настройки кэширования | |||
cache_mem 64 MB | cache_mem 64 MB | ||
maximum_object_size_in_memory 512 KB | maximum_object_size_in_memory 512 KB | ||
| Строка 106: | Строка 106: | ||
2. Добавьте настройки аутентификации: | 2. Добавьте настройки аутентификации: | ||
<pre> | <pre># Настройки аутентификации | ||
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords | auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords | ||
auth_param basic children 5 | auth_param basic children 5 | ||
| Строка 113: | Строка 113: | ||
auth_param basic casesensitive off | auth_param basic casesensitive off | ||
# ACL для аутентификации | |||
acl authenticated proxy_auth REQUIRED | acl authenticated proxy_auth REQUIRED | ||
# Правила доступа с аутентификацией | |||
http_access allow authenticated | http_access allow authenticated | ||
http_access deny all | http_access deny all | ||
| Строка 126: | Строка 126: | ||
1. Настройте параметры кэширования: | 1. Настройте параметры кэширования: | ||
<pre> | <pre># Размер кэша в памяти | ||
cache_mem 256 MB | cache_mem 256 MB | ||
# Максимальный размер объекта в памяти | |||
maximum_object_size_in_memory 1 MB | maximum_object_size_in_memory 1 MB | ||
# Максимальный размер объекта | |||
maximum_object_size 10 MB | maximum_object_size 10 MB | ||
# Настройки кэша | |||
cache_replacement_policy lru | cache_replacement_policy lru | ||
memory_replacement_policy lru | memory_replacement_policy lru | ||
# Настройки обновления | |||
refresh_pattern ^ftp: 1440 20% 10080 | refresh_pattern ^ftp: 1440 20% 10080 | ||
refresh_pattern ^gopher: 1440 0% 1440 | refresh_pattern ^gopher: 1440 0% 1440 | ||
| Строка 149: | Строка 149: | ||
1. Добавьте специальные правила кэширования: | 1. Добавьте специальные правила кэширования: | ||
<pre> | <pre># Кэширование изображений | ||
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private | refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private | ||
# Кэширование CSS и JS | |||
refresh_pattern -i \.(css|js)$ 1440 40% 40320 | refresh_pattern -i \.(css|js)$ 1440 40% 40320 | ||
# Кэширование видео | |||
refresh_pattern -i \.(mp4|avi|mkv|mov)$ 10080 90% 43200 | refresh_pattern -i \.(mp4|avi|mkv|mov)$ 10080 90% 43200 | ||
# Не кэшировать динамический контент | |||
refresh_pattern -i \.(php|asp|jsp|cgi)$ 0 0% 0 | refresh_pattern -i \.(php|asp|jsp|cgi)$ 0 0% 0 | ||
</pre> | </pre> | ||
| Строка 188: | Строка 188: | ||
1. Добавьте ACL правила в конфигурацию: | 1. Добавьте ACL правила в конфигурацию: | ||
<pre> | <pre># ACL для заблокированных доменов | ||
acl blocked_domains dstdomain "/etc/squid/blocked_domains.txt" | acl blocked_domains dstdomain "/etc/squid/blocked_domains.txt" | ||
# ACL для заблокированных слов | |||
acl blocked_words url_regex -i "/etc/squid/blocked_words.txt" | acl blocked_words url_regex -i "/etc/squid/blocked_words.txt" | ||
# ACL для времени доступа | |||
acl work_hours time MTWHF 09:00-18:00 | acl work_hours time MTWHF 09:00-18:00 | ||
acl weekend time SA 00:00-23:59 | acl weekend time SA 00:00-23:59 | ||
acl weekend time SU 00:00-23:59 | acl weekend time SU 00:00-23:59 | ||
# Правила блокировки | |||
http_access deny blocked_domains | http_access deny blocked_domains | ||
http_access deny blocked_words | http_access deny blocked_words | ||
| Строка 210: | Строка 210: | ||
1. Настройте логирование в конфигурации: | 1. Настройте логирование в конфигурации: | ||
<pre> | <pre># Настройки логирования | ||
access_log /var/log/squid/access.log squid | access_log /var/log/squid/access.log squid | ||
cache_log /var/log/squid/cache.log | cache_log /var/log/squid/cache.log | ||
cache_store_log /var/log/squid/store.log | cache_store_log /var/log/squid/store.log | ||
# Формат логов | |||
logformat combined %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt | logformat combined %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt | ||
</pre> | </pre> | ||
| Строка 262: | Строка 262: | ||
1. Включите статистику в конфигурации: | 1. Включите статистику в конфигурации: | ||
<pre> | <pre># Настройки статистики | ||
acl manager proto cache_object | acl manager proto cache_object | ||
http_access allow manager localhost | http_access allow manager localhost | ||
http_access deny manager | http_access deny manager | ||
# Настройки кэша | |||
cache_mgr admin@example.com | cache_mgr admin@example.com | ||
</pre> | </pre> | ||
| Строка 299: | Строка 299: | ||
1. Настройте iptables для прозрачного прокси: | 1. Настройте iptables для прозрачного прокси: | ||
<pre> | <pre># Перенаправление HTTP трафика на Squid | ||
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 | sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 | ||
# Перенаправление HTTPS трафика (требует дополнительной настройки) | |||
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128 | sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128 | ||
</pre> | </pre> | ||
2. Обновите конфигурацию Squid: | 2. Обновите конфигурацию Squid: | ||
<pre> | <pre># Настройки для прозрачного прокси | ||
http_port 3128 transparent | http_port 3128 transparent | ||
</pre> | </pre> | ||
| Строка 314: | Строка 314: | ||
1. Настройте подключение к родительскому прокси: | 1. Настройте подключение к родительскому прокси: | ||
<pre> | <pre># Настройки родительского прокси | ||
cache_peer parent-proxy.example.com parent 3128 0 no-query default | cache_peer parent-proxy.example.com parent 3128 0 no-query default | ||
cache_peer_access parent-proxy.example.com allow all | cache_peer_access parent-proxy.example.com allow all | ||
| Строка 326: | Строка 326: | ||
2. Настройте SSL Bumping: | 2. Настройте SSL Bumping: | ||
<pre> | <pre># SSL Bumping настройки | ||
ssl_bump peek all | ssl_bump peek all | ||
ssl_bump bump all | ssl_bump bump all | ||
| Строка 373: | Строка 373: | ||
1. Настройте ACL для ограничения доступа: | 1. Настройте ACL для ограничения доступа: | ||
<pre> | <pre># ACL для разрешенных сетей | ||
acl allowed_networks src 192.168.1.0/24 | acl allowed_networks src 192.168.1.0/24 | ||
acl allowed_networks src 10.0.0.0/8 | acl allowed_networks src 10.0.0.0/8 | ||
# Правила доступа | |||
http_access allow allowed_networks | http_access allow allowed_networks | ||
http_access deny all | http_access deny all | ||
| Строка 385: | Строка 385: | ||
1. Настройте HTTPS для веб-интерфейса: | 1. Настройте HTTPS для веб-интерфейса: | ||
<pre> | <pre># HTTPS настройки | ||
https_port 3129 cert=/etc/squid/ssl/squid.crt key=/etc/squid/ssl/squid.key | https_port 3129 cert=/etc/squid/ssl/squid.crt key=/etc/squid/ssl/squid.key | ||
</pre> | </pre> | ||
| Строка 395: | Строка 395: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
# Проверка статуса Squid | |||
if ! systemctl is-active --quiet squid; then | if ! systemctl is-active --quiet squid; then | ||
echo "Squid proxy is down!" | mail -s "Proxy Alert" admin@example.com | echo "Squid proxy is down!" | mail -s "Proxy Alert" admin@example.com | ||
fi | fi | ||
# Проверка использования диска | |||
DISK_USAGE=$(df /var/spool/squid | tail -1 | awk '{print $5}' | sed 's/%//') | DISK_USAGE=$(df /var/spool/squid | tail -1 | awk '{print $5}' | sed 's/%//') | ||
if [ $DISK_USAGE -gt 80 ]; then | if [ $DISK_USAGE -gt 80 ]; then | ||
| Строка 446: | Строка 446: | ||
Squid прокси-сервер успешно установлен и настроен! Теперь у вас есть мощный инструмент для кэширования, фильтрации и мониторинга веб-трафика. | Squid прокси-сервер успешно установлен и настроен! Теперь у вас есть мощный инструмент для кэширования, фильтрации и мониторинга веб-трафика. | ||
'''Для размещения ваших прокси-серверов на надежном хостинге рекомендуем воспользоваться услугами [ | '''Для размещения ваших прокси-серверов на надежном хостинге рекомендуем воспользоваться услугами [https://ark-hoster.ru ARK-HOSTER.RU]:''' | ||
* '''[ | * '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' - для высоконагруженных прокси-серверов | ||
* '''[ | * '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' - для небольших и средних проектов | ||
Наши специалисты помогут с настройкой Squid и оптимизацией производительности ваших прокси-серверов! | Наши специалисты помогут с настройкой Squid и оптимизацией производительности ваших прокси-серверов! | ||
Текущая версия от 08:11, 14 ноября 2026
Настройка прокси-сервера (Squid)
1. Подготовка системы
- Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
- Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
2. Установка Squid
Обновление системы
1. Обновите систему:
sudo apt update
2. Установите Squid:
sudo apt install -y squid
3. Проверьте версию:
squid -v
4. Запустите и включите автозапуск:
sudo systemctl start squid
sudo systemctl enable squid
5. Проверьте статус:
sudo systemctl status squid
3. Базовая конфигурация
Создание резервной копии
1. Создайте резервную копию оригинального файла:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup
Основная конфигурация
1. Отредактируйте конфигурационный файл:
sudo nano /etc/squid/squid.conf
2. Создайте базовую конфигурацию:
# Базовые настройки http_port 3128 visible_hostname squid-server # Директории для кэша cache_dir ufs /var/spool/squid 100 16 256 # Настройки доступа acl localnet src 192.168.1.0/24 acl localnet src 10.0.0.0/8 acl localnet src 172.16.0.0/12 acl localnet src fc00::/7 acl localnet src fe80::/10 # Разрешенные порты acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 acl Safe_ports port 70 acl Safe_ports port 210 acl Safe_ports port 1025-65535 acl Safe_ports port 280 acl Safe_ports port 488 acl Safe_ports port 591 acl Safe_ports port 777 acl CONNECT method CONNECT # Правила доступа http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager http_access allow localnet http_access allow localhost http_access deny all # Настройки кэширования cache_mem 64 MB maximum_object_size_in_memory 512 KB maximum_object_size 1024 MB
4. Настройка аутентификации
Установка htpasswd
1. Установите apache2-utils:
sudo apt install -y apache2-utils
2. Создайте файл паролей:
sudo htpasswd -c /etc/squid/passwords user1
3. Добавьте дополнительных пользователей:
sudo htpasswd /etc/squid/passwords user2
sudo htpasswd /etc/squid/passwords user3
4. Установите права доступа:
sudo chown proxy:proxy /etc/squid/passwords
sudo chmod 640 /etc/squid/passwords
Настройка аутентификации в Squid
1. Отредактируйте конфигурацию:
sudo nano /etc/squid/squid.conf
2. Добавьте настройки аутентификации:
# Настройки аутентификации auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours auth_param basic casesensitive off # ACL для аутентификации acl authenticated proxy_auth REQUIRED # Правила доступа с аутентификацией http_access allow authenticated http_access deny all
5. Настройка кэширования
Оптимизация кэша
1. Настройте параметры кэширования:
# Размер кэша в памяти cache_mem 256 MB # Максимальный размер объекта в памяти maximum_object_size_in_memory 1 MB # Максимальный размер объекта maximum_object_size 10 MB # Настройки кэша cache_replacement_policy lru memory_replacement_policy lru # Настройки обновления 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
Настройка кэша для различных типов контента
1. Добавьте специальные правила кэширования:
# Кэширование изображений refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private # Кэширование CSS и JS refresh_pattern -i \.(css|js)$ 1440 40% 40320 # Кэширование видео refresh_pattern -i \.(mp4|avi|mkv|mov)$ 10080 90% 43200 # Не кэшировать динамический контент refresh_pattern -i \.(php|asp|jsp|cgi)$ 0 0% 0
6. Настройка фильтрации
Блокировка сайтов
1. Создайте файл с заблокированными доменами:
sudo nano /etc/squid/blocked_domains.txt
2. Добавьте домены для блокировки:
facebook.com twitter.com instagram.com youtube.com
3. Создайте файл с заблокированными словами:
sudo nano /etc/squid/blocked_words.txt
4. Добавьте слова для блокировки:
porn gambling violence
Настройка ACL для фильтрации
1. Добавьте ACL правила в конфигурацию:
# ACL для заблокированных доменов acl blocked_domains dstdomain "/etc/squid/blocked_domains.txt" # ACL для заблокированных слов acl blocked_words url_regex -i "/etc/squid/blocked_words.txt" # ACL для времени доступа acl work_hours time MTWHF 09:00-18:00 acl weekend time SA 00:00-23:59 acl weekend time SU 00:00-23:59 # Правила блокировки http_access deny blocked_domains http_access deny blocked_words http_access deny !work_hours
7. Настройка логирования
Настройка логов доступа
1. Настройте логирование в конфигурации:
# Настройки логирования access_log /var/log/squid/access.log squid cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log # Формат логов logformat combined %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
Настройка ротации логов
1. Создайте конфигурацию logrotate:
sudo nano /etc/logrotate.d/squid
2. Добавьте настройки:
/var/log/squid/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 proxy proxy
postrotate
/usr/sbin/squid -k rotate
endscript
}
8. Настройка файрвола
Настройка UFW
1. Разрешите порт Squid:
sudo ufw allow 3128/tcp
2. Проверьте статус:
sudo ufw status
Настройка iptables
1. Разрешите порт через iptables:
sudo iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
2. Сохраните правила:
sudo iptables-save > /etc/iptables/rules.v4
9. Мониторинг и управление
Просмотр статистики
1. Включите статистику в конфигурации:
# Настройки статистики acl manager proto cache_object http_access allow manager localhost http_access deny manager # Настройки кэша cache_mgr admin@example.com
2. Перезапустите Squid:
sudo systemctl restart squid
3. Просмотр статистики:
curl http://localhost:3128/squid-internal-mgr/info
Управление кэшем
1. Очистка кэша:
sudo squid -k shutdown
sudo rm -rf /var/spool/squid/*
sudo squid -z
sudo systemctl start squid
2. Перезапуск Squid:
sudo systemctl restart squid
3. Проверка конфигурации:
sudo squid -k parse
4. Просмотр логов:
sudo tail -f /var/log/squid/access.log
10. Продвинутые настройки
Настройка прозрачного прокси
1. Настройте iptables для прозрачного прокси:
# Перенаправление HTTP трафика на Squid sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 # Перенаправление HTTPS трафика (требует дополнительной настройки) sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128
2. Обновите конфигурацию Squid:
# Настройки для прозрачного прокси http_port 3128 transparent
Настройка родительского прокси
1. Настройте подключение к родительскому прокси:
# Настройки родительского прокси cache_peer parent-proxy.example.com parent 3128 0 no-query default cache_peer_access parent-proxy.example.com allow all never_direct allow all
Настройка SSL Bumping
1. Создайте SSL сертификат:
sudo openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.crt -subj "/CN=squid-proxy"
2. Настройте SSL Bumping:
# SSL Bumping настройки ssl_bump peek all ssl_bump bump all sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB sslcrtd_children 8 startup=1 idle=1
11. Настройка клиентов
Настройка браузера
1. Firefox:
- Перейдите в Настройки → Сеть → Настройки
- Выберите "Ручная настройка прокси"
- Введите IP сервера и порт 3128
2. Chrome:
- Установите расширение Proxy SwitchyOmega
- Настройте прокси сервер
3. Системные настройки Linux:
export http_proxy=http://proxy-server:3128 export https_proxy=http://proxy-server:3128 export no_proxy=localhost,127.0.0.1
Настройка PAC файла
1. Создайте PAC файл:
sudo nano /var/www/html/proxy.pac
2. Добавьте содержимое:
function FindProxyForURL(url, host) {
if (isInNet(host, "192.168.0.0", "255.255.0.0") ||
isInNet(host, "10.0.0.0", "255.0.0.0") ||
isInNet(host, "172.16.0.0", "255.240.0.0")) {
return "DIRECT";
}
return "PROXY proxy-server:3128";
}
12. Безопасность
Ограничение доступа по IP
1. Настройте ACL для ограничения доступа:
# ACL для разрешенных сетей acl allowed_networks src 192.168.1.0/24 acl allowed_networks src 10.0.0.0/8 # Правила доступа http_access allow allowed_networks http_access deny all
Настройка SSL/TLS
1. Настройте HTTPS для веб-интерфейса:
# HTTPS настройки https_port 3129 cert=/etc/squid/ssl/squid.crt key=/etc/squid/ssl/squid.key
Мониторинг безопасности
1. Создайте скрипт мониторинга:
sudo nano /usr/local/bin/squid-monitor.sh
2. Добавьте содержимое:
#!/bin/bash
# Проверка статуса Squid
if ! systemctl is-active --quiet squid; then
echo "Squid proxy is down!" | mail -s "Proxy Alert" admin@example.com
fi
# Проверка использования диска
DISK_USAGE=$(df /var/spool/squid | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $DISK_USAGE -gt 80 ]; then
echo "Squid cache disk usage is high: ${DISK_USAGE}%" | mail -s "Proxy Alert" admin@example.com
fi
13. Устранение неполадок
Частые проблемы
1. Squid не запускается:
- Проверьте синтаксис конфигурации:
sudo squid -k parse
- Проверьте права доступа к файлам
- Проверьте логи:
sudo journalctl -u squid
2. Клиенты не могут подключиться:
- Проверьте файрвол
- Проверьте настройки ACL
- Проверьте аутентификацию
3. Проблемы с кэшированием:
- Проверьте права доступа к директории кэша
- Проверьте свободное место на диске
- Очистите кэш и перезапустите
Диагностика
1. Проверка статуса:
sudo systemctl status squid
2. Проверка портов:
sudo netstat -tlnp | grep :3128
3. Проверка логов:
sudo tail -f /var/log/squid/access.log
4. Тестирование подключения:
curl -x http://proxy-server:3128 http://example.com
Заключение
Squid прокси-сервер успешно установлен и настроен! Теперь у вас есть мощный инструмент для кэширования, фильтрации и мониторинга веб-трафика.
Для размещения ваших прокси-серверов на надежном хостинге рекомендуем воспользоваться услугами ARK-HOSTER.RU:
- Выделенные серверы - для высоконагруженных прокси-серверов
- VPS/VDS серверы - для небольших и средних проектов
Наши специалисты помогут с настройкой Squid и оптимизацией производительности ваших прокси-серверов!