И снова SQUID НО только с 2-мя прокси-серверами

Здравствуйте уважаемые.

Имеется:
1. Есть SQUID прокси-сервер (условно его IP 192.168.0.1).
У самого прокси-сервера(SQUID IP 192.168.0.1) нет интернета вообще.
2. Есть в сети еще ДВА прокси-сервера подключенные к РАЗНЫМ провайдерам:
Первый прокси-сервер имеет в сети IP 192.168.0.2
Второй прокси-сервер имеет IP 192.168.0.3.
Ни на одном из них не стоят squid.
3. Все запросы нужно направлять на прокси-сервер с IP 192.168.0.2 (=сделано=).

НАДО:
Что бы прокси-сервер с IP 192.168.0.1 мог ПЕРЕКЛЮЧАТЬСЯ между этими прокси-серверами при одном условии:
ЕСЛИ на прокси-сервере с IP192.168.0.2 "упала" связь ТО направить все запросы на прокси-сервер с IP 192.168.0.3.
Ну а если появиась связь на прокси-сервере с IP 192.168.0.2 то снова все направлять ему, т.е. на 192.168.0.2.

Спасибо всем заранее!

,

Не совсем то, но может чем-то поможет
http://squid.org.ua/FAQ/my/FAQ-4.html#ss4.9

Читал, но не подходит... там

Читал, но не подходит... там случай с одним парентом (главным), а вот со вторым ситуацию не рассматривают вообще. Пробовал без указания default не переключается.

у гугла спрашивали

у гугла спрашивали типа
"squid несколько родительских кешей" ?

danvach написал(а):
там случай с одним парентом (главным), а вот со вторым ситуацию не рассматривают вообще.

я думаю это и это как-бы решает вашу проблему.

или я недопонял чего.

что-то добрый я сегодня ....

/

leryc написал(а):
я думаю это и это как-бы решает вашу проблему.

или я недопонял чего.

Нет.
В приведённых тобой примерах распиывается выбор маршрута в зависимости от конечной точки.
Требуется же сделать балансировку нагрузки в зависимости от работоспособности канала.

Вариантов отличных от костыля (скрипт проверяющий работоспособность канала, при падении канала меняющий конфиг и перезапускающий сквида с запуском по cron'у) я не вижу.

:wq
--
Live free or die

Anarchist написал(а): leryc

Anarchist написал(а):
leryc написал(а):
я думаю это и это как-бы решает вашу проблему.

или я недопонял чего.

Нет.
В приведённых тобой примерах распиывается выбор маршрута в зависимости от конечной точки.
Требуется же сделать балансировку нагрузки в зависимости от работоспособности канала.

Вариантов отличных от костыля (скрипт проверяющий работоспособность канала, при падении канала меняющий конфиг и перезапускающий сквида с запуском по cron'у) я не вижу.

Да верно "говоришь", спасибо Anarchist, буду "костылять" =)

имхо, немного не

имхо, немного не так....

Anarchist написал(а):
В приведённых тобой примерах распиывается выбор маршрута в зависимости от конечной точки.
Требуется же сделать балансировку нагрузки в зависимости от работоспособности канала.

"выбор маршрута" - приведен как пример возможного применеия соответствующих директив

но назначение их гораздо шире

если не привязываться к прописыванию правил "разрулирования", то сквид действует по принципу перебора пока не сработает

например, отправляет запрос на 1-й родительский кэш, не получает ответа, отправляет на 2-й по списку. и так далее...

у меня работает почти подобно...

по умолчанию сквид работает через "вышестоящий" (HAVP), но если по каким причинам HAVP упавший или остановлен ручками, сквид автоматиески рулит напрямую к провайдеру (на стороне клиента это прозрачно и никак не отражается - видно лишь по логам)

но это (примеры) - не пример балансировки, ибо там подход - перебрать по порядку в порядке описания в конфиге

балансировка решается несколько иначе (видел примеры, но не применял)

что-то добрый я сегодня ....

leryc написал(а): имхо,

leryc написал(а):
имхо, немного не так....

Anarchist написал(а):
В приведённых тобой примерах распиывается выбор маршрута в зависимости от конечной точки.
Требуется же сделать балансировку нагрузки в зависимости от работоспособности канала.

"выбор маршрута" - приведен как пример возможного применеия соответствующих директив

но назначение их гораздо шире

если не привязываться к прописыванию правил "разрулирования", то сквид действует по принципу перебора пока не сработает

например, отправляет запрос на 1-й родительский кэш, не получает ответа, отправляет на 2-й по списку. и так далее...

у меня работает почти подобно...

по умолчанию сквид работает через "вышестоящий" (HAVP), но если по каким причинам HAVP упавший или остановлен ручками, сквид автоматиески рулит напрямую к провайдеру (на стороне клиента это прозрачно и никак не отражается - видно лишь по логам)

но это (примеры) - не пример балансировки, ибо там подход - перебрать по порядку в порядке описания в конфиге

балансировка решается несколько иначе (видел примеры, но не применял)

Ставил на перебор:

Цитата:
cache_peer 192.168.0.2 parent 3128 0 no-query default
cache_peer 192.168.0.3 sibling 3128 0 no-query

и так

Цитата:
cache_peer 192.168.0.2 parent 3128 0 no-query default
cache_peer 192.168.0.3 parent 3128 0 no-query

Не "переключается"
Все время обращается к 192.168.0.2, а как результат у людей нет Интернета.

попробовать покрутить "время

попробовать покрутить "время отклика" и\или посмотреть что там по дефолту выставлено?

насколько я помню, в броузерах выставлено 30 сек когда они начинают кричать "нет интернета"
я не помню скоко времени точно надо для сквида, чтоб понял что ему не отвечают сверху

убрать no-query (не опрашивать канал) и выставить время сек на 15

из приведенных вами вариантов - 2-й мне кажется правильным (за исключением наличия опции no-query)

imho

ОБНВ

Это смотрели уже?

что-то добрый я сегодня ....

.

Цитата:
если родительский кеш "упал" или не отвечает

А как сквид опеределяет упал ли кеш?
Я думаю, что может быть два варианта:

1. Упал сам сквид на родильском кеше или серевер
2. У родительского кеша отвалился инет.

Т.е. в первом случае родительский кеш недоступен, во втором - он не может вернуть запрашиваемую страницу.

Я к тому, что может у вас со сквидом разное определение для "упал", потому и не работает как хочется?
ЗЫ это так, просто предположение )

