Установлен Squid (Squid Cache: Version 3.4.12).
FreeBSD vpn-gate 10.1-RELEASE-p9 FreeBSD 10.1-RELEASE-p9.
Проблема в следующем.
С существующим конфигом по идее должен заработать прозрачный прокси. Однако не всходит никак. Работает только с указанием у клиента порта 3128, а напрямую заворачивать клиента не хочет. Где копать?
Код: Выделить всё
#Адрес и порт для входящих подключений
#При прозрачном проксировании может использоваться для управления кэшем
http_port 3128
#Локальный интерфейс, для трафика, перенаправленного брандмауэром
http_port 127.0.0.1:3129 intercept
#Время ожидания установки TCP соединения с сервером
#По умолчанию 1 минута, если сервер не отвечает, выполняется 3 попытки установить соединение, итого время до появления ошибки 3 минуты
#Сократим таймаут до 20 секунд
connect_timeout 20 second
#Не использовать IPv6, если доступен IPv4
#По умолчанию, приоритет отдается протоколу IPv6, что может привести к ошибкам соединения, если IPv6 недоступен
dns_v4_first on
#При завершении работы ожидать закрытия клиентских подключений, так заявлено в документации
#Фактически, ждет независимо от наличия подключений
#По умолчанию - 30 секунд, сократим время ожидания до 1
shutdown_lifetime 1 seconds
#Отключить кеширование
#cache deny all
#Размер кэша в оперативной памяти
#По умолчанию 256Мб
#cache_mem 256 MB
#Максимальный размер объекта, сохраняемого в оперативной памяти
#Объекты больше заданного размера в памяти не сохраняются
#maximum_object_size_in_memory 512 KB
#Путь сохранения дампа аварийного завершения
coredump_dir /usr/local/squid
#Путь и формат лог-файла
access_log daemon:/usr/local/squid/log/access.log squid
#access_log stdio:/usr/local/squid/log/access.log squid
#Протоколировать параметры запросов
#По умолчанию в целях обеспечения приватности в логе не сохраняются параметры CGI-скриптов
#strip_query_terms off
#Протоколировать http-заголовки
log_mime_hdrs on
#Не отправлять заголовок X-Forwarded-For содержащий внутренний IP-адрес клиента
#forwarded_for transparent
#Не отправлять заголовок Via с именем и версией прокси-сервера
#via off
#Email администратора, для отправки уведомлений об отказе кэша
#На практике, ни одного уведомления не получал
#Адрес также отображается на страницах ошибок
cache_mgr 1@2.com
#Адрес сервера на страницах ошибок
visible_hostname vpn-gate
#
# Списки контроля доступа
#
#IP-адрес, с которого разрешено управление кэшем
acl CacheManagerIP src 172.22.23.3
#Обслуживаемая прокси-сервером сеть
#acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src fc00::/7 # RFC 4193 local private network range
#acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl localnet src 172.22.23.0/24 # RFC1918 possible internal network
#addon
# Порт SSL для подключений по HTTPS-протоколу
acl SSL_ports port 443
# Список портов, к которым разрешен доступ через прокси-сервер по протоколу HTTP
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
#addon
#Метод CONNECT, используется для SSL-соединений
acl CONNECT method CONNECT
#Путь к списку IP-адресов пользователей, для которых не действуют запреты
acl AdminsIP src "/usr/local/etc/squid/AccessLists/AdminsIP.txt"
#Путь к списку запрещенных сайтов
acl RestrictedDomains dstdomain "/usr/local/etc/squid/AccessLists/RestrictedDomains.txt"
#Mime-типы для аудио и видео
acl MimeAudioVideo rep_mime_type audio video
#Сайты с IP-адресами
acl UrlIP url_regex -i ^http://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/.*
#
# Права доступа
#
#Разрешить локальное управление кэшем
http_access allow manager localhost
#Разрешить удаленное управление кэшем
#http_access allow manager CacheManagerIP
http_access deny manager
#Пароли для различных действий протокола управления кэшем
#Значение disable all отключает управление кэшем
#cachemgr_passwd disable all
#Запретить метод CONNECT
#Проксирование SSL-соединений в прозрачном режиме невозможно
#http_access deny CONNECT
#Запретить доступ к локальным ресурсам сервера через прокси
http_access deny to_localhost
#Не ограничивать доступ администраторам
http_access allow AdminsIP
#Блокировать запрещенные сайты
http_access deny RestrictedDomains
#Запретить доступ к сайтам по IP-адресу
#http_access deny UrlIP
#Разрешить доступ из локальной сети
http_access allow localnet
#Блокировать все, что не разрешено
http_access deny all
url_rewrite_program /usr/local/bin/squidGuard
url_rewrite_children 50
#
#Фильтрация по http-заголовкам в ответе сервера
#
#Не ограничивать доступ администраторам
#http_reply_access allow AdminsIP
#Блокировать загрузку аудио/видео контента
#Успех блокировки зависит от используемого протокола
#и корректности MIME-типа, отправляемого сервером
#http_reply_access deny MimeAudioVideo
#Разрешить весь остальной контент
http_reply_access allow all
#Время устаревания кэшируемого контента в минутах, если явно не задано сервером
#Поля: шаблон соответствия URL, минимальное время в минутах, процент для расчета времени устаревания объекта, максимальное время в минутах
#Если повторный запрос приходит до наступления минимального времени, объект считается актуальным, запрос к серверу не выполняется
#Расчет времени жизни производится по формуле: (ВремяПолучения-ВремяСоздания)*Процент
#Чем старее объект, тем дольше он содержится в кэше, но не дольше заданного максимального времени
#http://etutorials.org/Server+Administration/Squid.+The+definitive+guide/Chapter+7.+Disk+Cache+Basics/7.7+refresh_pattern/
#
#Время жизни объектов для FTP-протокола
#refresh_pattern ^ftp: 1440 20% 10080
#Нулевое время жизни для динамического контента
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
#Время жизни по умолчанию
refresh_pattern . 0 20% 4320
#Кэш: формат, размещение, размер в мегабайтах, число папок первой и второй вложенности
#Указанный размер кэша не учитывает издержки файловой системы и должен быть примерно на 20% меньше доступного дискового пространства
#Директиву cache_dir, можно указать несколько раз, выделив под кэш дополнительные разделы
cache_dir ufs /usr/local/squid/cache 3000 16 256
#Не кэшировать файлы больше заданного размера
#По умолчанию 4Мб
maximum_object_size 320 MB
#Продолжить загрузку при отключении клиента, если осталось загрузить менее указанного объема данных
#Позволяет сохранить объект в кэше при отмене загрузки клиентом
#Значение 0 для quick_abort_min и quick_abort_max отменяют докачку
#Значение -1 включает полную закачку объекта, не зависимо от оставшегося объема, повышает нагрузку на канал
#По умолчанию 16 Кб
Код: Выделить всё
#!/bin/sh
FwCMD="/sbin/ipfw"
LanOut="re0" # bee
LanOut2="re1" # stream
LanIn="re2" # Int
IpOut="62.105.X.X" # IP bee
IpOut2="192.168.X.X" # IP stream
IpIn="172.22.23.3" # Int IP
NetIn="172.22.23.0/24" # IntNet
${FwCMD} -f flush
${FwCMD} -f pipe flush
${FwCMD} -f queue flush
${FwCMD} -f table 0 flush
${FwCMD} table 0 add 172.22.23.58
${FwCMD} add check-state
${FwCMD} add allow ip from any to any via lo0
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any
#NAT_config
${FwCMD} nat 1 config log if re1 same_ports reset unreg_only
#NAT1
${FwCMD} add nat 1 ip from "table(0)" to any out via re1
${FwCMD} add nat 1 ip from any to any in via re1
${FwCMD} add allow tcp from me to any out via re1 keep-state uid squid
${FwCMD} add fwd 127.0.0.1,3129 tcp from 172.22.23.0/24 to any 80-83,8080-8088 out via re1 keep-state