Устанавливаем squid из портов: # cd /usr/ports/www/squid # env FLAVOR=transparent make install clean Или с помощью прекомпилированного пакета: # pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/3.8/packages/i386/squid-2.5.STABLE12-transparent.tgz Выставляем корректные права доступа для псевдоустройства pf(4): # chgrp _squid /dev/pf # chmod g+rw /dev/pf Примечание. Начиная с OpenBSD 3.9, стало возможным использовать более ограниченные права доступа для /dev/pf: # chgrp _squid /dev/pf # chmod g+r /dev/pf Редактируем главный конфигурационный файл прокси-сервера: # vi /etc/squid/squid.conf http_port 127.0.0.1:3128 # Для Squid 2.6 формат директивы http_port изменен: # http_port 127.0.0.1:3128 transparent icp_port 0 cache_mem 128 MB cache_dir ufs /var/squid/cache 8192 16 256 cache_store_log none pid_filename /var/run/squid.pid acl our_networks src 192.168.1.0/24 http_access allow our_networks cache_mgr admin@domain.ru visible_hostname srv.domain.ru httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on # Для Squid 2.6 директивы httpd_accel_* следует удалить. Проверяем конфиг на наличие ошибок: # /usr/local/sbin/squid -k parse Создаем кэш: # /usr/local/sbin/squid -z Загружаем squid (в некоторых случаях может оказаться полезным ключ '-D' - не выполнять DNS-тест): # /usr/local/sbin/squid Проверяем, готов ли сервер принимать подключения по 3128/tcp: # netstat -na -f inet | grep 3128 tcp 0 0 127.0.0.1.3128 *.* LISTEN Заворачиваем на прокси входящие клиентские www-запросы: # vi /etc/pf.conf # С помощью макросов указываем сетевые интерфейсы # ext_if = "fxp0" int_if = "fxp1" # Таблицы радикса, в которые заносим IP-адреса клиентов, а также www-серверов, # содержимое которых кэшировать не следует # table <clients> persist file "/etc/clients.conf" table <no_cache> { 192.168.1.0/24, 192.168.2.0/24 } # Выполняем трансляцию сетевых адресов # nat on $ext_if inet from <clients> to any -> $ext_if # Перенаправляем на прокси-сервер все www-запросы, поступающие на внутренний # сетевой интерфейс # rdr on $int_if inet proto tcp from <clients> to ! <no_cache> \ port www -> 127.0.0.1 port 3128 # В том случае, если в сети работают IPsec-клиенты, перенаправляем на # прокси-сервер все www-запросы, поступающие на псевдоинтерфейс enc0 # rdr on enc0 inet proto tcp from <clients> to ! <no_cache> \ port www -> 127.0.0.1 port 3128 Указываем IP-адреса клиентских машин, которым нужно предоставить выход в Сеть: # vi /etc/clients.conf 192.168.1.2/32 192.168.1.3/32 192.168.1.9/32 Перезагружаем набор рулесетов файервола: # pfctl -f /etc/pf.conf В начале каждого месяца выполняем ротацию журнальных записей: # crontab -e 0 8 1 * * /usr/local/sbin/squid -k rotate В /etc/rc.local прописываем автозапуск squid: # vi /etc/rc.local if [ -x /usr/local/sbin/squid ]; then echo -n ' squid'; /usr/local/sbin/squid fi |