Я немного уточню что на

Я немного уточню что на остальных ДВУХ серверах (192.168.0.2 и 192.168.0.3) не стоит SQUID. Так бы определял по icp

существенное

существенное уточнение....

костыль, о котором говорил Анархист, пожалуй, самый простой и быстрый для внедрения способ

однако, моё мнение, сквиду пофиг стоит или нет на вышестоящем узле другой сквид или нет

проблема может еще заключаться в резолвинге имен (вернее проблема - в невозможности отрезолвить имена)

оба прокси (192.168.0.2 и 192.168.0.3) имеют одни и те же внешние DNS'ы ?

на ...0.1 поднят ли кэширующий bind и указан ли для сквида порядок опроса DNS 127.0.0.1 и далее все внешние ?

По уму - надо бы посмотреть ваш конфиг внимательно на трезвую голову ( к вечеру\ночи моск уже вскипает как бы)

то, что задачка решаема на уровне конфига сквида - я убежден
надо немного мозг поднапрячь

ОБНВ

Плохо, что все серверы у вас в одной сети - не совсем понятно куда же посылать "внешние запросы" на уровне интерфейсов

Мне подумалось, что наверное у вас должно быть настроено default gateway (iptables) на 192.168.0.3, а default parent_proxy для сквида на 192.168.0.2

Как вы видите интернет с узла 192.0.0.1 минуя сквид? Каковы правила рулежа пакетов? Как обрабатывается "падеж" .0.2 и\или .0.3 ?

что-то добрый я сегодня ....

Вот конфиг: Цитата: http_port

Вот конфиг:

Цитата:
http_port 192.168.200.100:3128

icp_port 0

cache_peer 192.168.0.2 parent 9090 0 default
cache_peer 192.168.0.3 parent 8080 0

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

acl apache rep_header Server ^Apache
#broken_vary_encoding allow apache

cache_mem 96 MB

access_log /var/log/squid/access.log squid

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 10
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 10
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

acl NTLMauth proxy_auth REQUIRED

acl localnet src 192.168.0.0/24
acl our_net src 192.168.0.0/255.255.0.0
acl our_net_dst dst 192.168.0.0/255.255.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 Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 443 # https
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling 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 allow CONNECT Safe_ports

http_access allow localhost
http_access allow me

http_access deny all

http_reply_access allow all

icp_access allow all

cache_mgr

visible_hostname proxy

cachemgr_passwd parol all

prefer_direct off

coredump_dir /var/cache/squid

never_direct allow all

С таким конфигом не происходит "переключения". Скорее всего я что то не так сделал.
Кстати DNS у них один единственный на 192.168.0.1, 192.168.0.2 и на 192.168.0.3 один и тот же.

попробуйте явно прописать

попробуйте явно прописать dns_nameservers xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy zzz.zzz.zzz.zzz (какие там у вас есть)

проверьте с узла 192.168.0.1 доступность ping mail.ru (к примеру) когда поочередно "отключен" от инета узел 192.168.0.2 а потом 192.168.0.3
Без шаманства пинги проходят в обоих случаях ?

что-то добрый я сегодня ....

.

Думаю что не ходят, т.к.

Цитата:
У самого прокси-сервера(SQUID IP 192.168.0.1) нет интернета вообще.

Да и не ходили бы все-равно, роут менять пришлось бы.

"нет интернета" можно

"нет интернета" можно понимать и как отсутсвие "айпишника наружу", но это не факт полного отсутствия нитернета, имхо

что-то добрый я сегодня ....

судя по этому ....danvach

судя по этому ....

danvach написал(а):
Вот конфиг:

Цитата:
http_port 192.168.200.100:3128

cache_peer 192.168.0.2 parent 9090 0 default
cache_peer 192.168.0.3 parent 8080 0

у вас все-таки не одна сеть

как вы из .200.100 попадаете в .0.0/24 ? (на уровне DNS-запросов и пробрасываемых портов)

