1

Все привет!

У меня Squid 3.1.20. Никак не выходит заставить работать always_direct.

Установлен из репозиториев Debian 7

squid3 -v
Squid Cache: Version 3.1.20
configure options:  '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--datadir=/usr/share/squid3' '--sysconfdir=/etc/squid3' '--mandir=/usr/share/man' '--with-cppunit-basedir=/usr' '--enable-inline' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-underscores' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth=basic,digest,ntlm,negotiate' '--enable-basic-auth-helpers=LDAP,MSNT,NCSA,PAM,SASL,SMB,YP,DB,POP3,getpwnam,squid_radius_auth,multi-domain-NTLM' '--enable-ntlm-auth-helpers=smb_lm,' '--enable-digest-auth-helpers=ldap,password' '--enable-negotiate-auth-helpers=squid_kerb_auth' '--enable-external-acl-helpers=ip_user,ldap_group,session,unix_group,wbinfo_group' '--enable-arp-acl' '--enable-esi' '--enable-zph-qos' '--enable-wccpv2' '--disable-translation' '--with-logdir=/var/log/squid3' '--with-pidfile=/var/run/squid3.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-linux-netfilter' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security' --with-squid=/tmp/buildd/squid3-3.1.20

Файл конфига (уже все из него вычистил)

############################
### Access Control Lists ###
############################

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl localnet src 192.168.1.0/24
acl bubu dstdomain "/etc/squid3/rules/alw_dir"
always_direct allow bubu


http_access allow manager localhost
http_access deny manager

#http_access allow bubu
http_access deny localnet

http_access allow localhost
http_access deny all
####################


http_port 3128
cache_mem 256 MB
cache_dir ufs /var/spool/squid3 2048 16 256
maximum_object_size 30229 KB
minimum_object_size 5 KB
access_log /var/log/squid3/access.log squid
coredump_dir /var/spool/squid3

Логи

1401081707.174      0 192.168.1.4 TCP_DENIED/403 3981 GET http://maek.kz/ - NONE/- text/html
1401081707.189      0 192.168.1.4 TCP_DENIED/403 3987 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html

Единственное, что нашел из похожего, вот у этого парня было. Он перенес адреса сайтов в файл и все пошло как надо. ACL рабочий, когда включаю "http_access allow bubu", переходит на прописанные в файле сайты. Что же у меня не так?

2 (26.05.2014 10:33:07 отредактировано pitdron)

Firebolt пишет:

Что же у меня не так?

При таком acl

Firebolt пишет:

http_access deny localnet

будете получать ошибку 403 "Доступ запрещен".

PS

Firebolt пишет:

все пошло как надо

Вообще из описания проблемы не понятно как вам надо...

3

В чем необходимость посещать сайты в списке напрямую, без кеширования?
У меня списки определены так:

acl banned1 url_regex -i "/etc/met/squid/banners1.list"
acl banned2 url_regex -i "/etc/met/squid/banners2.list"
acl banned3 url_regex -i "/etc/met/squid/banners3.list"
acl nobanned1 url_regex -i "/etc/met/squid/no_banners.list"

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

http_access deny banned1 !nobanned1
http_access deny banned2 !nobanned1
http_access deny banned3 !nobanned1

соответственно в no_banners.list лежит список доступных сайтов, вот кусок

^.*nalog.ru.*$
^.*advertising.yandex.*$
^.*www.techlabs.ru.*$
^.*realmusic.ru.*$
^.*rin.ru.*$
^.*multiplaz.ru.*$
^.*allsiemens.*$
^.*irr.ru.*$

4

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

5

Firebolt, вам сюда

6 (26.05.2014 11:37:45 отредактировано Bif)

Вроде так (не проверял)

acl razr_url url_regex -i "/etc/squid/acl/razr_url.txt"
acl all_sites dst 0.0.0.0/0
...........................
http_access allow razr_url
http_access deny all_sites

7

Вот опысание директивы. Она служыт для того чтобы пересылать запросы напримую к ресурсу минуя выщестоящие кешы.

Trouble  in WINDOWS reboot, trouble in UNIX be root.

8

kisil пишет:

Вот опысание директивы. Она служыт для того чтобы пересылать запросы напримую к ресурсу минуя выщестоящие кешы.

TC надо работать со списками, а директива вроде список не поддерживает...

9

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

Trouble  in WINDOWS reboot, trouble in UNIX be root.

10

kisil пишет:

Вот опысание директивы. Она служыт для того чтобы пересылать запросы напримую к ресурсу минуя выщестоящие кешы.

То есть, если у меня всего один кэширующий сервер, то мне вообще некуда воткнуть эту директиву...

А я-то думал, что эта директива позволит мне предоставлять доступ к указанным сайтам всем, кто бы их ни запросил. А она вообще о другом.

kisil пишет:

ему нужно описать кроме списков доступа с сайтами ещё и список доступа тех кто имеет доступ в интернет или кто не имеет доступ в интернет

Мой рабочий конфиг имеет авторизацию в AD и инет раздается тем, кто состоит в группе AD. Мне нужно сделать, чтобы пользователи этой группы имели весь интернет, а те, кого в группе нет (коих 90%), могли посещать только определенные сайты.

11

stranger пишет:

Firebolt, вам сюда

Вот этого я не понял.

12

Firebolt, есть множество "допущенные в интернет" и множество "допущенных к таким-то сайтам". Второе есть подмножество первого и никак иначе. Вы сказали буквально следующее: "на определенный список сайтов предоставить доступ тем пользователям, у которых нет прав для доступа в интернет", что является логическим нонсенсом. Нельзя предоставить доступ к сайтам тем, кому запрещён выход в Интернет.

