Прозрачный прокси сервер Squid3 на FreeBSD с PF

1397067017_squid-cache_logo1Проверенная комбинация. Делал на FreeBSD 10.0 (i386).

Обновляем порты. Собираем squid3.

# cd /usr/ports/www/squid
# make config

Выбираем, чтобы было так

Screenshot_2016-07-25_09-20-37

Жмем ОК и собираем

# make BATCH=yes install clean

Привел конфиг «сквиды» /usr/local/etc/squid/squid.conf до следующего состояния

acl localnet src 192.168.0.0/24 # RFC1918 possible internal network

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 110 # pop
acl Safe_ports port 25 # smtp
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 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
http_port 3128 transparent
http_port 8080
coredump_dir /var/squid/cache

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 gw0

Squid готов. Добавим его запуск при старте системы.

# echo 'squid_enable="YES"' >> /etc/rc.conf

И запускаем

# service squid start

Осталось «завернуть» весь http трафик на «сквиду». Добавим в конфиг pf следующую строку:

# rdr on $lan_if proto { tcp } from 192.168.0.0/24 to any port 80 -> 127.0.0.1 port 3128

где lan_if — наш интерфейс, который смотрит в локальную сеть.

Перезагружаем pf

# service pf reload

И, если все сделано правильно, наш шлюз прогоняет весь http через squid. Можно убедиться в этом посмотрев на лог доступа:

# tail -f /var/log/squid/access.log

Если в cache.log видим постоянно такое:

IpIntercept.cc(316) PfInterception: PF open failed: (13) Permission denied

Добавить в /etc/devfs.conf

# Allow Squid read acess to /dev/pf
own pf root:squid
perm pf 0640

и выполнить

/etc/rc.d/devfs restart

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2019

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!