На уровне iptables ? какие правила? (если есть)

как указан gateway для 192.168.200.100 ?

что-то добрый я сегодня ....

.

.200.100 это, видимо, вторая сетевуха, на которой клиенты.

Мне кажется, вы не туда копаете. Днс тут не причем, если у сквида есть родительские кеши, то резолвят они, вроде.

имхо, сквид сначала посылает

имхо, сквид сначала посылает запрос резолвинга на предмет потом проверить свои acl'ы, а потом уже посылает непосредствено урл-запрос

если, например, на eth0 (192.168.200.100) default gateway 192.168.0.2 и 02 падает - конечно не будет никакого интернета, даже при наличии второго "родителя" - сквид тупо затупит на стадии resolv

сугубо имхо

что-то добрый я сегодня ....

,

leryc написал(а):
если, например, на eth0 (192.168.200.100) default gateway 192.168.0.2

Такого быть не может, разве что у человека там сеть /16.
Если указан IP кеша а не имя, то резолвить какбы нечего.

Вобщем чтоб уверенно отбросить вашу теорию автору надо убедиться в доступности днса при недоступности обоих кешей.

/

izbushka написал(а):
Вобщем чтоб уверенно отбросить вашу теорию автору надо убедиться в доступности днса при недоступности обоих кешей.

Я бы здесь на машинку с основным (к которому подключаются клиенты) сквидом воткнул и bind'а (так, чтобы он направлял запросы по обоим каналам)...

:wq
--
Live free or die

Чегой то не то у вас в сети

Чегой то не то у вас в сети творится имхо. Как я понимаю нужен один нормальный маршрутизатор, который перекидывал бы пакетики на два канала по метрикам + один сквид, которому разрешено ломиться через этот гейтвей в нет. С чего вы взяли что кеширующий прокси c достаточно плоским набором правил должен работать как маршрутизатор?

Всех прошу извинить меня за

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

Цитата:
http_port 192.168.200.100:3128

я поменял сетевые настройки (точнее менял айпи в подсети с 192.168.200.0 на 192.168.0.0) а в конфиге осталась эта запись... я её конечно же обнаружил и исправил. В приведенном мною конфиге строку

Цитата:
http_port 192.168.200.100:3128

следует читать

Цитата:
http_port 192.168.0.1:3128

для наглядности еще раз конфиг текущий:

Цитата:
http_port 192.168.0.1:3128

icp_port 0

dns_nameservers 8.8.8.8 8.8.4.4
#эти DNS пингуются, т.к. добавлены маршруты в роутинге через 192.168.0.2 и 192.168.0.3 (route add 8.8.8.8 gw 192.168.0.2 и аналогично со вторым только через 192.168.0.3)

cache_peer 192.168.0.2 parent 9090 0 default
cache_peer 192.168.0.3 parent 8080 0

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

acl apache rep_header Server ^Apache
#broken_vary_encoding allow apache

cache_mem 96 MB

access_log /var/log/squid/access.log squid

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 10
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 10
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

acl NTLMauth proxy_auth REQUIRED

acl localnet src 192.168.0.0/24
acl our_net src 192.168.0.0/255.255.0.0
acl our_net_dst dst 192.168.0.0/255.255.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 Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 443 # https
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling 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 allow CONNECT Safe_ports

http_access allow localhost
http_access allow me

http_access deny all

http_reply_access allow all

icp_access allow all

cache_mgr

visible_hostname proxy

cachemgr_passwd parol all

prefer_direct off

coredump_dir /var/cache/squid

never_direct allow all

С этой машины (192.168.0.1) при попытке пинговать к примеру хост mail.ru он резолвит но конечно же не пингует

Цитата:
# ping mail.ru
PING mail.ru (217.69.128.42) 56(84) bytes of data

по конфигу - должно

по конфигу - должно работать

неплохо бы показать вывод #route

1) ведутся ли логи на .0.3 и .0.2 ?
2) инет есть (когда подняты 2 и 3) в обоих вариантах:

cache_peer 192.168.0.2 parent 9090 0 default
cache_peer 192.168.0.3 parent 8080 0

cache_peer 192.168.0.2 parent 9090 0 
cache_peer 192.168.0.3 parent 8080 0 default

видно по логам что хождение идет через .0.3 (во втором варианте) ?
3) что в логах самого сквида когда .0.2 падает ?

ОБНВ

Вы опять чего-то недовыложили в конфиге?

Не вижу запись http_access allow localnet our_net или где вы там разрешаете локальным юзерам ходить в инет

по идее при таком конфиге вообще инета не должно было быть у юзеров

что-то добрый я сегодня ....

leryc написал(а): по конфигу

leryc написал(а):
по конфигу - должно работать

неплохо бы показать вывод #route

1) ведутся ли логи на .0.3 и .0.2 ?
2) инет есть (когда подняты 2 и 3) в обоих вариантах:

cache_peer 192.168.0.2 parent 9090 0 default
cache_peer 192.168.0.3 parent 8080 0

cache_peer 192.168.0.2 parent 9090 0 
cache_peer 192.168.0.3 parent 8080 0 default

видно по логам что хождение идет через .0.3 (во втором варианте) ?
3) что в логах самого сквида когда .0.2 падает ?