13

Firebolt пишет:

Мой рабочий конфиг имеет авторизацию в AD и инет раздается тем, кто состоит в группе AD. Мне нужно сделать, чтобы пользователи этой группы имели весь интернет, а те, кого в группе нет (коих 90%), могли посещать только определенные сайты.

Вот пример http://www.lissyara.su/articles/freebsd … up_access/

14

stranger пишет:

Firebolt, есть множество "допущенные в интернет" и множество "допущенных к таким-то сайтам". Второе есть подмножество первого и никак иначе. Вы сказали буквально следующее: "на определенный список сайтов предоставить доступ тем пользователям, у которых нет прав для доступа в интернет", что является логическим нонсенсом. Нельзя предоставить доступ к сайтам тем, кому запрещён выход в Интернет.

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

15

Firebolt, Вы можете претендовать на Нобелевку. В Вашей компании много лет есть группа пользователей, которым доступны сайты без доступа в Интернет. Это открытие.

16 (26.05.2014 12:49:41 отредактировано kisil)

Как я вижу решение. Но не буду утверждать что будет работать, но всёже.
acl bubu dstdomain "/etc/squid3/rules/alw_dir" - перечисленые сайты на которые можно ходить всем
acl localnet src 192.168.1.0/24 - сеть в которой и будут эти "все"
acl inet-users external nt_group inet-users - список пользователей из АД которым доступ в Интернет открыт
Сквид при старте просматривает конфиг построчно и в такой же последовности и строит директивы. Гдето я это читал не помню где.
Тогда:
1. Разрешаем всем пользователяи из нашей сети ходить тока на определённые сайты
http_access allow localnet  bubu
2. Разрешаем пользователям из АД ходить в тырнет
http_access allow inet-users
3. А всем остальным марсианам запрещаем
http_access deny all
Как то так. Но это если тока такая ситуацыя что я описал, в конкретной ситуацыи, как я понимаю, уже есть рабочий конфиг сквида и тут нужно думать над очерёдностью правил.

Trouble  in WINDOWS reboot, trouble in UNIX be root.

17

stranger пишет:

В Вашей компании много лет есть группа пользователей, которым доступны сайты без доступа в Интернет

Вы настойчивы ab  В таком случае скажу, что доступ в интернет в локальной сети есть у всех пользователей. Только у 90% из них он на 100% ограничен. Устроит?

18

kisil пишет:

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

Круто! Перечислите весь интернет?  ai

19 (26.05.2014 12:53:12 отредактировано stranger)

Firebolt пишет:

доступ в интернет в локальной сети есть у всех пользователей. Только у 90% из них он на 100% ограничен

На 100% ограничен - значит его НЕТ. Вы сами поняли, что сказали? У меня есть сто красных яблок, но девяносто из них зелёные.

20

kisil пишет:

Как то так. Но это если тока такая ситуацыя что я описал, в конкретной ситуацыи, как я понимаю, уже есть рабочий конфиг сквида и тут нужно думать над очерёдностью правил.

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

21

stranger пишет:

На 100% ограничен - значит его НЕТ

Раз Вы рассуждаете о математических множествах, то Вам должно быть известно, что теория имеет отличия от практики. Так вот теоретически интернет у них есть! А практически - нет!

22

stranger пишет:
kisil пишет:

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

Круто! Перечислите весь интернет?  ai

Нет тока те сайты на которые могут ходить пользователи из сети 192.168.1.0/24 и которые не входят в групу пользователей АД. Тоисть "все остальные пользователи" отличные от авторизированых в АД.

Trouble  in WINDOWS reboot, trouble in UNIX be root.

23

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

Алгоритм для первоклассника.

Дано:
1) Правило 1
2) Правило 2
3) Группа Х

Если пользоатель в группе Х, то правило 1, иначе - правило 2

24

А может всётаки сделаем усилие и попробуем помочь ТС на практике и в теор дебри не будем углублятса Всемирной Теории Относительности.
bm

Trouble  in WINDOWS reboot, trouble in UNIX be root.

25

kisil, а я что делаю? Или мне по указанному мною алгоритму ещё и конфиг самому написать?

26 (26.05.2014 13:22:02 отредактировано kisil)

Писать, не писать. А пример, по доброте душевной, привести можно. Эт моё личное мнение.  bs
Ну ладно хватит.
ТС как так дела, что то получилось или нет?????

Trouble  in WINDOWS reboot, trouble in UNIX be root.

27

Только вернулся на место рабочее, щас запилю конфиг.

28

stranger пишет:

Если пользоатель в группе Х, то правило 1, иначе - правило 2

тащем-то тут возможно 4 комбинации. И вообще для множества из n правил, каждое из которых является бинарным, возможно ровно 2ⁿ комбинаций. Доказывается по индукции, ибо каждое правило удваивает количество вариантов.

В данном случае есть список сайтов L, и его инверсия ~L. Пользователь может
0. быть без интернета
1. иметь доступ только к L
2. иметь доступ только к ~L
3. иметь доступ к любым сайтам.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

29 (26.05.2014 13:44:35 отредактировано Firebolt)

kisil пишет:

ТС как так дела, что то получилось или нет?????

Проверил на скорую руку. Все работает, как надо: кто в группе, ходит везде, кто не в группе, ходит по списку.

Теперь буду усложнять. Надо добавить, чтобы все могли юзать Viber.

30 (26.05.2014 13:44:38 отредактировано stranger)

drBatty,

http://upload.wikimedia.org/wikipedia/commons/7/70/William_of_Ockham.png