Настройка сквида на уровне нуба - нужна диагностика
Сквид локальный? У машинки, на которой сквид стоит, точно проблем с инетом никаких нету?
Еще можно попробовать телнетом к сквиду подрубиться, и поспрашивать его так и сяк.
Can't connect to some sites through Squid
When using Squid, some sites may give erorrs such as ``(111) Connection refused'' or ``(110) Connection timed out'' although these sites work fine without going through Squid.
Some versions of linux implement Explicit Congestion Notification (ECN) and this can cause some TCP connections to fail when contacting some sites with broken firewalls or broken TCP/IP implementations.
To work around such broken sites you can disable ECN with the following command:
echo 0 > /proc/sys/net/ipv4/tcp_ecn
Found this on the FreeBSD mailing list:
From: Robert Watson
As Bill Fumerola has indicated, and I thought I'd follow up in with a bit more detail, the behavior you're seeing is the result of a bug in the FreeBSD IPFW code. FreeBSD did a direct comparison of the TCP header flag field with an internal field in the IPFW rule description structure. Unfortunately, at some point, someone decided to overload the IPFW rule description structure field to add a flag representing "ESTABLISHED". They used a flag value that was previously unused by the TCP protocol (which doesn't make it safer, just less noticeable). Later, when that flag was allocated for ECN (Endpoint Congestion Notification) in TCP, and Linux began using ECN by default, the packets began to match ESTABLISHED rules regardless of the other TCP header flags. This bug was corrected on the RELENG_4 branch, and security advisory for the bug was released. This was, needless to say, a pretty serious bug, and good example of why you should be very careful to compare only the bits you really mean to, and should seperate packet state from protocol state in management structures, as well as make use of extensive testing to make sure rules actually have the effect you describe.
А вот предложение посмотреть логи своевременно. Судя по ним (ICP не разрешён) я скорее всего неправильно настроил работу с вышестоящим прокси
все ошибки в логах победил. Но работать лучше не стало (при этом в логе закаченных всякие яваскрипты и гугл-аналитики есть). Вот только браузер их не получает
А конфиг можно полный привести?
А конфиг можно полный привести?комменты вырезал.
acl CONNECT method CONNECT
acl localhost src 127.0.0.1/32
acl manager proto cache_object
acl purge method PURGE
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
cache_peer example.proxy.ru parent 3128 7 proxy-only no-query default no-digest
coredump_dir /var/cache/squid
forwarded_for off
hierarchy_stoplist cgi-bin ?
htcp_access allow localnet
htcp_access deny all
http_access allow localhost
http_access allow localnet
http_access deny all
http_access allow manager localhost
http_access allow purge localhost
http_access deny manager
http_access deny purge
http_access deny !Safe_ports
http_port 3128 transparent
http_port 4128
icp_access allow localhost
icp_access allow localnet
icp_access deny all
no_cache deny all
refresh_pattern . 0 20% 4320
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
Что проще
1) настроить-таки squid
2) настроить 3proxy на транспарент режим
3) сделать ебилд для стороннего софта, которое умеет это из каробки?
а сквид при старте не ругается на отсутсвие localnet и Safe_ports?
а сквид при старте не ругается на отсутсвие localnet и Safe_ports?нет. видимо я не весь конфиг вытащил. Завтра напишу греп позабористее и конфиг выдам
Обнаружив глюки, потушил iptablesкак конкретно потушил иптайблс?
iptables -F
iptables -X
а потом попробуй опять.
кстати, было бы неплохо написать версию сквида (ну и, подозревая наличие в треде гентушника, - USE флаги и параметры компиляции).
как конкретно потушил иптайблс?иптайблс я тушить умею
#!/bin/bash
IPTABLES=/sbin/iptables
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -t mangle -F
$IPTABLES -t mangle -X
$IPTABLES -t filter -F
$IPTABLES -t filter -X
А raw таблички нету
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
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 Safe_ports port 80 # http
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access allow localnet
http_access allow localhost
http_access deny all
icp_access allow localnet
icp_access allow localhost
icp_access deny all
htcp_access allow localnet
htcp_access deny all
http_port 3128 transparent
http_port 4128
cache_peer example.proxy.ru parent 3128 7 proxy-only no-query default no-digest
hierarchy_stoplist cgi-bin ?
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 0 20% 4320
no_cache deny all
forwarded_for off
coredump_dir /var/cache/squid
кстати, было бы неплохо написать версию сквида (ну и, подозревая наличие в треде гентушника, - USE флаги и параметры компиляции).1) вывод eix
[I] net-proxy/squid
Available versions: 2.7.6-r2 2.7.7 3.0.18-r1!t 3.0.19!t (~)3.0.20-r1!t [M](~)3.1.0.14_beta [M](~)3.1.0.15_beta-r1!t {caps ecap elibc_uclibc +epoll icap-client ipf-transparent ipv6 kerberos kernel_linux kqueue ldap logrotate mysql nis pam pf-transparent postgres radius samba sasl selinux snmp sqlite ssl test zero-penalty-hit}
Installed versions: 3.0.20-r1!t(13:09:44 05.03.2010caps epoll kerberos kernel_linux ldap mysql pam postgres samba sasl snmp sqlite ssl -elibc_uclibc -icap-client -ipf-transparent -kqueue -logrotate -nis -pf-transparent -radius -selinux -zero-penalty-hit)
Homepage: http://www.squid-cache.org/
Description: A full-featured web proxy cache
как точно узнать какими CFLAGS собиралось не ведаю.
3) сделать ебилд для стороннего софта, которое умеет это из каробки?сделал ebuild, написал /etc/conf.d и /etc/init.d для transproxy (tproxy). Работает. А сквид отправился на свалку истории. Посоветовавшись с парой людей, я лишь только узнал "а у меня всё работает, конфиг как конфиг" и понять что же было не так не смог
где
never_direct allow all?
Но теперь поздно. Если уж я настроил tproxy, то вряд ли от него откажусь, он замечательно делает свою работу: редактирует один заголовок и добавляет ещё один. При этом ресурсов потребляет в разы меньше сквида.
А сквид всё-таки гавно (по крайней мере в том, что относится конфигурации).Посудите сами. Нормальные программы умеют понимать прокси и использовать только его. Хорошие ещё умеют работать со списком исключений (не весь трафик пускают через прокси). И только весьма оригинальные программы имеют дефолтный список исключений, причём ничем логически не обоснованный. Я понимаю если бы ещё этот дефолтный список прописывали в дефолтном конфиге. А вот хрен - при пустом конфиге он всё равно включается. Итого: squid ни хрена не юзер френдли, а писали его маньяки.
ну извини, мой друг, вовсе не я виноват в том, что ты не смог сразу выложить весь свой конфиг, как только у меня дошли руки до форума, я так тебе сразу и написал в чем твоя ошибка. а дефолтный параметр для never_direct и always_direct - none и по крайней мере в комментариях к моему конфигу об этом честно сказано.
Но почему он тогда не работает? Почему при том и другом установленном в none, squid применяет хитрую политику дискриминации запросов - что-то отправляет через прокси, что-то пытается закачать сам? Почему в конфиге нет никаких регэкспов или чего-то подобного, благодаря чему сквид решает, для чего использовать исключение в прокси? Это ни хрена не интуитивно. Нужно ещё догадаться, что эту хитрую функциональность нужно отключать.
Почему в конфиге нет никаких регэкспов или чего-то подобного, благодаря чему сквид решает, для чего использовать исключение в прокси?напиши сам - делов-то.
Нужно ещё догадаться, что эту хитрую функциональность нужно отключать.если бы она была отключена по дефолту, то нашелся бы другой умник, который не прочитав документации сказал бы, что эту функциональность надо ещё догадаться включить.
если бы она была отключена по дефолту, то нашелся бы другой умник, который не прочитав документации сказал бы, что эту функциональность надо ещё догадаться включить.ну-ну. Где ты таких встречал? Которые хотят по-дефолту такой странной работы?
По дефолту поведение должно быть упрощено. Если ты указываешь одно проксти, то весь трафик должен идти через него. Если несколько - то уже нужно писать политики разделения трафика.
ты представь ситуацию - ставит администратор два прокси-сервера, и хочет между ними распределить нагрузку, естественно прописывает в конфиг каждого из них одну проксю.
если при этом каждая из них будет пытаться пройти исключительно через проксю и не будут пытаться пройти напрямую, то от одного единственного запроса оба сервера сдохнут. как ты думаешь, это не будет для админа "странным" поведением?
странность - понятие относительное. для меня вот странно ставить прокси на сервер, на котором нет интернета, я же не афиширую это.я же сказал точную задачу: system-wide конфигурация прокси, которая работает на всех веб-клиентах, даже на тех, которые не умеют работать с прокси. Для решения задачи необходимы iptables (есть) и простенький прокси для правки заголовков.
я не говорил что мне неизвестны такие задачи, я сказал что считаю это странным, поскольку по-хорошему нужно конфигурировать ту проксю к которой ты в итоге обращаешься.
бывают такие удивительные провайдеры, которые не дают конфигурить свою проксю.
удивительного провайдера, у которого доступ в интернет только через проксю, причем не прозрачную, надо слать нахуй и надолго.
Во-вторых, он прав - прозрачная прокся это неэтично. Пользователь должен быть предупреждён.
а если у пользователя не PC, на котором такая проблема пусть и с некоторомы геморроем, но решается, а девайс (например PS3, xbox) в котором производитель не учел таких хитрожопых провайдеров и не встроил в них кнопку "ходить на 80-й порт через прокси, на остальные - через вот этот гейт", что ему делать?
и учитывыя все это для тебя дефолтное поведение сквида - "странно", а предупредить пользователя пунктом в договоре - "неэтично"? да вы, батенька, пенартур.
Прозрачная прокси понадобилось для приложения которое в принципе что это такое не знает. Большинство приставок о существовании прокси осведомлены.
Даже в говняном ff есть настройки отдельно по протоколам.ты опять отвечаешь на вопросы, которые я не задавал - не по протоколам, а по портам.
насчёт портов я уже написал. Закрыт только 80
Оставить комментарий
yroslavasako
Поставил сквид. Пока хочется, чтобы он просто работал (форвардил). Собрал, сконфижил примитивно (по большей части дефолты запустил на тестовый поюз. Обнаружилось замечательное поведение. Допустим я захожу на баш. Сам баш он открывает, но видимо только то, что содержится непосредственно на странице. Текст появляется, дизайн баша - нет. При этом страница открывается долго-долго и ждёт всякий сторонний трафик вроде yandex.ru (не дожидается по таймауту)Фрейм с рекламой тоже не загрузился. Нажал открыть фрейм в отдельной вкладке. http://lol.bash.org.ru/_ad.php?zone=zone:3 не открывается, выводится сообщение об ошибке от прокси: Connection Failed, system returned (110) Connection Time Out
Без проксика открывается рекламный фрейм.
Может H&S поставить диагноз по перечисленным симптомам? Я пока читаю мануалы