ОБНВ

Вы опять чего-то недовыложили в конфиге?

Не вижу запись http_access allow localnet our_net или где вы там разрешаете локальным юзерам ходить в инет

по идее при таком конфиге вообще инета не должно было быть у юзеров

Вот роутинг:

Цитата:
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
8.8.8.8 192.168.0.2 255.255.255.255 U 0 0 0 eth0
8.8.4.4 192.168.0.3 255.255.255.255 U 0 0 0 eth0

Вот тут

Цитата:
acl localnet src 192.168.0.0/24
acl our_net src 192.168.0.0/255.255.0.0
acl our_net_dst dst 192.168.0.0/255.255.0.0

разрешается локальным юзерам ходить в инет.
При записи в конфиге

Цитата:
cache_peer 192.168.0.2 parent 9090 0 default
cache_peer 192.168.0.3 parent 8080 0

Интернета нет вообще, если падает 192.168.0.2 или наоборот.
Тестировал следующим образом: Выдергивал телефонный кабель из ADSL-модема, сначала у 192.168.0.2 при вставленном телефонном кабеле ADSL-модема у 192.168.0.3, интернета нет, потом втыкал обратно, ну и прописывал первым 192.168.0.3 а вторым 192.168.0.2 выдергивал кабель из ADSL-модема теперь уже у 192.168.0.3 при вставленном телефонном кабеле у 192.168.0.2, интернета нет. Если у "первого" (например 192.68.0.2) телефонный кабель воткнуть в ADSL-модем то интернет появляется.

danvach написал(а): Вот

danvach написал(а):
Вот тут

Цитата:
acl localnet src 192.168.0.0/24
acl our_net src 192.168.0.0/255.255.0.0
acl our_net_dst dst 192.168.0.0/255.255.0.0

разрешается локальным юзерам ходить в инет.

ну тогда переведите на русский или логический эту запись

http_access allow manager localhost

Ччто делает?
что разрешает?
кому разрешает?

и как следствие - кто такие manager, me, all ???

danvach написал(а):

Тестировал следующим образом: Выдергивал телефонный кабель из ADSL-модема, сначала у 192.168.0.2 при вставленном телефонном кабеле ADSL-модема у 192.168.0.3, интернета нет, потом втыкал обратно, ну и прописывал первым 192.168.0.3 а вторым 192.168.0.2 выдергивал кабель из ADSL-модема теперь уже у 192.168.0.3 при вставленном телефонном кабеле у 192.168.0.2, интернета нет. Если у "первого" (например 192.68.0.2) телефонный кабель воткнуть в ADSL-модем то интернет появляется.

