Freebsd

Squid на FreeBSD: установка, ACL, HTTPS CONNECT и проверка работы

Ниже — рабочая конфигурация forward proxy на FreeBSD. Пример рассчитан на LAN 192.168.1.0/24, адрес сервера 192.168.1.10 и порт Squid 3128.

1. Проверяем систему

freebsd-version
uname -a
ifconfig
netstat -rn
sockstat -4 -l
df -h

2. Устанавливаем Squid

pkg update
pkg install squid
squid -v
sysrc squid_enable=YES

3. Создаём резервную копию

mkdir -p /root/squid-backup
cp -a /usr/local/etc/squid/squid.conf /root/squid-backup/squid.conf.$(date +%F-%H%M)

4. Настраиваем squid.conf

cat > /usr/local/etc/squid/squid.conf <<'EOF'
http_port 192.168.1.10:3128
visible_hostname proxy-freebsd
acl localnet src 192.168.1.0/24
acl SSL_ports port 443
acl Safe_ports port 80 443
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access deny all
access_log stdio:/var/log/squid/access.log
cache_log /var/log/squid/cache.log
coredump_dir /var/squid/cache
EOF
squid -k parse

5. Готовим каталоги и запускаем сервис

service squid onestop 2>/dev/null || true
squid -z
service squid start
service squid status
sockstat -4 -l | grep 3128

6. Разрешаем порт в PF

Если PF уже используется, добавьте правило только для доверенной сети:

cp /etc/pf.conf /root/squid-backup/pf.conf.$(date +%F-%H%M)
echo 'pass in on em1 proto tcp from 192.168.1.0/24 to 192.168.1.10 port 3128' >> /etc/pf.conf
pfctl -nf /etc/pf.conf
pfctl -f /etc/pf.conf
pfctl -sr

Замените em1 на LAN-интерфейс сервера.

7. Проверяем с клиента

curl -I -x http://192.168.1.10:3128 http://example.com
curl -I -x http://192.168.1.10:3128 https://example.com

8. Проверяем журналы

tail -f /var/log/squid/access.log
tail -n 100 /var/log/squid/cache.log
grep -E 'TCP_MISS|TCP_TUNNEL|DENIED' /var/log/squid/access.log | tail -n 30

9. Перезагрузка конфигурации

squid -k parse
service squid reload
service squid status

10. Диагностика

sockstat -4 -l | grep squid
tcpdump -ni em1 tcp port 3128
service squid status
squid -k check
tail -n 200 /var/log/squid/cache.log

11. Rollback

service squid stop
cp /root/squid-backup/squid.conf.TIMESTAMP /usr/local/etc/squid/squid.conf
squid -k parse
service squid start
cp /root/squid-backup/pf.conf.TIMESTAMP /etc/pf.conf
pfctl -f /etc/pf.conf

Критерий успеха: Squid слушает только LAN-адрес на TCP 3128, HTTP и HTTPS через CONNECT открываются с клиента, запросы видны в access.log, а обращения не из доверенной сети получают отказ.

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

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