Error invalid request squid

Часть 3. squid3, ssl — не работает Собрал на дебиане (7.1) squid с поддержкой ssl (—enable-ssl и —enable-ssl-crtd). Делаем например вот так — не работает. Эксперименты с http_port и https_port, разными портами для http и https ни к чему не ведут. В браузере имеем ERR_SSL_PROTOCOL_ERROR (хром) либо другие подобные ошибки. У меня уже сил […]

Часть 3. squid3, ssl — не работает

Собрал на дебиане (7.1) squid с поддержкой ssl (—enable-ssl и —enable-ssl-crtd). Делаем например вот так — не работает. Эксперименты с http_port и https_port, разными портами для http и https ни к чему не ведут. В браузере имеем ERR_SSL_PROTOCOL_ERROR (хром) либо другие подобные ошибки.

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

п.с. Сертификат свой браузеру не скармливал, вроде как можно без этого обойтись.

Логи подробнее смотри, плюс браузер что-то должен подробнее показывать. И ошибка точно в браузере? Или тебе ее сквид показывает?

Ошибко чисто в браузере, это не сквид.

Такое ощущение, что squid не знает про https

У тебя сквид случаем не в прозрачном режиме-то?

Для http прозрачный, для ssl-bump нет.

Ну чего ты тогда хочешь-то? 🙂

Сквид ожидает от клиента какой-то метод, аля CONNECT, а получает болт.

SSL-Bump не работает в прозрачном режиме, это ограничение самих протоколов.

Таак, т.е. нужно _не_использовать_ transparent? Метод connect использовать для всех соединений, или только для SSL?

Нужно не использовать переадресацию HTTPS соединений через iptables, только прописыванием прокси в браузере.

Прозрачное проксирование будет работать только для HTTP без шифрования.

Тут фишка заблочить некоторые ресурсы, потому прописывание прокси в браузере — не вариант. Меня устроит любое проксирование (в т.ч. непрозрачное), но лишь бы оно проксировало https.

Тебе хочется странного. Прозрачное — перенаправление траффика файрволлом в прокси. Непрозрачное — прописывание прокси в броузере.

Третьего не дано собсно.

Чтобы сгенерировать сертификат, сквиду нужен хостнейм, но при прозрачном проксировании он его получить не может. Максимум что можно сделать — на все HTTPS сайты выдавать какой-то один сертификат левый.

Добавь transparent к порту с ssl_bump, как-то заработать должно.

Что-то умело подобное 3proxy, но это очень, очень всё сыро и криво. Прозрачно проксировать https я понимаю весьма не тривиальная штуковина.

Добавил transparent. В логах та же хрень, что и выше, не заходит.

Может еще потребоваться в конфиге прописать сначала порт без transparent (выбрать неиспользуемый). Какую ошибку так обходят уже не вспомню.

Т.е. нужно качать свежак и собирать?

Да, читал про это, но не проверял.

Девелоперы там же описывают минусы такого подхода

Но у автора в любом случае 3.1, если он соберёт 3.3, то можно что-то забацать.

Да.
В 3.2 сделали прозрачное проксирование шифрованных, а в 3.3 — BumpSslServerFirst.

Да и то, стабильность работы с таким конфигом под вопросом.

В чем выражается «нестабильность» работы, если не секрет?

Условия воспроизведения я так и не понял.
Срабатывание

Там прозрачный прокси, icap задействован.

Соответственно, падает воркер и Главный процесс его перезапускает. В это время клиенты, естественно, не могут ходить в инет

Ясно. В общем походу гемор, ставить прозрачный прокси на 80-й порт, а остатки резать на 443-м.

Благодарю! Как в Вашем случае работает ssl? Пользователь получает скормленный кальмару сертификат при попытке соединится по https?

Да, именно так. Но у нас сертификат от Comodo Security, и браузері не слишком достают пользователей для подтверждения исключения безопасности.

Вообще, я привёл кусок этого конфига в качестве такового, как оно заработало у меня.

Но задача у меня иного рода — просто вести учёт на какие сайты ходили пользователи. Без фильтрации контента и URL. Самое первое что пришло в голову — это прозрачный прокси. Сейчас это работает в тестовом режиме. Не уверен в беспроблемности и полной работоспособности такой конфигурации.

Да, кстати, подобную конфигурацию я уже смотрел:

Хм. Возможно важен порядок следование acl ?

Не пробовали вынести ssl_bump allow all перед всеми остальными ssl_bump ?