тут я запутался безнадежно :(

у вас два ADSL-модема? два выхода в инет? два внешних IP ?

кто стоит на 2 и 3 ? как выходят в инет? кто слушает порты 9000 и 8080

есть еще машины кроме 1, 2, 3 ?

с какого ip вы выходите в инет через .0.1-ю машину?

что-то добрый я сегодня ....

leryc написал(а): danvach

leryc написал(а):
danvach написал(а):
Вот тут

Цитата:
acl localnet src 192.168.0.0/24
acl our_net src 192.168.0.0/255.255.0.0
acl our_net_dst dst 192.168.0.0/255.255.0.0

разрешается локальным юзерам ходить в инет.

ну тогда переведите на русский или логический эту запись

http_access allow manager localhost

Ччто делает?
что разрешает?
кому разрешает?

и как следствие - кто такие manager, me, all ???

danvach написал(а):

Тестировал следующим образом: Выдергивал телефонный кабель из ADSL-модема, сначала у 192.168.0.2 при вставленном телефонном кабеле ADSL-модема у 192.168.0.3, интернета нет, потом втыкал обратно, ну и прописывал первым 192.168.0.3 а вторым 192.168.0.2 выдергивал кабель из ADSL-модема теперь уже у 192.168.0.3 при вставленном телефонном кабеле у 192.168.0.2, интернета нет. Если у "первого" (например 192.68.0.2) телефонный кабель воткнуть в ADSL-модем то интернет появляется.

тут я запутался безнадежно :(

у вас два ADSL-модема? два выхода в инет? два внешних IP ?

кто стоит на 2 и 3 ? как выходят в инет? кто слушает порты 9000 и 8080

есть еще машины кроме 1, 2, 3 ?

с какого ip вы выходите в инет через .0.1-ю машину?

Отвечаю:

Цитата:
ну тогда переведите на русский или логический эту запись
http_access allow manager localhost

Я просто экспериментировал с доступами, сейчас в конфиге этих

acl manager proto cache_object
http_access allow manager localhost
http_access deny manager
http_access allow me

строк нет, с приведенной выше конфиге интернет работает, но как только интернет на 192.168.0.2 "пропадает" интернета вообще нет. Хотя строки

cache_peer 192.168.0.2 parent 9090 0 default
cache_peer 192.168.0.3 parent 8080 0

присутствуют.
Вот текущий конфиг, когда интернет есть на 192.168.0.2 у всех пользоватлей Интернет есть:

http_port 192.168.0.1:3128

icp_port 0

dns_nameservers 8.8.8.8 8.8.4.4
#эти DNS пингуются, т.к. добавлены маршруты в роутинге через 192.168.0.2 и 192.168.0.3 (route add 8.8.8.8 gw 192.168.0.2 и аналогично со вторым только через 192.168.0.3)

cache_peer 192.168.0.2 parent 9090 0 default
cache_peer 192.168.0.3 parent 8080 0

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

acl apache rep_header Server ^Apache
#broken_vary_encoding allow apache

cache_mem 96 MB

access_log /var/log/squid/access.log squid

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 10
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 10
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

acl NTLMauth proxy_auth REQUIRED

acl localnet src 192.168.0.0/24
acl our_net src 192.168.0.0/255.255.0.0
acl our_net_dst dst 192.168.0.0/255.255.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 443 # https
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl purge method PURGE
acl CONNECT method CONNECT

#-------------------------------------------------------------------------------------

http_access allow purge localhost
http_access deny purge
http_access allow CONNECT Safe_ports

http_access allow localhost

http_access deny all

http_reply_access allow all

icp_access allow all

cache_mgr 

visible_hostname proxy

cachemgr_passwd parol all

prefer_direct off

coredump_dir /var/cache/squid

never_direct allow all
Цитата:
тут я запутался безнадежно :(

у вас два ADSL-модема? два выхода в инет? два внешних IP ?

кто стоит на 2 и 3 ? как выходят в инет? кто слушает порты 9000 и 8080

есть еще машины кроме 1, 2, 3 ?

с какого ip вы выходите в инет через .0.1-ю машину?

Да у меня два ADSL-модема и два разных провайдера.
1-ый модем подключен к 192.168.0.2 к провайдеру условно назовем "1".
2-ой модем подключен к 192.168.0.3 к провайдеру условно назовем "2".
Так вот, если вытащить телефонный кабель (для экспиремента) из модема который подключен к 192.168.0.2 (соответственно к провайдеру 1) то интернет у всех пропадает. Т.е. не происходит переключения на прокси-сервер 192.168.0.3. В этом суть моего повествования. Если перечитать то думаю прояснится. Извините, если я описал слишком "сумбурно" но суть можно уловить.

уточните ее пару вопросов2 и

уточните еще пару вопросов

2 и 3 - это полноценные компьютеры или это внутренние айпишники модемов ?

когда воткнуто два модема другие компы (4,5,6) ходят в инет чезрез 01 ? и это видно по логам сквида?

относительно acl вы все-таки недопоняли ;)

само по себе acl это типа "правило" типа алиасса типа для имени (группы) считать бла-бла-бла

потом с этой группой надо что-то делать

чтоб не писать кажддый раз многобуквенную бла-бла-бла применяется имя группы из acl

типа того

весьма условно

поэтому в вашем конфиге должна присутствовать строчка http_access allow localnet

которая переводтся типа "разрешить http-запросы для компов\сетей, перечисленных в alc под именем localnet

в вашем конфиге все компьютеры сети (4,5,6...) не должны (не смогут) попадать в инет, за исключением 192.168.0.1 (может быть) т.к. он автоматом попал в группу localhost, для которой есть соответствующее allow

поэтому хотелось бы видеть кусок (весь не надо ;)) лога сквидда, гдде видно, что работает связка 4 -> 1 -> 2 -> инет

что-то добрый я сегодня ....

leryc написал(а): уточните

leryc написал(а):
уточните еще пару вопросов

2 и 3 - это полноценные компьютеры или это внутренние айпишники модемов ?

когда воткнуто два модема другие компы (4,5,6) ходят в инет чезрез 01 ? и это видно по логам сквида?

относительно acl вы все-таки недопоняли ;)

само по себе acl это типа "правило" типа алиасса типа для имени (группы) считать бла-бла-бла

потом с этой группой надо что-то делать

чтоб не писать кажддый раз многобуквенную бла-бла-бла применяется имя группы из acl

типа того

весьма условно

поэтому в вашем конфиге должна присутствовать строчка http_access allow localnet

которая переводтся типа "разрешить http-запросы для компов\сетей, перечисленных в alc под именем localnet

в вашем конфиге все компьютеры сети (4,5,6...) не должны (не смогут) попадать в инет, за исключением 192.168.0.1 (может быть) т.к. он автоматом попал в группу localhost, для которой есть соответствующее allow

поэтому хотелось бы видеть кусок (весь не надо ;)) лога сквидда, гдде видно, что работает связка 4 -> 1 -> 2 -> инет

Добавил в конфиг строку http_access allow localnet
теперь конфиг имеет следующий вид:

http_port 192.168.0.1:3128

icp_port 0

dns_nameservers 8.8.8.8 8.8.4.4
#эти DNS пингуются, т.к. добавлены маршруты в роутинге через 192.168.0.2 и 192.168.0.3 (route add 8.8.8.8 gw 192.168.0.2 и аналогично со вторым только через 192.168.0.3)

cache_peer 192.168.0.2 parent 9090 0 default
cache_peer 192.168.0.3 parent 8080 0

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

acl apache rep_header Server ^Apache
#broken_vary_encoding allow apache

cache_mem 96 MB

access_log /var/log/squid/access.log squid

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 10
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 10
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

acl NTLMauth proxy_auth REQUIRED

