LinuxForum.Fans
Тема

Не работает always_direct в Squid Proxy

Автор: Firebolt 31 сообщений 5448 просмотров
#381282

Все привет!

У меня 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", переходит на прописанные в файле сайты. Что же у меня не так?

#381284
"Firebolt" написал:
Что же у меня не так?

При таком acl

"Firebolt" написал:
http_access deny localnet

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

PS

"Firebolt" написал:
все пошло как надо

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

#381289

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

text

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"

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

text

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

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

text

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

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

#381299

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

text

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
#381306

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

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

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

#381308

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

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

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

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

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

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

#381314
stranger написал:
Firebolt, вам сюда

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

#381315

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

#381317
Firebolt написал:

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

Вот пример http://www.lissyara.su/articles/freebsd/programms/squid+ad+group_access/

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

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

#381323

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

#381324

Как я вижу решение. Но не буду утверждать что будет работать, но всёже.
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
Как то так. Но это если тока такая ситуацыя что я описал, в конкретной ситуацыи, как я понимаю, уже есть рабочий конфиг сквида и тут нужно думать над очерёдностью правил.

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

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

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

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

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

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

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

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

Войдите или зарегистрируйтесь, чтобы ответить.