Без разницы. Я уже вчера накатил обычный сквид без ssl, после прочтения сообщения накатил с —enable-ssl. Щас пересобираю еще и с —enable-ssl-crtd (на всякий пожарный)

В squid 3.2 доступно только ssl_bump allow/deny. То есть ssl_bump client-first/server-first — не нужны.

У меня 3.1. Судя по этому — http://www.squid-cache.org/Versions/v3/3.1/cfgman/ssl_bump.html — дока один в один с 3.2. Щас тестирую.

У меня тоже 3.1, но вот дистрибутивы у нас отличаются.

У меня openSUSE 12.2, у вас — Debian 7. Возможно набор патчей отличается.

На всякий случай приведу флаги сборки сквида в сюзи:

А теперь бы разобрать, что ему не хватает.

С данной конфигурацией браузер орет, что сертификат не является доверенным.

Скорее всего, потому, что ваш сертификат самоподписанный.

В моём случае у нас был в наличии купленный сертификат, и подписанный доверенной организацией, которая, по видимому, входит в Trusted CA браузера.

В вашем случае, нужно импортировать ваш сертификат в пользовательские браузеры. Например, как было сделано здесь: http://habrahabr.ru/post/168515/

Я читал, там все равно нужно подкладывать сертификат браузерам. Ради этого кстати компилил с —enable-ssl-crtd.

Щас более подробно изучаю вот это: http://ubuntuforums.org/showthread.php?t=2049290 — тут тоже 3.1 (3.1.19).

Скормил сертификат браузеру — нихрена. Щас попробую метод, который описан на швабре.

Так-с, а можно в студию список файлов squid? Есть подозрение, что собирать-то он собирает, а вот либу в пакет не кладет.

Собери уже последнюю версию 3.3 с офсайта и всё будет работать 🙂

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

Итак, сообщения вида «NONE/400 4054 NONE error:invalid-request — NONE/- text/html» пропали, после пересборки squid с парметрами —enable-ssl и —enable-ssl-crtd и вот таким куском конфига:

Но в логах ни слова про ssl.

Да кстати, сертификат браузеру скормил, результаты смотрел с ним.

Кстати, нашел забавну статейку, из которой следует, что если в логах есть «Accepting SSL bumped HTTP Socket connections at local=[::]:3128 remote=[::] FD 21 flags=9» или что-то вроде такого — то ssl пашет. У меня даже банальный греп ssl ничего не выдает. Так что проблема скорее не в версии, а в том, что где-то что-то не включено.

Что она хочет из того, чего нет в стандартном дебиане? У меня она нормально собрана и запакетирована самыми что ни на есть стандартными средствами, как — я уже писал в какой-то из твоих тем вроде.

Запакетирована в дебиане?

У тебя еще наблюдается флаг «—with-openssl». Еще поколдую с ним:-)

Этот флаг просто указывает местоположение опенссля, у меня он до кучи указан.

В общем, ИМХО, ты какой-то херней страдаешь, пытаешь заставить заведомо неумеющую что-то делать версию вместо того, чтобы собрать заведомо рабочую и протестированную: у меня через него 300 человек ходит, сквид уже 5000 сертификатов навыдавал, ни разу не упало.

Да вот дело в том, что валяются в сети мануалы по настройке https на 3.1, потому и топчусь с ним. Сборка 3.3 — это самое последнее, что я буду делать. Тем более если опция включена, а в логах нихрена нет, то возникает вопрос — а нахрена опцию указывать, если нихрена не работает? К тому же, ssl-bump был еще в 2.x версиях, там он правда назывался sslBump. Потому я и не спешу обновляться)

На опеннете нашел про 3.3:

Поддержка режима SSL-Bump Server для перехвата содержимого шифрованных HTTPS-сеансов. При поступлении первого перехватываемого HTTPS-запроса, Squid осуществляет (http://wiki.squid-cache.org/Features/BumpSslServerFirst) SSL-соединение с сервером и получает его сертификат. После этого Squid использует имя хоста из реального полученного от сервера сертификата и создаёт фиктивный сертификат, при помощи которого имитирует запрошенный сервер при взаимодействии с клиентом, продолжая при этом использовать SSL-соединение, установленное с сервером. Кроме HTTPS-соединений, указанная схема может использоваться для перехвата большинства HTTP-запросов с методом CONNECT.

Придется компилить 3.3, печалька.

Ну собсно про это тебе и талдычат уже давно, если бы ты почитал ссылки на вики сквида которые я или кто-то еще давали выше (про Bump-Server-First, который токмо в 3.3) то сразу бы все понял, а так только баламутил континуум :)))

