Настройка прокси сервера Squid
Прокси сервер Squid самый распространенный в Unix среде. Поэтому, под него существуют полезные надстройки, позволяющие фильтровать трафик по различным признакам, в том числе и осуществлять антивирусную проверку. Сделаем типичную настройку для офисной сети. Начнем естественно с установки Squid:
cd /usr/ports/www/squid make install clean
Перед сборкой появляется небольшой диалог настройки.
Как я уже говорил Squid очень продвинутый прокси сервер, поэтому и настроек у него очень много. Для базовой настройки, большая часть этих наворотов не требуется, поэтому в диалоговом окне отмечены самые популярные, влияющие на скорость работы и стабильность настройки.
┌────────────────────────────────────────────────────────────────────┐ │ Options for squid 2.7.6 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │[ ] SQUID_LDAP_AUTH Install LDAP authentication helpers │ │ │ │[ ] SQUID_SASL_AUTH Install SASL authentication helpers │ │ │ │[ ] SQUID_DELAY_POOLS Enable delay pools │ │ │ │[ ] SQUID_SNMP Enable SNMP support │ │ │ │[ ] SQUID_CARP Enable CARP support │ │ │ │[ ] SQUID_SSL Enable SSL support for reverse proxies │ │ │ │[ ] SQUID_PINGER Install the icmp helper │ │ │ │[ ] SQUID_DNS_HELPER Use the old 'dnsserver' helper │ │ │ │[ ] SQUID_HTCP Enable HTCP support │ │ │ │[ ] SQUID_VIA_DB Enable forward/via database │ │ │ │[ ] SQUID_CACHE_DIGESTS Enable cache digests │ │ │ │[ ] SQUID_WCCP Enable Web Cache Coordination Prot. v1 │ │ │ │[ ] SQUID_WCCPV2 Enable Web Cache Coordination Prot. v2 │ │ │ │[ ] SQUID_STRICT_HTTP Be strictly HTTP compliant │ │ │ │[X] SQUID_IDENT Enable ident (RFC 931) lookups │ │ │ │[ ] SQUID_REFERER_LOG Enable Referer-header logging │ │ │ │[ ] SQUID_USERAGENT_LOG Enable User-Agent-header logging │ │ │ │[ ] SQUID_ARP_ACL Enable ACLs based on ethernet address │ │ │ │[ ] SQUID_PF Enable transparent proxying with PF │ │ │ │[ ] SQUID_IPFILTER Enable transp. proxying with IPFilter │ │ │ │[ ] SQUID_FOLLOW_XFF Follow X-Forwarded-For headers │ │ │ │[ ] SQUID_AUFS Enable the aufs storage scheme │ │ │ │[ ] SQUID_COSS Enable the COSS storage scheme │ │ │ │[X] SQUID_KQUEUE Use kqueue(2) instead of poll(2) │ │ │ │[ ] SQUID_LARGEFILE Support log and cache files >2GB │ │ │ │[ ] SQUID_STACKTRACES Create backtraces on fatal errors │ │ ├─└────.(+)────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘
Из интересных тут настроек это SQUID_KQUEUE – возможность использовать kqueue вместь poll. Squid создан по архитектуре «Конечный автомат», то есть когда процесс создает очередь сокетов обслуживающих клиентов и обслуживает их по очереди. А использование kqueue, сокращает затраты на обход пула сокетов.
Следующая интересная нам опция SQUID_LARGEFILE – позволяет хранить в кеше прокси сервера файлы размером более 2 гигабайт. Отмечать ее не будем, просто она интересная.
SQUID_DELAY_POOLS – эта опция дает возможность регулировать скорость передачи данных от прокси сервера к клиенту. Этакий шейпер на базе прокси сервера. Для оффиса, одна из самых нужных настроек. Сейчас на них останавливаться не будем, лони заслуживают отдельной статьи.
Теперь можно начинать настраивать Squid, конфигурационный файл получается такой:
#Определяем имена acl в зависимости от адресов 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 #Наша локальная сеть acl localnet src 192.168.0.0/24 #Перечисляем порты, которые смогу проходить через прокси 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 manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports #Разрешаем локальной сети ходить в интернет http_access allow localnet http_access deny all icp_access allow localnet icp_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? #Выделяем память под кешируемые объекты cache_mem 128 MB #Максимальный размер файла в памяти maximum_object_size_in_memory 64 KB memory_replacement_policy lru cache_replacement_policy lru #Определяем кеш на диске #Первая цифра размер директории кеша, две следующие это # число директорий 1-го уровня и в них количество, # определенное третьей цифрой, директорий # непосредственно для файлов кеша cache_dir ufs /usr/local/squid/cache 100 16 256 store_dir_select_algorithm least-load #Максимальный размер закешированного файла maximum_object_size 8 MB cache_swap_low 90 cache_swap_high 95 logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt #Местонахождение лог файлов, не забудьте создать директории access_log /var/log/squid/access.log squid cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log pid_filename /var/run/squid.pid strip_query_terms off 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 #Если имя сервера не резолвится - можно указать его явно visible_hostname office.hilik.org.ua #Сообщения о ошибках будем отображать на русском error_directory /usr/local/etc/squid/errors/Russian-1251 check_hostnames on coredump_dir /usr/local/squid/cache
Сама настройка закончена, теперь приступим к запуску Squid, первым делом создадим иерархию директорий кеша. Для этого нужно запустить Squid с ключиком -z:
squid -zДалее, устанавливаем разрешение на запуск Squid в /etc/rc.conf:
echo "squid_enable=YES" >> /etc/rc.conf
и запустим его:
/usr/local/etc/rc.d/squid start
Теперь остается пройти по сети и установить всем адрес прокси сервера. Или же настроить прозрачный прокси(Transparent (прозрачный) прокси сервер Squid). Базовая настройка на этом закончена.