acl localnet src 192.168.0.0/24
acl our_net src 192.168.0.0/255.255.0.0
acl our_net_dst dst 192.168.0.0/255.255.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 443 # https
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl purge method PURGE
acl CONNECT method CONNECT

#-------------------------------------------------------------------------------------

http_access allow localnet
http_access allow purge localhost
http_access deny purge
http_access allow CONNECT Safe_ports

http_access allow localhost

http_access deny all

http_reply_access allow all

icp_access allow all

cache_mgr 

visible_hostname proxy

cachemgr_passwd parol all

prefer_direct off

coredump_dir /var/cache/squid

never_direct allow all

вот кусочек лога cache.log:

2010/06/18 09:50:10| Squid Cache (version 3.0.STABLE19)...
2010/06/18 09:50:10| FD 37 Closing HTTP connection
2010/06/18 09:50:10| Processing Configuration File: /etc/squid/squid.conf (depth 0)
2010/06/18 09:50:10| Initializing https proxy context
2010/06/18 09:50:10| User-Agent logging is disabled.
2010/06/18 09:50:10| Referer logging is disabled.
2010/06/18 09:50:10| DNS Socket created at 0.0.0.0, port 43230, FD 10
2010/06/18 09:50:10| Adding nameserver 8.8.8.8 from squid.conf
2010/06/18 09:50:10| Adding nameserver 8.8.4.4 from squid.conf
2010/06/18 09:50:10| helperOpenServers: Starting 5/5 'redirector' processes
2010/06/18 09:50:10| helperOpenServers: Starting 10/10 'ntlm_auth' processes
2010/06/18 09:50:11| helperOpenServers: Starting 10/10 'ntlm_auth' processes
2010/06/18 09:50:11| Accepting  HTTP connections at 192.168.0.1, port 3128, FD 37.
2010/06/18 09:50:11| HTCP Disabled.
2010/06/18 09:50:11| Configuring Parent 192.168.0.2/9090/0
2010/06/18 09:50:11| Configuring Parent 192.168.0.3/8080/0
2010/06/18 09:50:11| Loaded Icons.
2010/06/18 09:50:11| Ready to serve requests.

Ситуация не изменилась.

нужен кусок squid.log или

нужен кусок squid.log или access.log (не помню как он там у него называется)

что-то добрый я сегодня ....

.

Попробуй вытягивать кабель не из модема а из сетевухи (192.168.0.2). Будет ли при этом переключаться?
Ведь в твоем случае прокся на 192.168.0.2 отвечает сквиду что не может достать нужный урл, она же не знает кабель вытянули или вообще запрошенный урл недоступен.

izbushka написал(а): Попробуй

izbushka написал(а):
Попробуй вытягивать кабель не из модема а из сетевухи (192.168.0.2). Будет ли при этом переключаться?
Ведь в твоем случае прокся на 192.168.0.2 отвечает сквиду что не может достать нужный урл, она же не знает кабель вытянули или вообще запрошенный урл недоступен.

Я просто не знаю, и хочу поинтересоваться у Вас, а есть разница между "вытащить телефонный кабель" и "вытащить кабель из сетевого адаптера" для SQUID?

.

Я тоже не знаю. Но попробовать то легко?
Рассуждаю так: Если у сквида несколько кешей, то для переключения на следующий логично было бы чтоб первый в списке ответил, мол немогу сейчас (но поскольку у вас не сквид там, то врядли) или вообще не ответил (это и предлагаю эмулировать). Т.е. чтоб был ответ не о невозможности доставки урла а именно о проблеме с кешем. Потому как если основной сквид запрашивает заведомо несуществующий урл то ему пришлось бы перебирать все кеши, т.к. каждый бы отвечал что нет такого урла, вместо того чтоб понять с первого раза.

разница естьdanvach

разница есть

danvach написал(а):
Я просто не знаю, и хочу поинтересоваться у Вас, а есть разница между "вытащить телефонный кабель" и "вытащить кабель из сетевого адаптера" для SQUID?

если вытащить тел.каб., то, как заметил Избушка, пакет будет получен .2 и там зависнет х.з. насколько

но плохо то, что со стороны сквида это будет "нормально", т.к. tcp-соединение с .2 установлено и второй "родитель" опрашиваться не будет

если выдернуть сет.кабель от .2, то сквид не сможет установить соединение с .2 и будет (должен) искать второго родителя

что-то добрый я сегодня ....

эту мысль (мою) надо

эту мысль (мою) надо проверять, но возможностей нет

danvach написал(а):
Вот роутинг:

Цитата:
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
8.8.8.8 192.168.0.2 255.255.255.255 U 0 0 0 eth0
8.8.4.4 192.168.0.3 255.255.255.255 U 0 0 0 eth0

собственно мысль

#route add -net 0.0.0.0 -netmask 0.0.0.0 gw 192.168.0.2 -metric 1 dev eth0
#route add -net 0.0.0.0 -netmask 0.0.0.0 gw 192.168.0.3 -metric 10 dev eth0

что-то добрый я сегодня ....

.

leryc, я все никак не пойму вашу мысль.

Почему обязательно 192.168.0.2 и 192.168.0.3 должны быть шлюзами? Они просто прокси, а не НАТ, этого сквиду достаточно.

