SQUID - пожалуй, самый лучший прокси под UNIX платформу.
— Поддержка протоколов HTTP, FTP, SSL, HTCP, CAPR
— Каскадирование серверов
— возможность прозраного проксирования
— поддержка протокола SNMP
— кэширование DNS-запросов
Теперь приступим к установке и настройке кеширующего прокси-сервера Squid
$ sudo apt-get install squid
и выжмем из оригинальной конфигурации всё, не закоментированное: так на много проще, В итоге конфиг без ничего лишнего
$sudo cat /etc/squid/squid.conf.original | grep -v '^\(#\|$\)' > /etc/squid/squid.conf
и приступаем к настройке конфига под свои нужды
$nano /etc/squid/squid.conf
у меня вышел, вот такой замечательный конфиг
#===========SQUID==============
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl office src 192.168.0.0/16
acl office2 src 91.227.181.10
################# PORTS ##################
# Открываем нужные порты
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
#acl SSL_ports port 873 # rsync
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 Safe_ports port 631 # cups
#acl Safe_ports port 873 # rsync
#acl Safe_ports port 901 # SWAT
# разрешаем соединение типа CONNECT для нужных протоколов
#acl purge method PURGE
#acl CONNECT method CONNECT
#http_access allow purge localhost
#http_access deny purge
#http_access deny !Safe_ports
#http_access deny CONNECT !SSL_ports
#icp_access allow localnet
#icp_access deny all
############### NETWORK OPTIONS #############
# настройка порта для прокси
http_port 3128
##### OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM #####
# CGI-скрипты
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
########### OPTIONS FOR TUNING THE CACHE ##############
# Оставляем как есть
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
############ ERROR PAGE OPTIONS ###############
# Отсюда берем файлы стандартных сообщений об ошибках
error_directory /usr/share/squid/errors/Ukrainian-1251
# Если Squid уже скачал 60% файла, а пользователь отказался его забирать, то всеравно продолжить скачивание
quick_abort_pct 60
# Время жизни запросов завершившихся ошибкой "connection refused" "404 Not Found"
negative_ttl 1 minutes
############### ACCESS CONTROLL############
# и назначаем права доступа
acl zapret dstdomain da.ru
acl zapret1 dstdomain "/etc/squid/zapret.conf"
http_access allow manager localhost
http_access deny manager
http_access allow localhost
http_access deny zapret
http_access deny zapret1
http_access allow office
http_access allow office2
http_access deny all
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
# Место откуда берутся страницы с ошибками
coredump_dir /var/spool/squid
# Поддержка нестандартных Http запросов
half_closed_clients on
# Включать ли IP адрес клиента в заголовок Http запроса
forwarded_for on
# Вкл. сбор статистики по каждому клиенту
client_db on
#============================END==========================================
и создаем файл
nanо /etc/squid/zapret.conf
www.vk.com
vk.com
Сохраняем файл и перезапускаем сквид:
$sudo /etc/init.d/squid restart
Вот собственно и все, это не самый простой конфиг Squid, но простиникий, чуть ниже расскажу что еще можно прикрутить.
Режим скорость интернета
После строчек с refresh_pattern начинаем настраивать пулы (по сути ограничения на ранее созданные группы сетей; помните acl?):
#указываем количество правил
delay_pools 2
#регистрируем 2 пула 3 класса
delay_class 1 3
delay_class 2 3
#указываем кто есть кто и указываем доступ
delay_access 1 allow office
delay_access 1 deny all
delay_access 2 allow office2
delay_access 2 deny all
#указываем параметры скорости для первого пула (нет ограничений)
delay_parameters 1 -1/-1 -1/-1 -1/-1
#второго пула-режем скорость примерно до 10 кбайт/с после первого Мб
delay_parameters 2 -1/-1 -1/-1 10000/1024000
Коментарі
Что бы настроить высокоанонимный прокси сервер на squid3 добовляем следующее:
#another
visible_hostname ussr.kiev.ua
httpd_suppress_version_string on
request_header_access Allow allow all <<---Все эти правила важны
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access All deny all
выполнить проверку на наличие синтаксических ошибок:
sudo squid3 -k parse
Применить новую конфигурацию Squid:
sudo squid3 -k reconfigure
В случае проблем в реальном режиме времени смотрим логи:
sudo tail -f /var/log/squid3/cache.log
sudo tail -f /var/log/squid3/access.log
Высокоанонимный squid3