Kid1 error no forward proxy ports configured

Настраиваем Squid в качестве прозрачного прокси-сервера для небольшой сети.

Настраиваем Squid в качестве прозрачного прокси-сервера для небольшой сети.

Содержание

  • Установка Squid
  • Настройка Squid
  • Отображение местного времени на страницах ошибок Squid
  • Запуск Squid
  • Протокол управления кэшем Squid
  • Настройка IPFW
  • Ротация логов Squid
  • Кэширование контента в Squid
  • Ограничения доступа к сайтам и контенту в Squid
  • Подмена заголовков в запросе клиента в Squid
  • Перенос логов доступа Squid
  • Решение проблем
  • Установка Squid из коллекции портов
  • Пакетный менеджер и кастомизированный Squid
  • Настройка ядра (FreeBSD 9.1 и ранее)
  • Дополнительная информация

Устанавливаем Squid:

pkg install squid

Бинарный пакет собран с поддержкой прозрачного прокси с перенаправлением пакетов с помощью IPFW. Если требуется поддержка прозрачного прокси с брандмауэром отличным от IPFW, необходима сборка Squid из коллекции портов.

Настройка Squid

В FreeBSD 9.1 и более ранних версиях для работы прозрачного прокси с IPFW необходима настройка ядра. Начиная с FreeBSD 9.2, настройка ядра не требуется.

Редактируем файл конфигурации:

ee /usr/local/etc/squid/squid.conf

Задаем параметры:

#
# Рекомендованная минимальная конфигурация:
#

# Обслуживаемая прокси-сервером сеть
# Укажите список ваших внутренних IP-сетей,
# которым разрешен доступ в интернет
#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 192.168.0.0/16 # 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

# Порт 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

#
# Рекомендованный минимум настройки доступа:
#
# Запретить доступ к портам, отсутствующим в списке выше
http_access deny !Safe_ports

# Запретить метод CONNECT не на SSL-порт
http_access deny CONNECT !SSL_ports

# Разрешить только локальное управление кэшем
http_access allow localhost manager
http_access deny manager

# Запретить доступ к локальным ресурсам сервера через прокси
# Настоятельно рекомендуется задать это правило, чтобы исключить внешний доступ
# к приложениям, принимающим подключения по внутренним адресам (127.0.0.1 и др.).
http_access deny to_localhost

#
# Задайте свои правила доступа для клиентов
#

# Образец правила разрешающего доступ в интернет из вашей локальной сети
# Список ваших внутренних IP-сетей, задается в acl localnet
http_access allow localnet
http_access allow localhost

# Последнее правило, блокирует все, что не было разрешено выше
http_access deny all


# Адрес и порт для входящих подключений
# Обычно Squid ожидает подключения на порт 3128
# Если требуется только прозрачный прокси, соединения можно ограничить внутренним интерфейсом
http_port 3128
#http_port 127.0.0.1:3128

# Для прозрачного прокси дополнительно необходимо задать порт перехвата трафика
http_port 127.0.0.1:3128 intercept


# Раскомментируйте, чтобы указать путь для дискового кеширования
# Кэш: формат, размещение, размер в мегабайтах, число папок первой и второй вложенности
# Указанный размер кэша не учитывает издержки файловой системы и должен быть примерно на 20% меньше доступного дискового пространства
# Директиву cache_dir, можно указать несколько раз, для добавления под кэш дополнительных дисков
#cache_dir ufs /var/squid/cache 100 16 256

# Путь сохранения дампов аварийного завершения
coredump_dir /var/squid/cache

#
# Время устаревания кэшируемого контента в минутах, если явно не задано сервером
# Поля: шаблон URL, минимальное время в минутах, процент для расчета времени устаревания объекта, максимальное время в минутах
# Если повторный запрос приходит до наступления минимального времени, объект считается актуальным, запрос к серверу не выполняется
# Расчет времени жизни производится по формуле: (ВремяПолучения-ВремяСоздания)*Процент
# Чем старее объект, тем дольше он содержится в кэше, но не дольше заданного максимального времени
# http://etutorials.org/Server+Administration/Squid.+The+definitive+guide/Chapter+7.+Disk+Cache+Basics/7.7+refresh_pattern/
#
# Время жизни объектов для протоколов FTP и GOPHER
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

#
# Дополнительные параметры конфигурации
#

# Не использовать IPv6, если доступен IPv4-адрес
# По умолчанию, приоритет отдается протоколу IPv6, что может привести к ошибкам соединения, если IPv6 недоступен
dns_v4_first on


# При завершении работы ожидать закрытия клиентских подключений, так заявлено в документации
# Фактически, ждет независимо от наличия подключений
# По умолчанию - 30 секунд, сократим время ожидания до одной секунды
shutdown_lifetime 1 seconds

# Адрес сервера на страницах ошибок
# Задать при проблемах с автоматическим определением имени сервера
#visible_hostname proxy.localnet.local

# Отключить кеширование
#cache deny all

# Размер кэша в оперативной памяти
# По умолчанию 256Мб
#cache_mem 256 MB

# Максимальный размер объекта, сохраняемого в оперативной памяти
# Объекты больше заданного размера в памяти не сохраняются
#maximum_object_size_in_memory 512 KB


# Путь и формат лог-файла
#access_log daemon:/var/log/squid/access.log squid
#access_log stdio:/var/log/squid/access.log squid

# Протоколировать параметры запросов
# По умолчанию в целях обеспечения приватности в логе не сохраняются параметры CGI-скриптов
#strip_query_terms off

# Протоколировать http-заголовки
# По умолчанию протоколирование отключено
#log_mime_hdrs on

# Не отправлять заголовок X-Forwarded-For содержащий внутренний IP-адрес клиента
#forwarded_for transparent

# Не отправлять HTTP-заголовок Via с названием и версией прокси-сервера
# Опция нарушает HTTP-стандарт, требуется сборка Squid с параметром LAX_HTTP, он же --enable-http-violations
#via off

# Отключить встроенную ротацию логов
# При ротации логов средствами newsyslog
#logfile_rotate 0

Если необходимо, задаем дополнительные параметры squid.conf:

  • Кэширование контента
  • Ограничения доступа к сайтам и контенту
  • Подмена заголовков в запросе клиента

Отображение местного времени на страницах ошибок Squid

Из коробки на страницах ошибок Squid отображает время по Гринвичу, для отображения местного времени необходимо скорректировать шаблоны ошибок. Параметр шаблона %T указывает мировое время, %t — местное.

Копируем шаблоны ошибок в папку erros.local:

mkdir -p /usr/local/etc/squid/errors.local/ru
cp /usr/local/etc/squid/errors/ru/* /usr/local/etc/squid/errors.local/ru

Заменяем общемировое время (%T), на местное (%t):

sed -i .bak "s/%T/%t/g" /usr/local/etc/squid/errors.local/ru/* && rm /usr/local/etc/squid/errors.local/ru/*.bak

Задаем путь к измененным шаблонам ошибок в squid.conf:

printf "nn #Местное время на страницах ошибокnerror_directory /usr/local/etc/squid/errors.local/run" >> /usr/local/etc/squid/squid.conf

Запуск Squid

Включаем Squid в rc.conf:

squid_enable="YES"

Вручную редактором:

ee /etc/rc.conf

Или командой:

printf 'nsquid_enable="YES"n' >>/etc/rc.conf

Запускаем Squid:

service squid start

Если при старте получаем предупреждение: «WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'«.  Задаем имя сервера параметром «visible_hostname» в конфиге.

Проверяем, запущен ли демон:

ps -ax | grep squid

Проверяем, слушается ли порт:

sockstat | grep squid

Проверяем системный лог на наличие сообщений от Squid:

grep squid /var/log/messages

Проверяем cache.log:

cat /var/log/squid/cache.log

В случае успешного старта вывод будет примерно следующим:

2015/03/25 15:29:32 kid1| Set Current Directory to /var/squid/cache
2015/03/25 15:29:32 kid1| Starting Squid Cache version 3.4.12 for i386-portbld-freebsd10.1...
2015/03/25 15:29:32 kid1| Process ID 32795
2015/03/25 15:29:32 kid1| Process Roles: worker
2015/03/25 15:29:32 kid1| With 14148 file descriptors available
2015/03/25 15:29:32 kid1| Initializing IP Cache...
2015/03/25 15:29:32 kid1| DNS Socket created at [::], FD 7
2015/03/25 15:29:32 kid1| DNS Socket created at 0.0.0.0, FD 8
2015/03/25 15:29:32 kid1| Adding nameserver 8.8.8.8 from /etc/resolv.conf
2015/03/25 15:29:32 kid1| Logfile: opening log daemon:/var/log/squid/access.log
2015/03/25 15:29:32 kid1| Logfile Daemon: opening log /var/log/squid/access.log
2015/03/25 15:29:32 kid1| Store logging disabled
2015/03/25 15:29:32 kid1| Swap maxSize 0 + 262144 KB, estimated 20164 objects
2015/03/25 15:29:32 kid1| Target number of buckets: 1008
2015/03/25 15:29:32 kid1| Using 8192 Store buckets
2015/03/25 15:29:32 kid1| Max Mem  size: 262144 KB
2015/03/25 15:29:32 kid1| Max Swap size: 0 KB
2015/03/25 15:29:32 kid1| Using Least Load store dir selection
2015/03/25 15:29:32 kid1| Set Current Directory to /var/squid/cache
2015/03/25 15:29:32 kid1| Finished loading MIME types and icons.
2015/03/25 15:29:32 kid1| HTCP Disabled.
2015/03/25 15:29:32 kid1| Squid plugin modules loaded: 0
2015/03/25 15:29:32 kid1| Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 11 flags=9
2015/03/25 15:29:32 kid1| Accepting NAT intercepted HTTP Socket connections at local=127.0.0.1:3128 remote=[::] FD 12 flags=41
2015/03/25 15:29:33 kid1| storeLateRelease: released 0 objects

Протокол управления кэшем Squid

Для получения статистики и оперативного управления кэшем, используем squidclient.

Получить общую статистику сервера:

squidclient cache_object://localhost/info

Получить список доступных действий:

squidclient cache_object://localhost/menu

Получить текущие параметры конфигурации:

squidclient -U admin -W пароль cache_object://localhost/config

Для работы этой команды необходимо задать пароль в squid.conf:

# Пароль для различных действий протокола управления кэшем
# По умолчанию пароль не задан, действия требующие ввода пароля отключены
# Используйте all, чтобы задать пароль на все действия
cachemgr_passwd пароль config

Управление кэшем возможно также из браузера. Если на сервере браузер не установлен, можно разрешить доступ с другого компьютера, для этого потребуется скорректировать параметры разрешений в squid.conf:

# IP-адрес, для удаленного управления кэшем
acl CacheManagerIP src 192.168.0.2

# Разрешить удаленное управление кэшем
http_access allow localhost manager
http_access allow CacheManagerIP manager
http_access deny manager

Для управления кэшем используем URL следующего формата: http://адрес:3128/squid-internal-mgr/действие:

  • Статистика сервера — http://192.168.0.1:3128/squid-internal-mgr/info
  • Список доступных действий — http://192.168.0.1:3128/squid-internal-mgr/menu
  • Параметры конфигурации — http://admin:пароль@192.168.0.1:3128/squid-internal-mgr/config

Настройка IPFW

Далее предполагается, что IPFW настроен на примере, предложенном в руководстве FreeBSD.

Открываем rc.conf:

ee /etc/rc.conf

Проверяем, включена ли маршрутизация:

gateway_enable="YES"

Если необходимо, включаем NAT:

natd_enable="yes"               # Включить функцию NATD
natd_interface="em0"            # Название внешнего сетевого интерфейса
natd_flags="-dynamic -m"        # -m = по возможности сохранить номера портов

Находим параметры IPFW:

firewall_enable="YES"
firewall_script="/etc/ipfw.rules"

Запоминаем путь к скрипту с правилами.

Редактируем список правил IPFW:

ee /etc/ipfw.rules

Добавляем правила, выделенные красным, перед правилом, разрешающим доступ в интернет:

#!/bin/sh
cmd="ipfw -q add"
skip="skipto 500"

# Внешний интерфейс
pif=em0

ipfw -q -f flush

# Разрешить SSH-доступ администратору с заданного IP-адреса
# Раскомментируйте, чтобы не перекрыть себе доступ в случае проблем с настройкой брандмауэра
#$cmd 001 allow ip from x.x.x.x to me dst-port 22 in via $pif
#$cmd 001 allow ip from me to x.x.x.x src-port 22 out via $pif

$cmd 002 allow all from any to any via em1  # разрешаем трафик на локальном интерфейсе
$cmd 003 allow all from any to any via lo0  # разрешаем трафик на интерфейсе loopback

$cmd 100 divert natd ip from any to any in via $pif
$cmd 101 check-state

# Разрешаем доступ пользователю Squid
$cmd 124 allow all from me to any out via $pif keep-state uid squid
# Отправляем http-запросы на порт прозрачного прокси
$cmd 125 fwd 127.0.0.1,3128 tcp from 192.168.0.0/16 to any 80 out via $pif keep-state

$cmd 130 $skip all from any to any out via $pif keep-state

# Запрещаем весь входящий трафик с немаршрутизируемых адресных пространств
#$cmd 300 deny all from 192.168.0.0/16  to any in via $pif  #RFC 1918 для локальных IP
$cmd 301 deny all from 172.16.0.0/12   to any in via $pif  #RFC 1918 для локальных IP
$cmd 302 deny all from 10.0.0.0/8      to any in via $pif  #RFC 1918 для локальных IP
$cmd 303 deny all from 127.0.0.0/8     to any in via $pif  #loopback
$cmd 304 deny all from 0.0.0.0/8       to any in via $pif  #loopback
# Закомментировать, если внешний интерфейс использует DHCP
$cmd 305 deny all from 169.254.0.0/16  to any in via $pif  #DHCP авто-конфигурации
$cmd 306 deny all from 192.0.2.0/24    to any in via $pif  #Зарезервировано для документации
$cmd 307 deny all from 204.152.64.0/23 to any in via $pif  #Sun cluster
$cmd 308 deny all from 224.0.0.0/3     to any in via $pif  #Class D & E multicast

# Разрешаем входящие пакеты
#$cmd 400 allow udp from xx.70.207.54 to any 68 in keep-state
#$cmd 420 allow tcp from any to me 80 in via $pif setup limit src-addr 1


$cmd 450 deny log ip from any to any

# Раздел skipto для правил с сохранением состояния для исходящих пакетов
$cmd 500 divert natd ip from any to any out via $pif
$cmd 510 allow ip from any to any

######################## Окончание файла правил ##################

Если менялись параметры rc.conf, включаем маршрутизацию и NAT. Будьте осторожны при настройке брандмауэра с внешнего IP, есть риск перекрыть себе доступ.

service routing restart
service natd start

Загружаем обновленный список правил:

sh /etc/ipfw.rules

Инициируем веб-трафик с клиентского компьютера, проверяем лог доступа:

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

В случае проблем проверяем, работает ли правило брандмауэра:

ipfw show

Счетчик для правила перенаправления (fwd 127.0.0.1,3128) не должен быть нулевым.

Если перенаправление работает, но сайты не открываются, проверяем cache.log на предмет ошибок:

cat /var/log/squid/cache.log

Ротация логов Squid

Проверяем, поддерживается ли вашей системой newsyslog.conf.d

ls /etc/newsyslog.conf.d

Если в вашей системе отсутствует папка newsyslog.conf.d, редактируем newsyslog.conf:

ee /etc/newsyslog.conf

Если папка newsyslog.conf.d имеется, создаем папку с тем же именем в /usr/local/etc:

mkdir /usr/local/etc/newsyslog.conf.d

Создаем файл правил ротации логов Squid:

ee /usr/local/etc/newsyslog.conf.d/squid

Задаем правила ротации логов:

/var/log/squid/access.log squid:squid 600 180 * $D0 JC /var/run/squid/squid.pid 30
/var/log/squid/cache.log  squid:squid 600 180 * $D0 JC /var/run/squid/squid.pid 30
#/var/log/squid/store.log  squid:squid 600  30 * $D0 JC /var/run/squid/squid.pid 30

Выполняем ротацию ежедневно в полночь, сохраняем логи за последние 180 дней, раскомментируйте store.log, если он используется в вашей системе.

Для корректной ротации логов в squid.conf необходимо добавить следующий параметр:

# Отключить встроенную ротацию логов
# При ротации логов средствами newsyslog
logfile_rotate 0

Кэширование контента в Squid

На современных высокоскоростных безлимитных каналах связи кэширование потеряло свою актуальность. Для ускорения работы YouTube и других сетей доставки контента, кэширование также неэффективно, поскольку контент раздается с различных серверов.

По умолчанию дисковый кэш отключен, но в качестве кэша используется 256Мб оперативной памяти.

Полностью запретить кэширование можно добавив следующий параметр в squid.conf:

# Запретить кэширование
cache deny all

Если необходим дисковый кэш, добавляем в squid.conf следующие параметры:

# Кэш: формат, размещение, размер в мегабайтах, число папок первой и второй вложенности
# Указанный размер кэша не учитывает издержки файловой системы и должен быть примерно на 20% меньше доступного дискового пространства
# Директиву cache_dir, можно указать несколько раз, выделив под кэш дополнительные разделы
cache_dir ufs /var/squid/cache 3000 16 256

# Не кэшировать файлы больше заданного размера
# По умолчанию 4Мб
maximum_object_size 320 MB

# Продолжить загрузку при отключении клиента, если осталось загрузить менее указанного объема данных
# Позволяет сохранить объект в кэше при отмене загрузки клиентом
# Значение 0 для quick_abort_min и quick_abort_max отменяют докачку
# Значение -1 включает полную закачку объекта, не зависимо от оставшегося объема, повышает нагрузку на канал
# По умолчанию 16 Кб
quick_abort_min 5 MB

Если путь к кешу был изменен, создаем папку кэша, задаем права доступа:

mkdir -p /usr/local/squid/cache
chown root:squid /usr/local/squid/cache
chmod 770 /usr/local/squid/cache

Создаем структуру кэша:

/usr/local/sbin/squid -z

Ограничения доступа к сайтам и контенту в Squid

С переходом гигантов интернет индустрии на HTTPS ограничение доступа к сайтам на уровне прозрачного прокси больше не эффективно, поскольку HTTPS-трафик прозрачно проксировать не удастся. Для решения проблемы необходимо переходить к традиционному непрозрачному прокси, либо блокировать сайты на уровне DNS.

Фильтрация по типу контента передаваемого по HTTPS-протоколу невозможна ни в прозрачном, ни в не прозрачном режиме.

Для настройки ограничений, корректируем squid.conf следующим образом:

...
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 deny !Safe_ports

# Запретить метод CONNECT не на SSL-порт
http_access deny CONNECT !SSL_ports

# Разрешить только локальное управление кэшем
http_access allow localhost manager
http_access allow manager CacheManagerIP
http_access deny manager

# Запретить доступ к локальным ресурсам сервера через прокси
# Настоятельно рекомендуется задать это правило, чтобы исключить внешний доступ
# к приложениям, принимающим локальные подключения по адресу 127.0.0.1.
http_access deny to_localhost

#
# Задайте свои правила доступа для клиентов
#

# Не ограничивать локальный доступ с сервера
http_access allow localhost

# Не ограничивать доступ администраторам
#http_access allow AdminsIP

# Блокировать запрещенные сайты
#http_access deny RestrictedDomains

# Запретить доступ к сайтам по IP-адресу
#http_access deny UrlIP


# Образец правила разрешающего доступ в интернет из вашей локальной сети
# Список ваших внутренних IP-сетей, задается в acl localnet
http_access allow localnet

# Последнее правило, блокирует все, что не было разрешено выше
http_access deny all


#
#Фильтрация по HTTP-заголовкам в ответе сервера, с HTTPS не работает
#

# Не ограничивать доступ администраторам
#http_reply_access allow AdminsIP

# Блокировать загрузку аудио/видео контента
# Успех блокировки зависит от используемого протокола
# и корректности MIME-типа, отправляемого сервером
#http_reply_access deny MimeAudioVideo

# Разрешить весь остальной контент
http_reply_access allow all



# Адрес и порт для входящих подключений
# Обычно Squid ожидает подключения на порт 3128
# Если требуется только прозрачный прокси, порт можно ограничить внутренним интерфейсом
http_port 3128
#http_port 127.0.0.1:3128
...

Создаем папку для списков контроля доступа:

mkdir /usr/local/etc/squid/AccessLists 

Создаем необходимые списки, значения в списке разделяются новой строкой.

Список IP-адресов с неограниченным доступом:

ee /usr/local/etc/squid/AccessLists/AdminsIP.txt

Список сайтов, доступ к которым запрещен пользователям. Точка в начале адреса блокирует доступ ко всем адресам в заданном домене. Для массовой блокировки развлекательных ресурсов потребуется установка редиректора SquidGuard.

ee /usr/local/etc/squid/AccessLists/RestrictedDomains.txt

Перезапускаем Squid:

service squid restart

Подмена заголовков в запросе клиента в Squid

Дело было на домашнем Debian-сервере. Один из интернет радио порталов напрочь отказывался воспроизводиться на моем музыкальном центре, настойчиво предлагая закрыть плейер и открыть браузер. К сожалению, не смотря на наличие интернета, браузер в музыкальном центре конструкцией не был предусмотрен. Пришлось замаскировать центр под браузер путем подмены заголовка User-Agent с помощью Squid’а и прозрачного проксирования.

Для подмены HTTP-заголовка, добавляем три опции в squid.conf:

# Подмена HTTP-заголовка User-Agent
# Задаем IP-адрес устройства, для которого требуется подмена
acl MediaDevice src 192.168.0.3
# Запрещаем передачу HTTP-заголовка User-Agent
request_header_access User-Agent deny MediaDevice
# Включаем подмену HTTP-заголовка User-Agent, задаем браузер по вкусу ;)
request_header_replace User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0

Перезапускаем Squid:

service squid restart

Поскольку это безобразие нагло нарушает HTTP-стандарт, требуется сборка Squid с параметром LAX_HTTP, он же —enable-http-violations.

Перенос логов доступа Squid

Логи доступа Squid могут занимать достаточно большой объем. На старых установках, где /var/log размещен на отдельном небольшом разделе, приходится перемещать лог доступа в /usr/local.

Создаем папку для логов, задаем права доступа:

mkdir -p /usr/local/squid/log
chown root:squid /usr/local/squid/log
chmod 770 /usr/local/squid/log

Останавливаем Squid:

service squid stop

Перемещаем логи в новое расположение:

mv /var/log/squid/* /usr/local/squid/log

Удаляем папку /var/log/squid и создаем ссылку на /usr/local/squid/log:

rmdir /var/log/squid
ln -s /usr/local/squid/log /var/log/squid

Запускаем Squid:

service squid start

Решение проблем

Предупреждение в cache.log:

WARNING: no_suid: setuid(0): (1) Operation not permitted

Баг Squid появился в версии 3.2, возникает на BSD-системах, из-за некорректного вызова функции setuid.

Баг-репорт: http://bugs.squid-cache.org/show_bug.cgi?id=3785

В зависимости от параметров конфигурации Squid, в некоторых случаях помогает изменение параметра daemon на stdio при указании пути к access.log-у.


Ошибка при запуске Squid:

FATAL: Bungled /usr/local/etc/squid/squid.conf line 64: acl manager proto cache_object

Начиная с версии 3.2 списки контроля доступа: manager, localhost и to_localhost являются предопределенными и создаются сквидом автоматически. При попытке их переопределения в файле конфигурации возникает ошибка. Данные параметры необходимо удалить из конфига.


Ошибка в cache.log:

ERROR: No forward-proxy ports configured.

Не задан порт для входящих подключений. Проверяем наличие в squid.conf директивы:

http_port 3128

В случае с прозрачным прокси, начиная с версии 3.2, необходимо задать две опции http_port. Одина для обычных запросов, вторая для перенаправляемого трафика:

http_port 3128
http_port 127.0.0.1:3128 intercept


При запуске Squid получаем следующие предупреждения:

WARNING: (A) '192.168.0.0/16' is a subnetwork of (B) '::/0'
WARNING: because of this '192.168.0.0/16' is ignored to keep splay tree searching predictable
WARNING: You should probably remove '192.168.0.0/16' from the ACL named 'all'

В файле конфигурации обнаружена декларация acl all. В третьей версии список контроля доступа all является предопределенным и создается сквидом автоматически. При попытке его переопределения в файле конфигурации возникает ошибка. Удалите или переименуйте acl all.


В cache.log постоянно пишутся предупреждения:

WARNING: transparent proxying not supported

При сборке не была включена поддержка прозрачного прокси для вашего брандмауэра. Переустановите Squid из коллекции портов с включением соответствующих параметров.

Установка Squid из коллекции портов

Обновляем коллекцию портов:

portsnap fetch update

Если коллекция портов используется впервые, получаем ее актуальную версию:

portsnap fetch extract

Выполняем настройку порта:

cd /usr/ports/www/squid
make config

В параметрах сборки проверяем, что включена поддержка прозрачного проксирования для используемого брандмауэра и поддержка больших файлов:

[x] LARGEFILE      Support large (>2GB) cache and log files
[x] LAX_HTTP       Do not enforce strict HTTP compliance
...
[ ] TP_IPF         Enable transparent proxying with IPFilter
[x] TP_IPFW        Enable transparent proxying with IPFW
[ ] TP_PF          Enable transparent proxying with PF

Если необходима модификация HTTP-заголовков (использование опций via, request_header_access), также включаем LAX_HTTP, для сборки Squid с параметром —enable-http-violations.

Устанавливаем порт:

make install clean

Если параметры сборки были изменены, блокируем переустановку Squid пакетным менеджером:

pkg lock squid

Пакетный менеджер и кастомизированный Squid

При обновлении, пакетный менеджер обнаружит порт, собранный с нестандартными параметрами и предложит выполнить переустановку. После установки бинарного пакета прозрачный прокси перестанет работать.

Частично проблему можно решить, заблокировав обновление Squid:

pkg lock squid

Теперь пакетный менеджер не будет обновлять Squid, но вместе с ним блокируется обновление и всех его зависимостей. Что рано или поздно приведет к неразрешимому конфликту зависимостей, когда другим пакетам потребуются новые версии библиотек.

Чтобы избежать проблем придется собирать Squid из портов при каждом обновлении, затрагивающем Squid или его зависимости. Процедура обновления получается следующая.

Обновляем коллекцию портов:

portsnap fetch update

Снимаем блокировку обновления пакета:

pkg unlock squid

Обновляем установленные пакеты:

pkg upgrade

Компилируем Squid, будут использованы параметры компиляции, заданные при первичной установке:

cd /usr/ports/www/squid
make

Удаляем Squid:

pkg delete squid

Собираем и устанавливаем Squid:

make install clean

Блокируем переустановку Squid:

pkg lock squid

Перезапускаем Squid:

service squid restart

Настройка ядра (FreeBSD 9.1 и ранее)

Начиная с FreeBSD 9.2 настройка ядра не требуется, форвардинг пакетов отныне включен изначально, параметр IPFIREWALL_FORWARD удален из настроек ядра.

Для работы в режиме прозрачного прокси в версиях системы до 9.2 необходимо обеспечить перенаправление веб-трафика прокси-серверу. Если в качестве брандмауэра используется IPFW, необходимо включить форвардинг пакетов пересобрав ядро с опцией IPFIREWALL_FORWARD.

В ядре GENERIC опция перенаправления по умолчанию отключена. Чтобы проверить, включено ли перенаправление пакетов в вашей системе, выполняем команду:

grep ipfw /var/run/dmesg.boot

Получаем следующий результат:

ipfw2 (+ipv6) initialized, divert loadable, nat loadable, rule-based forwarding disabled, default to deny, logging disabled

Если видим: «rule-based forwarding disabled«, форвардинг отключен, необходимо пересобрать ядро. Если сообщение отсутствует, значит IPFW не настроен.  Если отсутствует параметр «rule-based forwarding», пересборка ядра не требуется.

Получаем идентификатор ядра:

uname -i

Если ранее ядро не изменялось, в результате получаем:

GENERIC

Создаем файл конфигурации ядра IPFORWARD:

ee /usr/src/sys/i386/conf/IPFORWARD

Задаем параметры:

#Импортировать параметры из конфига GENERIC
include GENERIC

#Идентификатор ядра, должен совпадать с названием файла конфигурации ядра, отображается в процессе загрузки
ident IPFORWARD

#Включить перенаправление пакетов
options IPFIREWALL
options IPFIREWALL_FORWARD

Переходим в папку с исходниками системы:

cd /usr/src

Если файлы в /usr/src отсутствуют, необходимо установить исходники, соответствующие вашей версии системы.

Собираем и устанавливаем ядро, используя созданный конфиг:

make kernel KERNCONF=IPFORWARD

Перезагружаем систему:

shutdown -r now

Проверяем идентификатор ядра:

uname -i

В случае успешной установки ядра, в ответ получаем:

IPFORWARD

Проверяем статус IPFW:

grep ipfw /var/run/dmesg.boot

В случае успеха получаем:

ipfw2 (+ipv6) initialized, divert loadable, nat loadable, rule-based forwarding enabled, default to deny, logging disabled

Дополнительная информация

Список всех параметров конфигурации:  /usr/local/etc/squid/squid.conf.documented

Документация на сайте проекта: http://www.squid-cache.org/Doc/

Bog BOS: Squid (кеширующий прокси для http): установка, настройка и использование

Kid1 error no forward proxy ports configured

Добрый день форумчане!
Знаком с FreeBSD не так много как хотелось. НО нет больше сил терпеть и пытаться победить проблему.. и так начну:
Имеется сервак поднятый на с ip-адресом 172.16.0.9
root@Squid:# uname -a
FreeBSD Squid 9.1-RELEASE FreeBSD 9.1-RELEASE #0: Fri Jun 7 16:25:36 MSK 2013 root@squid:/usr/obj/usr/src/sys/MYKERNEL amd64

Ядро собранное с опциями:

Код: Выделить всё
options IPFIREWALL # сам файрвол
options IPFIREWALL_VERBOSE # логгинг пакетов, если в правиле # написано `log`
options IPFIREWALL_FORWARD # перенаправление (форвардинг) пакетов# например, для прозрачного прокси
options DUMMYNET # если понадобится ограничивать скорость # инета пользователям (обычно — да)
options IPFIREWALL_DEFAULT_TO_ACCEPT # дефолтовое правило (последнее)

net.inet.ip.fw.one_pass=0
net.inet.tcp.rfc1323=0
net.inet.icmp.icmplim=0
net.inet.tcp.msl=3000
kern.maxfilesperproc=65536
kern.maxfiles=262144
kern.ipc.maxsockets=131072
kern.ipc.somaxconn=1024
net.inet.tcp.recvspace=16384
net.inet.tcp.sendspace=16384
kern.ipc.nmbclusters=32768
net.inet.ip.forwarding=1

в rc.conf прописано такое — 172.16.0.7 адрес моего устройства Cisco (Asa 5550) с кем сервер и соединяется для создания wccp :

cloned_interfaces=»gre0″
ifconfig_gre0=»inet 172.16.0.9 10.10.10.10 netmask 255.255.255.255 tunnel 172.16.0.9 172.16.0.7 link2 up»

ipfw такие правила

00001 allow ip from any to any via lo0
00002 deny ip from any to 127.0.0.0/8
00003 deny ip from 127.0.0.0/8 to any
00004 allow gre from any to any frag
00200 fwd 172.16.0.9,3130 tcp from any to any dst-port 80 recv gre0
65535 allow ip from any to any

и на конец настройки на ASA конкретно для wccp

ciscoasa# sh run | include wccp
access-list wccp-server extended permit ip host 172.16.0.9 any
access-list wccp-traffic extended deny ip host 172.16.0.9 any
access-list wccp-traffic extended permit ip host 172.16.0.154 any
wccp web-cache redirect-list wccp-traffic group-list wccp-server
wccp interface inside web-cache redirect in

теперь сам кольмар:

root@Squid:/etc # squid -v
Squid Cache: Version 3.3.9
configure options: ‘—with-default-user=squid’ ‘—bindir=/usr/local/sbin’ ‘—sbindir=/usr/local/sbin’ ‘—datadir=/usr/local/etc/squid’ ‘—libexecdir=/usr/local/libexec/squid’ ‘—localstatedir=/var’ ‘—sysconfdir=/usr/local/etc/squid’ ‘—with-logdir=/var/log/squid’ ‘—with-pidfile=/var/run/squid/squid.pid’ ‘—with-swapdir=/var/squid/cache/squid’ ‘—enable-auth’ ‘—enable-build-info’ ‘—enable-loadable-modules’ ‘—enable-removal-policies=lru heap’ ‘—disable-epoll’ ‘—disable-linux-netfilter’ ‘—disable-linux-tproxy’ ‘—disable-translation’ ‘—enable-auth-basic=DB MSNT MSNT-multi-domain NCSA PAM POP3 RADIUS fake getpwnam’ ‘—enable-auth-digest=file’ ‘—enable-external-acl-helpers=file_userip time_quota unix_group SQL_session’ ‘—enable-auth-negotiate=none’ ‘—enable-auth-ntlm=fake smb_lm’ ‘—enable-storeio=diskd rock ufs aufs’ ‘—enable-disk-io=AIO Blocking DiskDaemon IpcIo Mmapped DiskThreads’ ‘—enable-log-daemon-helpers=file’ ‘—enable-url-rewrite-helpers=fake’ ‘—disable-ipv6’ ‘—enable-delay-pools’ ‘—disable-snmp’ ‘—enable-ssl’ ‘—with-openssl=/usr/local’ ‘—enable-ssl-crtd’ ‘—enable-htcp’ ‘—disable-forw-via-db’ ‘—enable-cache-digests’ ‘—enable-wccp’ ‘—enable-wccpv2’ ‘—disable-http-violations’ ‘—disable-eui’ ‘—enable-ipfw-transparent’ ‘—disable-pf-transparent’ ‘—disable-ipf-transparent’ ‘—enable-follow-x-forwarded-for’ ‘—enable-ecap’ ‘—enable-icap-client’ ‘—disable-esi’ ‘—enable-kqueue’ ‘—with-large-files’ ‘—disable-optimizations’ ‘—enable-debug-cbdata’ ‘—prefix=/usr/local’ ‘—mandir=/usr/local/man’ ‘—infodir=/usr/local/info/’ ‘—build=amd64-portbld-freebsd9.1’ ‘build_alias=amd64-portbld-freebsd9.1’ ‘CC=cc’ ‘CFLAGS=-pipe -I/usr/local/include -I/usr/local/include -g’ ‘LDFLAGS= -pthread -Wl,-rpath=/usr/local/lib -L/usr/local/lib -L/usr/local/lib’ ‘CPPFLAGS=’ ‘CXX=c++’ ‘CXXFLAGS=-pipe -I/usr/local/include -I/usr/local/include -g’ ‘CPP=cpp’

некоторые настройки из squid.conf

acl localnet src 172.16.0.0/16
http_access allow localnet
http_access deny all
#прозрачный порт для 80го порта (Http)

http_port 172.16.0.9:3130 intercept

#порт необходим для нормальной работы кольмара
http_port 127.0.0.1:3128

wccp2_router 172.16.0.7
wccp2_forwarding_method gre
wccp2_return_method gre
wccp2_service standard 0

И так суть проблемы: при завороте на ASA пользователя на пример 172.16.0.154 то происходит зависание на минутку (в принципе логично пока не создатся маршрутизация на са и не пойдт пакеты по новому) и после начинает отрабатывать как положено всё. Счетчик ipfw растет

00001 0 0 allow ip from any to any via lo0
00002 0 0 deny ip from any to 127.0.0.0/8
00003 0 0 deny ip from 127.0.0.0/8 to any
00004 44 2112 allow gre from any to any frag
00200 414 132913 fwd 172.16.0.9,3130 tcp from any to any dst-port 80 recv gre0

Но проблема в другом — если я заворачиваю не одного пользователя, а под сеть 172.16.1.0/24 то у всех пользователей странички интернет не открываются и вываливается сообщение от Squid Operation time out. В общем отваливаются странички по таймауту. я уже не знаю что делать и как победить проблему. Прошу помощи. :st: Нет сил, нет нервов.
При этом в access.log тишина — будто пользователь вообще не куда не пытался зайти. HELP

Ответить | Правка | Cообщить модератору

  • FreeBSD: squid (прозрачный) + wccp, михалыч, 17:25 , 09-Окт-13, (1)
    • FreeBSD: squid (прозрачный) + wccp, LoneFoxx, 17:27 , 09-Окт-13, (2)
      • FreeBSD: squid (прозрачный) + wccp, михалыч, 17:31 , 09-Окт-13, (3)
        • FreeBSD: squid (прозрачный) + wccp, LoneFoxx, 17:36 , 09-Окт-13, (4)
          • FreeBSD: squid (прозрачный) + wccp, михалыч, 17:40 , 09-Окт-13, (5)
            • FreeBSD: squid (прозрачный) + wccp, LoneFoxx, 17:46 , 09-Окт-13, (6)
              • FreeBSD: squid (прозрачный) + wccp, михалыч, 17:52 , 09-Окт-13, (7)
                • FreeBSD: squid (прозрачный) + wccp, LoneFoxx, 19:03 , 09-Окт-13, (8)
                  • FreeBSD: squid (прозрачный) + wccp, михалыч, 07:22 , 10-Окт-13, ( 9 )
                    • FreeBSD: squid (прозрачный) + wccp, LoneFoxx, 08:32 , 10-Окт-13, ( 10 )
                      • FreeBSD: squid (прозрачный) + wccp, LoneFoxx, 10:45 , 10-Окт-13, ( 11 )
                        • FreeBSD: squid (прозрачный) + wccp, михалыч, 13:27 , 10-Окт-13, ( 12 )
                        • FreeBSD: squid (прозрачный) + wccp, LoneFoxx, 00:36 , 12-Окт-13, ( 13 )
Сообщения по теме [Сортировка по времени | RSS]

> http_port 172.16.0.9:3130 intercept
> http_port 127.0.0.1:3128

А разве так можно?

Ну попробуйте только так
http_port 3128 intercept
или так
http_port 3130 intercept
но не обе строки сразу

1. » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от михалыч (ok) on 09-Окт-13, 17:25
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от LoneFoxx (ok) on 09-Окт-13, 17:27

>> http_port 172.16.0.9:3130 intercept
>> http_port 127.0.0.1:3128
> А разве так можно?
> Ну попробуйте только так
> http_port 3128 intercept
> или так
> http_port 3130 intercept
> но не обе строки сразу

в версии 3.1 и выше для прозрачности необходимо что бы было http_port 3128 иначе сыпится с ошибками.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от михалыч (ok) on 09-Окт-13, 17:31

>>> http_port 172.16.0.9:3130 intercept
>>> http_port 127.0.0.1:3128
>> А разве так можно?
>> Ну попробуйте только так
>> http_port 3128 intercept
>> или так
>> http_port 3130 intercept
>> но не обе строки сразу
> в версии 3.1 и выше для прозрачности необходимо что бы было http_port
> 3128 иначе сыпится с ошибками.

А вам принципиально порт 3130 использовать?
Попробуйте только порт 3128, ну и fwd на него разумеется.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от LoneFoxx (ok) on 09-Окт-13, 17:36

>[оверквотинг удален]
>>> А разве так можно?
>>> Ну попробуйте только так
>>> http_port 3128 intercept
>>> или так
>>> http_port 3130 intercept
>>> но не обе строки сразу
>> в версии 3.1 и выше для прозрачности необходимо что бы было http_port
>> 3128 иначе сыпится с ошибками.
> А вам принципиально порт 3130 использовать?
> Попробуйте только порт 3128, ну и fwd на него разумеется.

без http_port 3129 в cache.log сыпится:
2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.
2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.

http_port 3129
http_port 172.16.0.9:3128 intercept
01200 166 16347 fwd 172.16.0.9,3128 tcp from not me to not me dst-port 80 recv gre0
так же как и было — счетчик растет пакетов — страницы по таймауту вылетают.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от михалыч (ok) on 09-Окт-13, 17:40

>[оверквотинг удален]
>> Попробуйте только порт 3128, ну и fwd на него разумеется.
> без http_port 3129 в cache.log сыпится:
> 2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.
> 2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.
> http_port 3129
> http_port 172.16.0.9:3128 intercept
> 01200 166 16347 fwd 172.16.0.9,3128 tcp
> from not me to not me dst-port 80 recv gre0
> так же как и было — счетчик растет пакетов — страницы по
> таймауту вылетают.

В логах что?
Строка http_port 3129 обязательна? Без неё сквид запускается?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от LoneFoxx (ok) on 09-Окт-13, 17:46

>[оверквотинг удален]
>> 2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.
>> 2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.
>> http_port 3129
>> http_port 172.16.0.9:3128 intercept
>> 01200 166 16347 fwd 172.16.0.9,3128 tcp
>> from not me to not me dst-port 80 recv gre0
>> так же как и было — счетчик растет пакетов — страницы по
>> таймауту вылетают.
> В логах что?
> Строка http_port 3129 обязательна? Без неё сквид запускается?

в access.log пустота — от пользователя не было запроса будто бы.

с версии 3.1 строка http_port 3128 (не важно какой порт) стала обязательной при конфигурации прозрачного прокси. иначе в логах постоянно гадит
2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.
2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.
а запускаться запускается, он вот результат тот же.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от михалыч (ok) on 09-Окт-13, 17:52

>[оверквотинг удален]
>>> так же как и было — счетчик растет пакетов — страницы по
>>> таймауту вылетают.
>> В логах что?
>> Строка http_port 3129 обязательна? Без неё сквид запускается?
> в access.log пустота — от пользователя не было запроса будто бы.
> с версии 3.1 строка http_port 3128 (не важно какой порт) стала обязательной
> при конфигурации прозрачного прокси. иначе в логах постоянно гадит
> 2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.
> 2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.
> а запускаться запускается, он вот результат тот же.

это выглядит сомнительно fwd 172.16.0.9,3128 tcp from not me to not me dst-port 80 recv gre0
лучше так fwd 172.16.0.9,3128 tcp from 172.16.0.0/16 to not me 80

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от LoneFoxx (ok) on 09-Окт-13, 19:03

>[оверквотинг удален]
>> с версии 3.1 строка http_port 3128 (не важно какой порт) стала обязательной
>> при конфигурации прозрачного прокси. иначе в логах постоянно гадит
>> 2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.
>> 2013/10/09 17:36:33 kid1| ERROR: No forward-proxy ports configured.
>> а запускаться запускается, он вот результат тот же.
> это выглядит сомнительно fwd 172.16.0.9,3128 tcp from not me to not me
> dst-port 80 recv gre0
> лучше так fwd 172.16.0.9,3128 tcp from 172.16.0.0/16 to not me 80
> пакеты gre не проскакивают? mtu на сервере понизить?
> посмотрите ещё здесь http://www.opennet.ru/openforum/vsluhforumID12/4724.html

пакеты по правилу что я добавляю (в том числе и ваше) ходят счетчик растет но страницы не открываются, отваливаются по таймауту.

c правилом что Вы сказали — результат тот же.. Про mtu стоит 1500

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9 . » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от михалыч (ok) on 10-Окт-13, 07:22

>[оверквотинг удален]
>>> а запускаться запускается, он вот результат тот же.
>> это выглядит сомнительно fwd 172.16.0.9,3128 tcp from not me to not me
>> dst-port 80 recv gre0
>> лучше так fwd 172.16.0.9,3128 tcp from 172.16.0.0/16 to not me 80
>> пакеты gre не проскакивают? mtu на сервере понизить?
>> посмотрите ещё здесь http://www.opennet.ru/openforum/vsluhforumID12/4724.html
> пакеты по правилу что я добавляю (в том числе и ваше) ходят
> счетчик растет но страницы не открываются, отваливаются по таймауту.
> c правилом что Вы сказали — результат тот же.. Про mtu
> стоит 1500

Шайтан, однако.
Ну, послушайте tcpdump -i gre0
Пакеты туда-сюда бегают? Или сюда-туда?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10 . » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от LoneFoxx (ok) on 10-Окт-13, 08:32

>[оверквотинг удален]
>>> лучше так fwd 172.16.0.9,3128 tcp from 172.16.0.0/16 to not me 80
>>> пакеты gre не проскакивают? mtu на сервере понизить?
>>> посмотрите ещё здесь http://www.opennet.ru/openforum/vsluhforumID12/4724.html
>> пакеты по правилу что я добавляю (в том числе и ваше) ходят
>> счетчик растет но страницы не открываются, отваливаются по таймауту.
>> c правилом что Вы сказали — результат тот же.. Про mtu
>> стоит 1500
> Шайтан, однако.
> Ну, послушайте tcpdump -i gre0
> Пакеты туда-сюда бегают? Или сюда-туда?

пакеты и запросы только от пользователей направленные cisco. От прокси не каких.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11 . » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от LoneFoxx (ok) on 10-Окт-13, 10:45

>[оверквотинг удален]
>>>> пакеты gre не проскакивают? mtu на сервере понизить?
>>>> посмотрите ещё здесь http://www.opennet.ru/openforum/vsluhforumID12/4724.html
>>> пакеты по правилу что я добавляю (в том числе и ваше) ходят
>>> счетчик растет но страницы не открываются, отваливаются по таймауту.
>>> c правилом что Вы сказали — результат тот же.. Про mtu
>>> стоит 1500
>> Шайтан, однако.
>> Ну, послушайте tcpdump -i gre0
>> Пакеты туда-сюда бегают? Или сюда-туда?
> пакеты и запросы только от пользователей направленные cisco. От прокси не каких.

root@Squid:/ # tcpdump -i gre0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on gre0, link-type NULL (BSD loopback), capture size 65535 bytes
10:40:43.916786 IP 172.16.0.154.60980 > opennet.ru.http: Flags [P.], seq 3900111775:3900112268, ack 1519792743, win 63582,
10:40:43.975042 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 1517, win 64240, length 0
10:40:43.976111 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 2984, win 64240, length 0
10:40:43.980339 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 5672, win 64240, length 0
10:40:43.982381 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 7139, win 64240, length 0
10:40:43.984340 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 9789, win 64240, length 0
10:40:43.985869 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 12445, win 64240, length 0
10:40:43.986544 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 13906, win 64240, length 0
10:40:43.987397 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 15373, win 64240, length 0
10:40:44.016198 IP 172.16.0.154.60975 > opennet.ru.http: Flags [P.], seq 3675161970:3675162432, ack 3512929227, win 63672,
10:40:44.016967 IP 172.16.0.154.60976 > opennet.ru.http: Flags [P.], seq 1753389993:1753390471, ack 4059398955, win 62809,
10:40:44.017068 IP 172.16.0.154.60979 > opennet.ru.http: Flags [P.], seq 4193142386:4193142862, ack 2531488649, win 63672,
10:40:44.026184 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 18023, win 64240, length 0
10:40:44.029762 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 19490, win 64240, length 0
10:40:44.031895 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 22416, win 64240, length 0
10:40:44.033103 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 23883, win 64240, length 0
10:40:44.039464 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 26809, win 64240, length 0
10:40:44.041044 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 28276, win 64240, length 0
10:40:44.043069 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 31202, win 64240, length 0
10:40:44.044711 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 32669, win 64240, length 0
10:40:44.080885 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 35595, win 64240, length 0
10:40:44.082170 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 37062, win 64240, length 0
10:40:44.086345 IP 172.16.0.154.60980 > opennet.ru.http: Flags [.], ack 39988, win 64240, length 0

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12 . » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от михалыч (ok) on 10-Окт-13, 13:27

Установить в squid.conf Full debugging (level 9)
debug_options ALL,9

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13 . » FreeBSD: squid (прозрачный) + wccp» + / –
Сообщение от LoneFoxx (ok) on 12-Окт-13, 00:36

> Установить в squid.conf Full debugging (level 9)
> debug_options ALL,9

Добрый день, и так нашел я вроде бы причину. всё описанное выше правда и всё это работает правильно, но. на одной промежуточной cisco стояло ограничение в количестве соединений и моя freebsd просто убивалась в этот предел — команда выглядит что то вроде ip nat translation max-(что то там) 200! то есть 200 соединений максимум на хост поэтому при завороте подсети ничего не открывалось. Спасибо всем!)

Источник

Читайте также:  Disco elysium одежда error

Adblock
detector

  • Печать

Страницы: [1]   Вниз

Тема: SQUID работает, но в логах десятки ошибок  (Прочитано 3942 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
OptionBase

всем привет!
Помогите пожалуйста разобраться, Кальмар работает но в логах десятки ошибок, уже незнаю куда копать (((
ubuntu 16.04 server
squid Version 3.5.12

Вот конфиг кальмара:

вот настройки iptables

а вот логи:

строк с ошибкой ERROR: No forward-proxy ports configured намного больше, я их вырезал, потому что не вмещались в пост

если не обращать внимание на эту ошибку, то в принципе, нареканий на работу Кальмара у меня нет, но хочу понять откуда эта ошибка берется

заранее благодарен


Оффлайн
fisher74

Начиная с версии 3.2, в случае организации прозрачного прокси необходимо задать две опции http_port. Одна для обычных запросов, вторая для перенаправляемого трафика

http_port 3128
http_port 127.0.0.1:3128 intercept
Источник

Кстати, для редиректа желательно указывать лупбэк, а не адрес физического интерфейса

« Последнее редактирование: 21 Июня 2016, 21:09:08 от fisher74 »


Оффлайн
OptionBase

fisher74 спасибо за ответ, добавил http_port 3128 ошибка ERROR: No forward-proxy ports configured исчезла
а могли бы вы еще подсказать, что означают другие ошибки из лога:

например эти:
commBind: Cannot bind socket FD 19 to [::1]: (99) Cannot assign requested address
ERROR: Failed to create helper child read FD: UDP[::1]
ERROR: listen( FD 18, [::] [ job2], 16383): (98) Address already in use

заранее благодарен!


Оффлайн
fisher74

commBind: Cannot bind socket FD 19 to [::1]: (99) Cannot assign requested address

Эта ошибка относится к другому сервису (bind), потому оффтоп. Но если перевести…

ERROR: listen( FD 18, [::] [ job2], 16383): (98) Address already in use

sudo netstat -nap inet | grep LISTEN | grep 16383


Оффлайн
OptionBase

да действительно, имеются еще какие то траблы с ДНС, тогда заведу отдельный топик

а по команде вывод нулевой, т.е. ничего не происходит…


Оффлайн
fisher74

Останавливаем кальмара

sudo service squid3 stopи смотрим, кто ещё в теремочке живёт

sudo netstat -nap inet | grep LISTEN | grep 3128


Оффлайн
OptionBase

прошу прощения,первый раз затупил с портом
вобщем, если останавливаю Кальмар то ответ нулевой
а если на запущенном Кальмаре то ответ такой:

а может не заморачиваться с портом 3128, а указать второй 3129,он вроде как свободен?
во всяком случае пока невыявил какие службы используют порт 3129
вывод Вашей команды показывает по этому порту пустой ответ
заменил в строке http_port 3128 порт и указал http_port 3129
результат рабочий
данной ошибки нет
выскажите пожалуйста свое мнение

п.с. Ваш совет по поводу замены http_port 192.168.0.1:3128 intercept на строку http_port 127.0.0.1:3128 intercept не сработал, Кальмар вроде как работал, в логах ничего критического не увидел, но страницы в браузере не открывались, поэтому оставил как есть.


Оффлайн
AnrDaemon

Ваш совет по поводу замены http_port 192.168.0.1:3128 intercept на строку http_port 127.0.0.1:3128 intercept не сработал, Кальмар вроде как работал, в логах ничего критического не увидел, но страницы в браузере не открывались, поэтому оставил как есть.

А редирект вы исправили?

Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…


Оффлайн
OptionBase

Здравствуйте AnrDaemon
у меня в редиректе вообще отсутствует адрес 127.0.0.1, имеется только порт:

сейчас в конфиге кальмара вообще убрал все адреса:
http_port 3128 intercept
http_port 3129
работа стала стабильнее
если же использовать адреса, то иногда, после рестарта машины, приходилось отдельно рестартовать кальмар, иначе не поднимался аксепт nat, в логах отсутствовала строка:


Оффлайн
AnrDaemon

Отсутствует строка, хорошо, а что вместо неё? Если он что-то не может сделать, он обычно ругается.

Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…


Оффлайн
OptionBase

ничего не было
например если сейчас в логах имеем 2 строки с акцептом:

то во-втором случае отсутствовала строка с акцептом NAT:

остальные ошибки присутствуют постоянно, собственно ради выяснения причин этих ошибок я и завел эту ветку
ошибки такие:


Оффлайн
AnrDaemon

[::] это ipv6 эквивалент 0.0.0.0.
Можно игнорировать, если вы не используете ipv6.

Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…


Оффлайн
OptionBase

AnrDaemon, можно уточнить?

2016/06/23 07:38:55 kid1| commBind: Cannot bind socket FD 13 to [::1]: (99) Cannot assign requested address
2016/06/23 07:38:55 kid1| commBind: Cannot bind socket FD 14 to [::1]: (99) Cannot assign requested address
2016/06/23 07:38:55 kid1| ERROR: Failed to create helper child read FD: UDP[::1]

Вы имели ввиду, что эти ошибки можно игнорить, потому что тут речь идет о  ipv6?


Оффлайн
AnrDaemon

Да. Если сильно смущает, поищите, как вообще отключить ipv6 поддержку, чтобы он даже и не пытался.

Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…


Оффлайн
OptionBase

отключать не буду
достаточно иметь понимание что означает ошибка и откуда она появилась

парни, спасибо за помощь!


  • Печать

Страницы: [1]   Вверх


0

1

Вроде бы со squid все уже давно понятно, все зубы об него уже сьел,ан нет фокусы продолжаются.

У меня 3 одинаковых шлюза. Стоит fedora 16 на всех стоял squid-3.2.0.16-1.fc16.i686 до недавнего времени, на непокорном шлюзе обновил до squid-3.2.5-1.fc16.i686 но проблема не решилась.
А проблема в том что на этом одном шлюзе не работает прозрачный режим. В обычном режиме все пучком, в прозрачном режиме…. даже логи squid-а пустые, запрещенный явно сайт не открывается, но и не выскакивает мое сообщение о запрете.
Анализ tcpdump показывает что запросы идут напрямую, все в iptables вроде бы как всегда редиректится 80 порт на 3128.
Где то на просторах Инета натыкался что надо еще открыть для прозрачного порт 3129 иначе в логах ошибка «no forward-proxy ports configured» открываю порт, да сообшение об ошибке пропадает но сквид все равно не работает как надо. Причем до фонаря какой порт указать 3129 или любой другой. Вообще зачем это? можетя что то пропустил в изменении идеологии сквида?

Подскажите что может мешать работе свида, на всякий случай мой конфиг:

http_port 127.0.0.1:3128 intercept
http_port 172.16.1.100:3128 intercept
# пробовал 
#http_port 172.16.1.100:3128 transparent
error_directory /etc/squid/errors

acl sekvestr src «/etc/squid/limit»
acl office src «/etc/squid/good_user»

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 Safe_ports port 5190 # icq
acl CONNECT method CONNECT

dns_nameservers 127.0.0.1 8.8.8.8

acl belii url_regex -i «/etc/squid/bad_url/white»
acl banners url_regex «/etc/squid/bad_url/banners»
acl bad_urlpath urlpath_regex «/etc/squid/bad_url/bad_urlpath

acl bad url_regex »/etc/squid/bad_url/bad"
acl game url_regex «/etc/squid/bad_url/game»

acl mp3 url_regex -i «/etc/squid/bad_url/mp3»

http_access allow belii
http_access deny banners
deny_info ERR_ACCESS_TRAFIK sekvestr

http_access deny bad
deny_info ERR_PORNO bad

http_access deny game
http_access deny bad_urlpath

http_access deny sekvestr
http_access allow office
http_access allow localhost
http_access deny manager

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localhost
http_access allow office

http_access deny all

cache_dir ufs /var/spool/squid 100 16 256

coredump_dir /var/spool/squid

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
cache_effective_user squid
cache_effective_group squid

Правила iptables:

/sbin/iptables -A INPUT -s $SETKA1 -d $GW -m tcp -p tcp --dport 3128 -j ACCEPT
/sbin/iptables -A OUTPUT -s $GW -d $SETKA1 -m tcp -p tcp --sport 3128 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -p tcp -i p1p1 -s $ip_admin --dport 80 -j REDIRECT --to-port 3128
# пробовал и так
#/sbin/iptables -t nat -A PREROUTING -p tcp -i p1p1 -s $ip_admin --dport 80 -j DNAT --to-destination 172.16.1.100:3128

Конфиги и правила фаера с работающими проксями сравнивал по буквам вроде бы…. Я уже не знаю куда еще нужно смотреть, посоветуйте, коллеги.

  • Home
  • Forum
  • The Ubuntu Forum Community
  • Ubuntu Specialised Support
  • Ubuntu Servers, Cloud and Juju
  • Server Platforms
  • Squid None Aborted problem

  1. Squid None Aborted problem

    I am using squid 3.5.8 and ubuntu 14.04.3 LTS…
    always getting NONE_ABORTED/000 or TCP_MISS_ABORTED/000. My internal network gets slow after it.

    When i see cache.log…
    root@seco:/home/seckin# tailf /var/log/squid/cache.log
    2015/11/08 17:54:02 kid1| ERROR: No forward-proxy ports configured.
    2015/11/08 17:54:02 kid1| ERROR: No forward-proxy ports configured.
    2015/11/08 17:54:37 kid1| ERROR: No forward-proxy ports configured.
    2015/11/08 17:54:37 kid1| ERROR: No forward-proxy ports configured.

    What is the problem.can you help me ?
    thank you very much

    Last edited by secoonder; November 8th, 2015 at 05:40 PM.


  2. Re: Squid None Aborted problem

    Hi,

    any suggestion on the above post?

    Thanks
    Seckin


  3. Re: Squid None Aborted problem

    Did you Google for that error string «TCP_MISS_ABORTED/000» and happen to read this: http://superuser.com/questions/90959…p-miss-aborted

    Are you using IPv6? Does your provider? If so, you might try the recommendation in the last reply in that thread, to add

    to squid.conf and restart the proxy. Even if you’re not sure about IPv6, it won’t hurt to try that suggestion.


  4. Re: Squid None Aborted problem

    Thank you for your answer.
    we are not using ipv6.
    i added
    «dns_v4_first on» in the squid.conf and restart the proxy.Unfortunately,the problem is not solved…
    root@seco:/home/seckin# tailf /var/log/squid/access.log
    1446998020.074 1747 192.168.4.52 TAG_NONE_ABORTED/000 0 POST http://gn.symcd.com/ — HIER_NONE/- —
    1446998020.829 2203 192.168.4.52 TAG_NONE_ABORTED/000 0 POST http://vassg142.ocsp.omniroot.com/ — HIER_NONE/- —
    1446998020.829 2203 192.168.4.52 TAG_NONE_ABORTED/000 0 POST http://vassg142.ocsp.omniroot.com/ — HIER_NONE/- —

    When i saw cache.log…
    root@seco:/home/seckin# tailf /var/log/squid/cache.log
    2015/11/08 17:54:02 kid1| ERROR: No forward-proxy ports configured.
    2015/11/08 17:54:02 kid1| ERROR: No forward-proxy ports configured.
    2015/11/08 17:54:37 kid1| ERROR: No forward-proxy ports configured.
    2015/11/08 17:54:37 kid1| ERROR: No forward-proxy ports configured.
    i read a lot of documents.
    «»»you should changed these lines:»»»»

    http_port 3128 transparent
    to
    http_port 3128 intercept
    http_port 3129 i changed them in squid.conf
    # General
    http_port 3128 intercept
    http_port 3129
    visible_hostname Proxy
    forwarded_for delete
    via on
    dns_v4_first on
    acl seckin src 192.168.4.0/24
    http_access allow seckin

    i did not take an «No forward-proxy ports configured.» error.
    «cache.log» is clear.

    But i took an same error in access.log
    root@seco:/home/seckin# tailf /var/log/squid/access.log
    1446998020.074 7 192.168.4.52 TAG_NONE_ABORTED/000 0 POST http://spor.mynet.com— HIER_NONE/- —
    1446998020.829 7 192.168.4.52 TAG_NONE_ABORTED/000 0 POST http://spor.mynet.com/ — HIER_NONE/- -.

    And My internal network is very slow because of this problem.

    My ubuntu Version is 14.04.3 LTS
    Squid Version is 3.5.8

    could the bug of ubuntu 14.04 ? May be ?

    Any ideas?

    Thank you very much

    Last edited by secoonder; November 8th, 2015 at 05:41 PM.


  5. Re: Squid None Aborted problem

    From what I read while skimming the discussions that Google search brought up, the bug might be in Squid itself. I have a client where we run Squid, but we’re using 3.1.23 on CentOS 6.6. We don’t have any of those «ABORTED» errors in access.log. We’re running in transparent mode with

    Code:

    http_port 3128 transparent

    in squid.conf and this iptables rule:

    Code:

    iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 3128 -s 10.1.2.0/24 --destination-port 80

    where 10.1.2.0/24 is the address of the LAN network. We handle HTTPS traffic outside of squid. At some point we might implement ssl_bump, but we would need to install certificates in all the client browsers to make that work transparently.


  6. Re: Squid None Aborted problem

    Ok Thank you SeijiSensei.

    İ am installed 12.04 and squid 3.1
    The problem is solved


  7. Re: Squid None Aborted problem

    Hello again.
    As a result of long study i solved the problem.i installed ubuntu 14.04 and squid 3.5.
    i added tcp_outgoing_address 1.2.3.4(My outbound interface ip).The problem is solved.
    and i added
    http_port 3128 transparent ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB key=/etc/mydlp/ssl/private.pem cert=/etc/mydlp/ssl/public.pem
    http_port 3129 transparent ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB key=/etc/mydlp/ssl/private.pem cert=/etc/mydlp/ssl/public.pem
    and i installed the certifica to clients.
    https redirected succesfully on my proxy server.But i took en error when the client requested https.(http is no problem)
    in access.log
    2016/02/28 16:02:15| clientNegotiateSSL: Error negotiating SSL connection on FD 16
    2016/02/28 16:02:15| clientNegotiateSSL: Error negotiating SSL connection on FD 16
    2016/02/28 16:02:15| clientNegotiateSSL: Error negotiating SSL connection on FD 16

    Can you help me? Thank you


Bookmarks

Bookmarks


Posting Permissions

Понравилась статья? Поделить с друзьями:
  • Kia ошибка tmps
  • Kia ошибка b137800
  • Kia sportage ошибка u0122
  • Kia sportage ошибка p1614
  • Kia sportage ошибка c1688