они шлюзы уже потому, что к

они шлюзы уже потому, что к ним подходит физический интернет (adsl-1 и adsl-2)

прокси (на них) - это уже вторично

что-то добрый я сегодня ....

,

шлюз - это если net.ipv4.ip_forward = 1. А то что к ним подходит физ. инет ни о чем не говорит. Сквиду не нужно чтоб они были шлюзами.

а как пакеты ходят наружу?

а как пакеты ходят наружу? ;)
токо через шлюз...

шлюз, в свою очередь, может быть "прозрачный" (net.ipv4.ip_forward = 1) и через "дырку" (прокси)

я пока так и не увидел документального подверждения что люди (или людь) получают инет от сквида .0.1

неизвестны детали настроек .2 и .3 - потому и предполагаю, что люди ходят в инет минуя сквид

и если исходить из понятия "упал интернет" - это отвалился "провайдер 1" за тел.кабелем - то разруливать это
надо на уровне роуитера и, возможно, через костыль типа этого http://wiki.kryukov.biz/wiki/Переключение_на_резервный_канал (или типа того)

что-то добрый я сегодня ....

,

leryc написал(а):
а как пакеты ходят наружу? ;)
токо через шлюз...

или через прокси :)

leryc написал(а):
шлюз, в свою очередь, может быть "прозрачный" (net.ipv4.ip_forward = 1) и через "дырку" (прокси)

Не путайте понятия. Проксирование и роутинг - абсолютно разные вещи.

А куда у него сейчас ходят пакеты - не важно, вопрос был в настройке сквида )

шлюз - это эфемерное понятие

шлюз - это эфемерное понятие точки перехода из одного в другое (в частности из одной сети в другую)
как осуществляется телепортация - прокси или роут или хрен знает что - это не столь важно для понятия "шлюз"

izbushka написал(а):
Не путайте понятия. Проксирование и роутинг - абсолютно разные вещи.

А куда у него сейчас ходят пакеты - не важно, вопрос был в настройке сквида )

как раз может быть и важным.

я подозреваю, что .2 (и .3) - это прокси внутри модема

это прокси успешно принял запрос от сквида (даже в том случае, исли инет за его спиной уже упал) и на этот запрос сквида отвечает 200 OK и в придачу отдает страничку "нету интернета"

сквид не лингвист, сквиду ок'ей и есть ok'ей - типа всё нормально

ОБНВ

и вообще встает вопрос - зачем (с какой целью) обращаться к кэшу модема если свой собственный наверняка больше?

отрубить нахрен все parent'ы и пусть себе ходит как нормальный и разруливается на уровне обычного route

что-то добрый я сегодня ....

,

leryc написал(а):
как осуществляется телепортация - прокси или роут или хрен знает что - это не столь важно для понятия "шлюз"

Шлюз в IT - это вполне конкретное понятие. В случае роутинга исходный пакет направляется далее к месту назначения. При проксировании конечный пункт пакета - это прокси, далее прокси создает свой собственный запрос урла, и возвращает ответ отправителю. Т.е. пакет пользователя не уходит дальше прокси, у пользователя вообще может быть не прописан ни шлюз ни днс для работы через прокси

leryc написал(а):
я подозреваю, что .2 (и .3) - это прокси внутри модема
это прокси успешно принял запрос от сквида (даже в том случае, исли инет за его спиной уже упал) и на этот запрос сквида отвечает 200 OK и в придачу отдает страничку "нету интернета"
сквид не лингвист, сквиду ок'ей и есть ok'ей - типа всё нормально

Про это я уже писал, проверить легко, подождем автора )

,

А есть возможность сделать на 192.168.0.3 transparent proxy? Тогда быдет работать http://squid.org.ua/FAQ/my/FAQ-4.html#ss4.9

Прокси не стоит на модемах,

Прокси не стоит на модемах, модемы представляют из себя безделушки в виде d-link 2500u, настроены мостом, ВНЕШНИЕ айпи прописаны на сетевой карте компьютера, таким образом получаем схему (не ругайте за рграфику =)

                             +-----+
/-----------/                | 192 |
/ Интернет /------/модем/----| 168 |------/LAN/-----+       +-----+         |
/---------/                  |  0  |                |       |squid|         | U
                             |  2  |                |       | 192 |         | S
                             | 9090|                |       | 168 |         | E
                             +-----+                |-------|  0  |---------| R
                                                    |       |  1  |         | S
                             +-----+                |       | 3128|         |
/-----------/                | 192 |                |       +-----+
/ Интернет /------/модем/----| 168 |------/LAN/-----+
/---------/                  |  0  |
                             |  3  |
                             | 8080|
                             +-----+

Оговорюсь на 192.168.0.2 и 192.168.0.3 НЕ СТОИТ SQUID да и операционная система Windows 200x.

.

izbushka написал(а): Ну так

izbushka написал(а):
Ну так что насчет http://www.gentoo.ru/content/i-snova-squid-no-tolko-s-2-mya-proksi-serverami#comment-144262 ?

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

.

Именно из карты с IP 192.168.0.2 а не между Win2kx и модемом?
Т.е. смысл в том чтоб разорвать связь между сквидом и родительским кешем.

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