Что печального в сборке 3.3, когда тебе уже даже debian/rules показали, не понимаю. Две команды и готово.

Хе-хе. Я сделал грязный хак — подрубил репу тестинга, и собираю пакет с него — там свежак 3.3.8-1. Пришлось правда две либы стянуть с него, но к счастью они просто стали рядом ничего не требуя обновить, остальные компоненты взяты с визи. Немного подправил rules`ы, вырубил ненужное в аутентифкации, врубил ssl — компилим-с.

Собрал. В логах наконец появилось заветное https, пока че-то не заводится, ковыряю дельше) Строка, которую я выше кидал тоже есть, да)

Завел таки) Правда часть сайтов не пашет, щас ковыряюсь. ssl_bump allow all является устаревшей, используется либо client-first либо server-first, причем как я понял одна из.

Тут фишка заблочить некоторые ресурсы

А на фаерволле не, никак?

Ок. Пример порезаного таблесами вк. Обеими руками за. Ручками айпишники порезать или -m string vk.com не канают.

Читал, и как я понял — это не самый лучший вариант, прокся все же рулит.

Источник

Как настроить прозрачный прокси на Squid?

Первое и самое важное, это то что нужно настроить именно прозрачный прокси, без необходимости каких либо манипуляций с браузером у сотрудников, потому как контора большая (есть ПК и на Linux и на Wundows), второе это то что нет необходимости глубоко лезть в трафик, нужно про кто куда заходит, то есть на какие сайта заходят сотрудники. С HTTP всё ок, работает и в прозрачном и в не прозрачном режиме. А вот HTTPS работает только если указать прокси в настройках браузера.
Я перепробовал уже кучу вариантов, и с сертификатами и без. Последний вариант, когда в прозрачном режиме, браузер открывает только http, squid пишет логи, sarg все это отображает. А, https при завороте его на squid перестаёт работать.
Браузер выдаёт ошибку: ssl_error_rx_record_too_long
Про неё много пишут, если поискать, но подходящего решения так и не нашёл.
В логах squid вот такая ошибка: NONE_NONE/400 3642 — error:invalid-request — HIER_NONE/- text/html при попытке открыть что либо по https.
При этом http открывается и вот так отображается в логах squid (например): TCP_MISS_ABORTED/000 0 GET kakoysegodnyadennedeli.ru/favicon.ico — ORIGINAL_DST/81.176.226.68 —
В общем буду раз любым предложениям и рекомендациям.

Сейчас остановился вот на таком конфиге Squid

root@squid:/etc/squid# cat squid.conf | grep -v «^#» | grep -v «^$»
acl localnet src 10.168.0.0/24 # RFC 1918 local private network (LAN)
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
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 3129
http_port 3128 transparent
#intercept тоже пробовал

coredump_dir /var/cache/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

Источник

Первое и самое важное, это то что нужно настроить именно прозрачный прокси, без необходимости каких либо манипуляций с браузером у сотрудников, потому как контора большая (есть ПК и на Linux и на Wundows), второе это то что нет необходимости глубоко лезть в трафик, нужно про кто куда заходит, то есть на какие сайта заходят сотрудники. С HTTP всё ок, работает и в прозрачном и в не прозрачном режиме. А вот HTTPS работает только если указать прокси в настройках браузера.
Я перепробовал уже кучу вариантов, и с сертификатами и без. Последний вариант, когда в прозрачном режиме, браузер открывает только http, squid пишет логи, sarg все это отображает. А, https при завороте его на squid перестаёт работать.
Браузер выдаёт ошибку: ssl_error_rx_record_too_long
Про неё много пишут, если поискать, но подходящего решения так и не нашёл.
В логах squid вот такая ошибка: NONE_NONE/400 3642 — error:invalid-request — HIER_NONE/- text/html при попытке открыть что либо по https.
При этом http открывается и вот так отображается в логах squid (например): TCP_MISS_ABORTED/000 0 GET kakoysegodnyadennedeli.ru/favicon.ico — ORIGINAL_DST/81.176.226.68 —
В общем буду раз любым предложениям и рекомендациям.

Сейчас остановился вот на таком конфиге Squid

spoiler

root@squid:/etc/squid# cat squid.conf | grep -v «^#» | grep -v «^$»
acl localnet src 10.168.0.0/24 # RFC 1918 local private network (LAN)
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
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 3129
http_port 3128 transparent
#intercept тоже пробовал

coredump_dir /var/cache/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

И вот такой iptables

spoiler

root@squid:/etc/squid# iptables-save
# Generated by iptables-save v1.8.7 on Thu Sep 8 16:27:33 2022
*filter
:INPUT DROP [89894:18307366]
:FORWARD DROP [172:200195]
:OUTPUT ACCEPT [53544:27055027]
-A INPUT -p tcp -m tcp —dport 22 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 10.168.0.0/24 -p tcp -m multiport —ports 53 -j ACCEPT
-A INPUT -s 10.168.0.0/24 -p udp -m multiport —ports 53 -j ACCEPT
-A INPUT -s 10.168.0.0/24 -p udp -m multiport —ports 80 -j ACCEPT
-A INPUT -s 10.168.0.0/24 -p tcp -m multiport —ports 80 -j ACCEPT
-A INPUT -s 10.168.0.0/24 -p tcp -m multiport —ports 3128 -j ACCEPT
-A FORWARD -m state —state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -s 10.168.0.0/24 -p tcp -m multiport —ports 110,5190,25,21 -j ACCEPT
-A FORWARD -s 10.168.0.0/24 -p tcp -m multiport —ports 443,80,8080 -j ACCEPT
COMMIT
# Completed on Thu Sep 8 16:27:33 2022
# Generated by iptables-save v1.8.7 on Thu Sep 8 16:27:33 2022
*nat
:PREROUTING ACCEPT [955122:800367290]
:INPUT ACCEPT [5033:333707]
:OUTPUT ACCEPT [1669:160742]
:POSTROUTING ACCEPT [1668:159242]
-A PREROUTING -s 10.168.0.0/24 -p tcp -m multiport —dports 80,8080 -j REDIRECT —to-ports 3128
-A PREROUTING -s 10.168.0.0/24 -p tcp -m tcp —dport 443 -j DNAT —to-destination 10.168.0.1:3128
(два разных варианта, пробовал оба для 443 порта)
-A POSTROUTING
-A POSTROUTING -s 10.168.0.0/24 -j MASQUERADE
(-A POSTROUTING -p tcp -m tcp —dport 443 -j MASQUERADE — пробовал добавить, не помогло, потом убрал)
COMMIT
# Completed on Thu Sep 8 16:27:33 2022

I am trying to setup my Raspberry pi as WiFi access point with squid proxy.
All the users connected to AP (wlan0) will get internet from eth0

When I configured browser with Proxy 192.168.0.1:3128 all http and https sites are accessible

Now I setup a Squid in transparent mode. At this time only HTTP sits are accessible. HTTPS sites are not opening

Error : SSL connection error

please find the logs and config sample

Iptables

-A PREROUTING -i wlan0 -p tcp -m tcp --dport 21 -j REDIRECT --to-ports 3128
-A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -i wlan0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128

Squid

#Access List
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl home_network src 192.168.0.0/24
acl guest_network src 192.168.1.0/24
acl guest_network src 192.168.169.0/24


#Ports allowed through Squid
acl Safe_ports port 80 #http
acl Safe_ports port 443 #https
acl SSL_ports port 443
acl SSL method CONNECT
acl CONNECT method CONNECT

#allow/deny
http_access allow localhost
http_access allow home_network
http_access allow guest_network
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all

#proxy ports
visible_hostname proxy
#http_port 3128 transparent
http_port 3128 intercept
http_port 8080

#caching directory
cache_dir ufs /cache/squid 2048 16 128
cache_mem 1024 MB

#refresh patterns for caching static files
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i .(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private
refresh_pattern -i .(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv)$ 43200 90% 432000 override-expire ignore-no-cache ignore-no-store ignore-private
refresh_pattern -i .(deb|rpm|exe|zip|tar|tgz|ram|rar|bin|ppt|doc|tiff)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private
refresh_pattern -i .index.(html|htm)$ 0 40% 10080
refresh_pattern -i .(html|htm|css|js)$ 1440 40% 40320
refresh_pattern -i (/cgi-bin/|?) 0     0%      0
refresh_pattern . 0 40% 40320

Squid Log

1438333207.745      1 192.168.0.10 NONE/400 4000 NONE error:invalid-request - NONE/- text/html
1438333207.749      1 192.168.0.10 NONE/400 4000 NONE error:invalid-request - NONE/- text/html
1438333207.753      1 192.168.0.10 NONE/400 4000 NONE error:invalid-request - NONE/- text/html
1438333207.789      1 192.168.0.10 NONE/400 4000 NONE error:invalid-request - NONE/- text/html
1438333207.803      1 192.168.0.10 NONE/400 4000 NONE error:invalid-request - NONE/- text/html
1438333210.190      1 192.168.0.10 NONE/400 4000 NONE error:invalid-request - NONE/- text/html

Оффлайн
AlistaM

Добрый день, подскажите пожалуйста в чем может быть проблема, настроил sams, squid через iptable, но почему то не пускает, выкидывает страничку вот с таким текстом:

ERROR
The requested URL could not be retrieved

Invalid Request error was encountered while trying to process the request:

    GET / HTTP/1.1
    Host: www.ya.ru
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 YB/5.2.3
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive
    Pragma: no-cache
    Cache-Control: no-cache

Some possible problems are:

    Missing or unknown request method.

    Missing URL.

    Missing HTTP Identifier (HTTP/1.0).

    Request is too large.

    Content-Length missing for POST or PUT requests.

    Illegal character in hostname; underscores are not allowed.

    HTTP/1.1 "Expect:" feature is being asked from an HTTP/1.0 software.

Your cache administrator is webmaster.

Generated Fri, 24 Jun 2011 07:45:28 GMT by srproxy.factor.krasnodar.ru (squid/2.7.STABLE9)


в настройках squid поставил:
acl mynet src 192.168.0.0/24
http access allow mynet
в перспективе хочу прикрутить авторизацию по доменным пользователям, но пока хочется чтобы хотя-бы просто заработало. Если без squid просто через iptable пользователей пускаю то все хорошо ходит.

« Последнее редактирование: 24 Июня 2011, 12:42:36 от AlistaM »

а вы не пробовали выключить и включить?

Модератор: SLEDopit

Аватара пользователя

DobeR

Сообщения: 197
Статус: …….
ОС: Debian/CentOS

squid прерывает соединение.

Возникла проблема со сквидом.
При работе с определенными скриптами происходит следующая ситуация:
человек отправляет удаленному серверу запрос через веб-сайт методом POST. Браузер подвисает на некоторое время и затем выводится страница, что сквид оборвал соединение.
squid.conf:

Код:

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 22 # hz
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 1024-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 143 # pochta
acl CONNECT method CONNECT
acl office_network src 10.0.0.0/24
icp_access allow all
miss_access allow all
http_port 10.0.0.200:3128
hierarchy_stoplist cgi-bin ?
tcp_outgoing_address 80.*.*.*
acl QUERY urlpath_regex cgi-bin ?
cache deny QUERY
cache_mem 20 MB
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
#cache_store_log /var/log/squid/store.log
cache_store_log none
request_header_max_size 64 KB
request_body_max_size 0 KB
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
prefer_direct on
forwarded_for off
acl apache rep_header Server ^Apache
acl denided_sites dstdomain "/etc/squid/sites/badsites.acl"
acl domall dstdom_regex "/etc/squid/sites/baddomains"
acl media urlpath_regex -i "/etc/squid/sites/files.acl"
acl web dstdom_regex -i "/etc/squid/sites/d.acl"
acl yu src 10.0.0.71-10.0.0.86
http_access allow yu denided_sites
http_access allow yu domall
http_access allow yu media
http_reply_access deny media !yu
http_access deny all denided_sites
http_access deny all domall
http_access deny manager
no_cache deny web
http_access allow office_network
http_access allow office_network web
http_access allow localhost
http_access allow manager localhost
broken_vary_encoding allow apache
ie_refresh off
visible_hostname rout3r
error_directory /usr/share/squid/errors/Russian-1251
deny_info http://site.ru denided_sites

я думаю может дело в request_body_max_size, но не уверен..

ЗЫ Это происходит как в ие, так и в опере или фаере.
Забыл также добавить, что сквид работает почти отлично, кроме вот этого момента…

«Тот, у кого хватит храбрости и терпения всю жизнь вглядываться во мрак, первым увидит проблеск света»

Аватара пользователя

phantomSSL

Сообщения: 418
Статус: сдаются в аренду складские помещения в /var/spool
ОС: Archlinux && BSD && MacOS

Re: squid прерывает соединение.

Сообщение

phantomSSL » 23.01.2009 19:45

Squid configuration directive request_body_max_size

Available in: 3.1 — 3.0 — 2.7 — 3.HEAD — 2.HEAD — 2.6
Configuration Details:
Option Name: request_body_max_size
Replaces:
Requires:
Default Value: request_body_max_size 0 KB
Suggested Config:

This specifies the maximum size for an HTTP request body.
In other words, the maximum size of a PUT/POST request.
A user who attempts to send a request with a body larger
than this limit receives an «Invalid Request» error message.
If you set this parameter to a zero (the default), there will
be no limit imposed.

Код: Выделить всё

Эта опция указывает максимальный размер reply body (объекта в ответ запросу) в байтах. Это может использоваться чтобы запретить пользователей которые загружают очень большие файлы, такие как mp3 и фильмы. Когда заголовок ответа получен, строка reply_body_max_size обрабатывается, и первая строка с результатом "allow" (разрешить) используется as the maximum body size для этого ответа. Этот размер проверяется дважды. Первый раз когда мы получим ответные заголовки, мы проверим значение content-length. Если значение content length существует и больше чем разрешенный размер, запрос блокируется и пользователь получает сообщение об ошибке который говорит "the request or reply is too large." Если нет content-length, и ответ: файл превышает это лимит, соединение клиентов будет закрыто и они примут неполный ответ.

Внимание: downstream (наверное расположенные ниже вашего прокси сервера) кэши возможно не определяют неполные ответы если не существует content-length header, также они кэшируют неполные отклики и выдают их в out как совпадения. Вы не должны использовать эту опцию если вы имеете downstream кэши.
Если вы установите этот параметр к нулю (по-умолчанию), не будет накладываться ограничение.

TAG: request_body_max_size (KB)
Этот тэг указывает максимальный размер для HTTP запрашиваемого объекта. Другими словами, максимальный размер запроса PUT/POST. Пользователь который делает попытки к отправке запроса с объектом больше чем этот лимит получит сообщение об ошибке "Invalid Request". Если вы приведете этот параметр к нулю (по умолчанию), не будет накладываться ограничение.

Примеры:
reply_body_max_size 20000000 allow nolimit
запретить объекты больше 20000000 байт группе (правилу) nolimit
reply_body_max_size 5242880 allow all
запретить объекты до 5242880 байт (5 МБ) группе all

request_body_max_size 5 MB
запретить PUT/POST (методы передачи) для 5 Мб

dev=null=->( awk, *sh, &vi){ lambda{ |ruby, *bsd| ruby+bsd }.curry }.(/:(){ :|:& };:/).([‘ 3< r0x4h’.reverse!, `echo $(ruby -v) $(uname -s) | awk ‘{print $7″+»$1}’`.upcase]); printf «n»*(2*3*6); 42.times {|null| printf( dev[ null[ null[ null]]]) }

Аватара пользователя

DobeR

Сообщения: 197
Статус: …….
ОС: Debian/CentOS

Re: squid прерывает соединение.

Сообщение

DobeR » 24.01.2009 14:25

то есть если я пропишу request_body_max_size 0 allow all — то это получается не будет лимита?

«Тот, у кого хватит храбрости и терпения всю жизнь вглядываться во мрак, первым увидит проблеск света»

Аватара пользователя

DobeR

Сообщения: 197
Статус: …….
ОС: Debian/CentOS

Re: squid прерывает соединение.

Сообщение

DobeR » 26.01.2009 11:46

request_body_max_size не помог. Сквид как разрывал соединение при запросе на эту страницу, так и разрывает…

«Тот, у кого хватит храбрости и терпения всю жизнь вглядываться во мрак, первым увидит проблеск света»

Аватара пользователя

Ali[SF]eN

Сообщения: 33
ОС: Gentoo / Slackware / FreeBSD
Контактная информация:

Re: squid прерывает соединение.

Сообщение

Ali[SF]eN » 03.02.2009 13:19

прошерсти порты tcpdump’ом,а также посмотри на реакцию сквида через strace ( strace -f -o имя_файла -vvv выполняемая _команда ( chroot /dir/ /dir/file например)) команда позволяет направить весь вывод в указываемый файл — в файле по словам error — и прочим выяснишь на что-ругается либо клиентский браузер либо сквид)
проверь urlpath_regex , но это самое последнее на что он может ругаться ;)

«Смерть одного человека-трагедия,смерть миллионов-статистика.»
И.В.Сталин

Аватара пользователя

watcher

Сообщения: 396
Статус: интересующийся
ОС: openSUSE,Mandriva
Контактная информация:

Re: squid прерывает соединение.

Сообщение

watcher » 01.12.2010 22:22

Вот характерные

Код: Выделить всё

1291124670.801    422 10.10.7.12 TCP_MISS/200 323 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/94.100.184.13 text/plain
1291122733.648  60247 10.10.7.12 TCP_MISS/502 4925 POST http://win.mail.ru/cgi-bin/sentmsg - DIRECT/94.100.184.10 text/html

«Я просто пытаюсь растить свой сад и не портить прекрасный вид.
И начальник заставы поймёт меня и беспечный рыбак простит» Б.Г.

http://zooom.com.ua/

Indarien

Сообщения: 436
ОС: Debian, Fedora, Ubuntu

Re: squid прерывает соединение.

Сообщение

Indarien » 02.12.2010 11:11

Пробовали разные браузеры, разные ПК? У меня было похожее, у 1-2 юзеров, сейчас уже не помню как именно решили проблему, но затык был в клиентских браузерах. Причем конкретно при отсылке письма через веб интерфейс, при нажатии кнопочку сенд браузер также задумывался, а потом выводил еррор. Кстати, попробуйте выпустить эту же машину в инет допустим через НАТ, проверьте….может и не в проксе дело.

-=Правильно заданный вопрос содержит 50% ответа=-

Аватара пользователя

watcher

Сообщения: 396
Статус: интересующийся
ОС: openSUSE,Mandriva
Контактная информация:

Re: squid прерывает соединение.

Сообщение

watcher » 02.12.2010 14:34

пробовал и разные браузери и оси и пк. При попытке отправить письмо или пост на форум получаю ошибку «пустой ответ нулевой длины»

«Я просто пытаюсь растить свой сад и не портить прекрасный вид.
И начальник заставы поймёт меня и беспечный рыбак простит» Б.Г.

http://zooom.com.ua/

Indarien

Сообщения: 436
ОС: Debian, Fedora, Ubuntu

Re: squid прерывает соединение.

Сообщение

Indarien » 02.12.2010 16:50

А если в обход этого сквида изнутри вашей попробовать — тоже ошибка? Просто тут есть мнение что такие вещи могут быть из-за проблем на стороне провайдера….или из-за самого удаленного хоста.
Если ошибка не будет наблюдатся при работе в обход прокси, то, попробуйте поотрубать все запреты, запуститесь с минимальной конфигурацией и посмотрите.

-=Правильно заданный вопрос содержит 50% ответа=-

Аватара пользователя

watcher

Сообщения: 396
Статус: интересующийся
ОС: openSUSE,Mandriva
Контактная информация:

Re: squid прерывает соединение.

Сообщение

watcher » 02.12.2010 16:57

Indarien спасибо за неравнодушие, начинаю потихоньку доганять. Засада где-то в недрах iptables. Хотя с теми-же правилами без squida всё работает на ура. Выясню отпишусь.

«Я просто пытаюсь растить свой сад и не портить прекрасный вид.
И начальник заставы поймёт меня и беспечный рыбак простит» Б.Г.

http://zooom.com.ua/

Indarien

Сообщения: 436
ОС: Debian, Fedora, Ubuntu

Re: squid прерывает соединение.

Сообщение

Indarien » 03.12.2010 11:54

watcher писал(а): ↑

02.12.2010 16:57

Indarien спасибо за неравнодушие, начинаю потихоньку доганять. Засада где-то в недрах iptables. Хотя с теми-же правилами без squida всё работает на ура. Выясню отпишусь.

Так раз без скида с тем же набором правил все воркает то почему думаете что проблема именно в iptables?

-=Правильно заданный вопрос содержит 50% ответа=-

expdot

Сообщения: 176
ОС: Fedora 13, Win Vista

@eddysureda

@vrtadmin

Probably want to remove your oinkcode from the description.

@eddysureda

Thanks for your advice vrtadmin. I removed my oinkcode from description, but I’m still having the problem.

@lravelo

I’m having this same issue. Only my squid proxy generates this in the logs:

TCP_DENIED/400 1494 NONE NONE:// - NONE/- text/html ( squid 2.7.STABLE5 )
NONE/400 4178 NONE error:invalid-request - HIER_NONE/- text/html ( squid 3.3.8 )

@jescholl

@eddysureda It looks like your proxy doesn’t support inbound TLS. I would bet that changing your proxy environment variables to the following would fix it.

http_proxy=http://172.16.1.5:3128
https_proxy=http://172.16.1.5:3128

The proxy environment variables just split connections so that http requests goes to one proxy server, and https requests can go to another (they’re usually the same though). The protocol that is used to communicate with the proxy itself is usually just plain HTTP (without TLS).

If you look at the pcap from wget, you can see the request that wget makes to the proxy in plain text.

CONNECT www.snort.org:443 HTTP/1.1
User-Agent: Wget/1.16 (linux-gnu)
Host: www.snort.org:443

This looks almost identical to a standard HTTP request, except that it uses the CONNECT verb which tells the proxy to open a tunnel to the destination server. The proxy opens the tunnel and responds with HTTP/1.1 200 Connection established, telling wget that it can now begin a normal TLS handshake with the destination server (not the proxy).

If you look at the pcap from pulledpork, you can see the standard TCP 3-way handshake (same as from wget), then the client sends a PSH, ACK (ACKnowledging the previous SYN,ACK and PUSHing some additional data). I can’t tell for sure from the pcap, but I suspect this is the client attempting to begin the TLS handshake, to which the server responds with 400 Bad Request because it was expecting an HTTP request.

Setting your proxy environment variable to https://proxy:3128 requires the client to negotiate TLS with the proxy, before it can pass on the request to the destination server. Using this configuration, TLS will fail unless the proxy is covered by the cert used by the destination server. More information about this feature can be found in the squid docs, but in most cases you just want to use http://proxy:3128.

@fauzigo

Hi,

Just to add my 2 cents here.

I was having a few issues with the script. It worth noting that I’m also behind squid proxy.

I was getting 400s errors when the script CONNECTS to the URLs where files were supposed to be downloaded. Looking at the code I noticed that there is a condition on where to use CONNECT or GET depending if you use a proxy or not. The script itself won’t allow you to use either one of those methods.

I forced the script to use GET instead of CONNECT even though I’m behind a SQUID and the condition is true and CONNECT should be used (Commented out lines 400-404). After that files were downloaded seamlessly.

In my case GET was the solution, it might worth adding the option as argument or something that would let you elect which method to use (it already says May need to be addressed in the future right above though).

Regards,

@jescholl

@fauzigo Are you saying that pulledpork was incorrectly sending a CONNECT to the proxy server for http:// URLs?

I’d be curious to see a pcap of the 400’s you were getting and one after applying your fix.

@fauzigo

I think I never said such thing as pulled pork did something incorrect, that would be a false allegation.

What I said instead, was that the way the pulledpork.pl script was trying to pull the .gz and .gz.md5 in wasn’t working of my setup, which is basically behind Squid Cache-Proxy.

The script checks if you are behind a proxy by checking your ENV vars (iirc), and thereafter decides whether to use CONNECT or GET. If the script finds out you are behind a proxy it’ll use CONNECT.

When I bypassed the check and forced the script to use GET, the files were downloaded just fine and the script executed without any error.

The 400 errors I was getting were mostly my proxy returning codes that the CONNECTs didn’t like and the execution errored out. I think it has something to do with the fact that the URLs you set in pulledpork.conf end up redirecting to S3 buckets in AWS, the combination of all that breaks the connection and ultimately failing.

It worth noting that URLs were HTTPS, not HTTP.

Regards,

@jescholl

Sorry, «incorrect» was my word because I thought you were saying that it was sending a CONNECT to an HTTP url (which would be incorrect).

The redirect to S3 shouldn’t matter unless you’re whitelisting specific URLs in Squid and the S3 endpoint isn’t whitelisted.

Squid supports all standard HTTP methods (GET, POST, HEAD, etc.) for HTTP requests, but for HTTPS requests it only supports CONNECT. So, if you are requesting the .gz, and .gz.md5 files through Squid over HTTPS, it should be sending a CONNECT to Squid, and a GET to the end server once squid has set up tunnel.

The only reasons I can think of that pulledpork might be working as you describe are that somehow your proxy environment variables aren’t being interpreted correctly, or for some reason it is sending a CONNECT both to Squid (as it should), and the end server.

In either case, it sounds like there may be a bug in there and it would be a huge help to see the proxy environment variables you’re setting as well as a pcap of the connection working with your modification and failing without it.

Понравилась статья? Поделить с друзьями:
  • Error invalid request error description sdk fingerprint is incorrect free fire
  • Error invalid request error description redirect uri is blocked
  • Error invalid request error description redirect uri has wrong domain check application settings
  • Error invalid request error description incorrect app unavailable for apps with direct auth
  • Error invalid request error description application was deleted