Долго шарил по форуму и обнаружил, что все ссылки по squid, что мне попадались, содержат два утверждения:
1. "нафига здесь такая штука, это же не сервак"
2. "ну ты поищи ... (подставить ссылку по вкусу), там точно все есть"
Я ярый фанат squid. Я не использую его, как кэширующий прокси (для этого у меня стоит BFilter), а чаще всего я использую его для получения дополнительного IP для скачивания пор..., нужных статей
Имея большой опыт подъема свида под FreeBSD я решил забацать его и тут, благо в списке пакетов он есть.
Итак, первое:
PHP Code:
ipkg install squid
ставим сам squid
Далее, заходим в /opt/etc/squid
и находим там squid.conf
Привожу здесь минимально необходимый рабочий конфиг
PHP Code:
auth_param basic program /opt/libexec/ncsa_auth /opt/share/passwords/users
auth_param basic children 1
auth_param basic realm Authorized users only. Squid PROXY
auth_param basic credentialsttl 2 hours
acl MY proxy_auth REQUIRED
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
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
http_access allow MY
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_port 3128
hierarchy_stoplist cgi-bin ?
cache_dir ufs /opt/var/squid/cache 20 16 256
cache_swap_low 97
cache_swap_high 100
access_log /opt/var/squid/logs/access.log squid
pid_filename /opt/var/squid/logs/squid.pid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
header_access From deny all
header_access Referer deny all
header_access User-Agent deny all
header_access Cache-Control deny all
header_access Via deny all
header_access X-Forwarded-For deny all
cache_effective_user nobody
cache_effective_group nobody
visible_hostname home.elist.ws
icon_directory /opt/share/squid/icons
error_directory /opt/share/squid/errors/Russian-1251
cachemgr_passwd 456789 all
coredump_dir /opt/var/squid/cache
и к нему небольшие коментарии:
auth_param basic program /opt/libexec/ncsa_auth /opt/share/passwords/users - как Вы понимаете, второй путь может быть любым, но там должен лежать файлик (users) с паролями в формате htaccess. Права на него нужно ставить так, чтобы непревелигированный пользователь (nobody) смог его прочитать.
auth_param basic realm Authorized users only. Squid PROXY - текст, который выводится в шапке запрос пароля. Может быть любым на Ваше усмотрение.
cache_dir ufs /opt/var/squid/cache 20 16 256 - очень важная строка, разберем поподробнее:
/opt/var/squid/cache - путь к кэшу. Может вести куда угодно, НО не на fat или ntfs партиции.
20 - размер кэша в Мб. Выбирается на Ваш вкус и возможности.
access_log /opt/var/squid/logs/access.log squid - место, куда пишется лог-файл доступа к ресурсам. Собственно его можно анализировать - кто и куда лазил за пор... статьями. ВНИМАНИЕ! Не забывайте его ротировать, дабы размер его не принял катастрофические величины.
visible_hostname home.elist.ws - поменяйте на свой хост или IP.
cachemgr_passwd 123 all - пароль на доступ кэшменеджера к управлению кэшем и свидом. Поствьте свой, но я вообще не рекомендую пользоваться кэшменеджером - глючный и небезопасный.
Первый запуск производить squid -z для формирования дерева директорий в кэше.
Для автоматического запуска squid при старте не забудте добавить в post-mount строчку
PHP Code:
/opt/etc/init.d/S80squid start
а для того, чтобы squid принимал запросы извне не забудьте добавить в post-firewall строчки
PHP Code:
iptables -A INPUT -p 'tcp' --dport 3128 -j ACCEPT
iptables -t nat -A PREROUTING -i vlan1 -p 'tcp' --dport 3128 -j DNAT --to-destination $4:3128
В итоге все сводится к классическому Linuxовому правилу "Конфиг всему голова"
З.Ы. Для настройки squid в качестве кэширующего прокси для локальной сети следует разобраться в комбинации
PHP Code:
acl home src 192.168.0.0/255.255.0.0
http_access allow home
192.168.0.0/255.255.0.0 - диапазон Вашей "внутренней" сети.
Т.е. первое правило определяет сеть для безаппеляционного доступа, а второе этот доступ разрешает. Таким образом пользователям "внутренней" сети не придется вводить пароль для доступа к кэшу/
Не оъясняю маленькую засаду с порядком правил - хочу посмотеть, воспользовался ли кто моей инструкцией