на каждой машинке по две

на каждой машинке по две сетевых карты или по одной?

что-то добрый я сегодня ....

leryc написал(а): на каждой

leryc написал(а):
на каждой машинке по две сетевых карты или по одной?

на 192.168.0.1 ОДНА СЕТЕВАЯ КАРТА
на 192.168.0.2 ДВЕ СЕТЕВЫЕ КАРТЫ
на 192.168.0.3 ДВЕ СЕТЕВЫЕ КАРТЫ

какой конкретно прокси стоит

какой конкретно прокси стоит на виндовых машинах и, как уже спрашивал Избушка, настроены ли они transparent ?

когда подключены оба модема - покажите вывод route с обеих виндовых машин

что-то добрый я сегодня ....

leryc написал(а): какой

leryc написал(а):
какой конкретно прокси стоит на виндовых машинах и, как уже спрашивал Избушка, настроены ли они transparent ?

когда подключены оба модема - покажите вывод route с обеих виндовых машин

На обоих машинах (192.168.0.2 и 192.168.0.3) установлен прокси-сервер ES Proxy.

по поводу настройки transparent: На каких машинах вы спрашиваете настройку transparent?

На обоих виндовых машинах route print только в конце IPадреса подставить нужный:

IP:             mask             GW                    IF
0.0.0.0       0.0.0.0        xxx.xxx.xxx.xxx     xxx.xxx.xxx.xxx - т.е. все смотрит на провайдера
192.168.0.0   255.255.255.0  192.168.0.х         192.168.0.х     - ЛВС 

1) проверяли эту

1) проверяли эту мысль?

#route add -net 0.0.0.0 -netmask 0.0.0.0 gw 192.168.0.2 -metric 1 dev eth0
#route add -net 0.0.0.0 -netmask 0.0.0.0 gw 192.168.0.3 -metric 10 dev eth0

2) клиенты точно ходят в инет через сквид? (в логах видятся их ip'шники?)

3) на клиентских машинах - винда стоит? вывод route на них различается или нет когда выход в инет идет через 0.2 или 0.3 ?

4) как я понял - сквид на виндовой машине поставить религия не позволит? ;)

5) в гентовую машинку вторую карточку поставить никак?

6) у ES Proxy есть параметр Master proxy - может настроить с 0.3 на 0.2, а гентовую машинку ориентировать на только на 0.3?
когда инет на 0.2 упадет - пусть 0.3 сама с этим разбирается

7) когда "инет упал" - на клиентской машике ошибка по тайм-out'у или страничка с сообщением об ошибке? От какого прокси?

8) когда "инет упал" - на гентовой машинке сделайте wget --save-headers http://ya.ru (настройку на проход через прокси посмотрите в мане и, естественно, через тот какнал, что неработает)
какой код ответа будет - 200 OK или 404 OK или другой?

что-то добрый я сегодня ....

________________ Инет --->

                        ________________
Инет ---> Модем -->|   |                |
                   |-->
                       |  Маршрутизатор |------------> Локалка
                   |-->
Инет ---> Модем -->|   |________________|

В локалке, если очень нужно можно и сквид развернуть. Ежели с железом туго, сквид можно посадить на маршрутизатор (ибо линь).

Собсно вопрос такой. Чем не устраивает классика? Маршрутизатор работает на 3 уровне OSI, то есть на том самом уровне, который отвечает за адресацию пакетов. На этом уровне можно натить пакет из локалки на любой из каналов. Сквид оперирует на OSI уровне приложений (7-й, насколько помню), потому отрулить по какому интерфейсу (читай сетевому адресу) уйдет пакет нельзя.
К тому же в классике 2 сервера, один сквид и один гейт. У вас на единицу больше, да и функционал ниже.

PS
Буду очень удивлен ежели ваша схема сработает.

wi написал(а):

wi написал(а):
                        ________________
Инет ---> Модем -->|   |                |
                   |-->
                       |  Маршрутизатор |------------> Локалка
                   |-->
Инет ---> Модем -->|   |________________|

В локалке, если очень нужно можно и сквид развернуть. Ежели с железом туго, сквид можно посадить на маршрутизатор (ибо линь).

Собсно вопрос такой. Чем не устраивает классика? Маршрутизатор работает на 3 уровне OSI, то есть на том самом уровне, который отвечает за адресацию пакетов. На этом уровне можно натить пакет из локалки на любой из каналов. Сквид оперирует на OSI уровне приложений (7-й, насколько помню), потому отрулить по какому интерфейсу (читай сетевому адресу) уйдет пакет нельзя.
К тому же в классике 2 сервера, один сквид и один гейт. У вас на единицу больше, да и функционал ниже.

PS
Буду очень удивлен ежели ваша схема сработает.

Все дело в том, что эти два сервера еще выполняют свои функции по работе, и им нужен direct-connect с Интернетом (не проходят варинаты с нат-ами, маршрутизировнием и проксированием), Ваш вариант я прекрасно знал, но он не подходит в моем случае.
Я решил пока "костылем", сделал скрипт который правит конфиг squid.conf в строке где прописывается айпи и порты прокси сервера, проверка каждую минуту в кроне.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".