Наиболее часто задаваемые вопросы в форуме на squid.opennet.ru

Оригинал этого документа расположен на сайте http://squid.opennet.ru

Наиболее часто задаваемые вопросы в форуме на squid.opennet.ru
Обновлено: 13.12.2005

1. Установка. Запуск. Основные настройки

1.1. При запуске squid -z получаю "Permission Denied". Почему ?
См.
п.2.1.

1.2. У меня проблема - Squid не хочет запускаться при отсутствии связи с Интернет :( В лог пишет "DNS lookup faled". Как бороться ?
Запускать с ключом -D. Squid тестирует ДНС при запуске, если в данный момент связи с Интернет нет, то Squid завершает свою работу с указанным выше сообщением о ошибке. Ключ -D указывает прокси не производить тест DNS при запуске.

1.3. Как мне заставить мой прокси работать только через прокси провайдера ?
В squid.conf укажите:

-------------- файл squid.conf --------------
cache_peer адрес_прокси parent 3128 3130 no-query default
never_direct allow all

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

1.4. Как сделать так, чтобы мой сквид сам ходил за объектом в инет, если его нет на прокси провайдера ?
В squid.conf укажите:

-------------- файл squid.conf --------------
cache_peer адрес_прокси_провайдера sibling 3128 3130

1.5. За что отвечает директива prefer_direct ?
Значение "on" указывает на приоритетность передачи запроса сквидом напрямую перед опросом родительского кеша.

2. Логи

2.1. Squid не создает (не пишет в) файлы access.log, cache.log. Почему ?
Чтобы Squid создавал эти файлы при первом запуске и мог в них писать, директория logs и сами файлы должны принадлежать пользователю/группе от которых стартует прокси. За это отвечают директивы

-------------- файл squid.conf --------------

cache_effective_user
cache_effective_group

в конфигурационном файле. По-умолчанию это nobody и nogroup. В общем случае необходимо сделать:

# chown -R nobody:nogroup /usr/local/squid

перед первым запуском. Это же касается и директории, где размещается ваш кеш.

2.2. Как перевести время в access.log в "нормальный" формат ?
Указать в squid.conf emulate_httpd_log on или использовать такой скрипт при разборе лога:

#!/usr/sbin/perl -p
s/^d+.d+/localtime $&/e;

2.3. Как мне убрать/показать в логе access.log клиентские IP ?
Настроить должным образом директиву client_mask:

-------------- файл squid.conf --------------

client_mask 255.255.255.0     #в логе только номер сети типа 192.168.0.0
client_mask 255.255.255.255  #в логе клиентский IP: 192.168.0.2, 192.168.0.3 etc

2.4. Как мне отключить store.log ?
За запись данных в store.log отвечает директива cache_store_log в squid.conf. Чтобы отключить store.log, укажите :

-------------- файл squid.conf --------------
cache_store_log none

3. Контроль доступа

3.1. Не могу разобраться с правилами построения ACL. Где можно посмотреть как это делать верно ?
Советую почитать отличную статью по этому поводу:
http://linuxnews.ru/docs/showdoc.php?id=4668&thread=4668

3.2. А у меня ACL не работает !!! Вот он: acl mmm src 192.168.0.10/255.255.255.0
Неверно указана маска. В данном случае верное значение - 255.255.255.255

3.3. Вроде верно указаны ACL и http_access, но результате я получаю Access Deny, почему ?
Внимательно посмотрите на ваши правила:

-------------- файл squid.conf --------------
acl all src 0.0.0.0/0.0.0.0
acl localnet 192.168.0.1-192.168.0.15/255.255.255.0.0
http_accsess deny all
http_access allow localnet

Порядок объявления http_access имеет большое значение, правила проверяются сверху вниз до первого совпадения, дальнейшая проверка правил расположенных ниже НЕ ПРОИЗВОДИТСЯ. В данном случае необходимо указать:

-------------- файл squid.conf --------------
http_access allow localnet
http_access deny all

3.4. Как мне заставить Squid обращаться к моим локальным сайтам напрямую ?
Все просто:


-------------- файл squid.conf --------------
acl local dstdomain .domain.com
always_direct allow local

3.5. Как ограничить количество одновременных http-сессий для клиента ?
К примеру, так:

-------------- файл squid.conf --------------
acl client src 10.10.10.2/255.255.255.255

acl limit maxconn кол-во сессий
http_access allow client !limit

3.6. Как запретить пользователям использовать ftp ?

-------------- файл squid.conf --------------
acl noftp proto FTP
http_access deny noftp

3.7. Как запретить конкретному IP-адресу ходит по определенному URL?

-------------- файл squid.conf --------------
acl special_client src 10.1.2.3
acl special_url url_regex ^http://www.squid-cache.org/Doc/FAQ/$
http_access deny special_client special_url

3.8. Как запрещать/разрешать доступ к прокси используя MAC-адреса ?
Контроль доступа по MAC-адресам работает в Linux и Solaris(вроде бы, но Солярки у меня нет, поэтому проверить не могу. Подскажите, кто пробовал). Для *BSD это работать не будет. Чтобы возпользоваться данной возможностью, ваш Squid должен быть собран с ключем --enable-arp-acl. Замечу сразу, что если у вас установлен готовый пакет (rmp/tgz etc), то скорее всего такой ключ при его сборке не использовался. Пересобираете Squid:

%./configure --enable-arp-acl [другие опции]
%make clean
%make;make install

в конфиг добавляете строки типа:

-------------- файл squid.conf --------------
acl ip1 src 192.168.0.1/255.255.255.255
acl mac1 arp 00:0F:01:00:03:FF
http_access allow mac1 ip1
http_access deny all

В результате доступ будет разрешен для MAC 00:0F:01:00:03:FF, если его IP - 192.168.0.1. Но привязку IP-MAC правильнее делать с помощью arp:

----------- файл /etc/ether ---------

192.168.0.1 00:0F:01:00:03:FF
.............. и т.д. ..............
 #arp -f /etc/ether

См. также http://squid.opennet.ru/FAQ/my/FAQrus-10.html#ss10.20

3.9. Как мне запретить использовать кому-либо мой прокси как parent ?
Используйте директиву miss_access:

-------------- файл squid.conf --------------
miss_access deny all

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

4. Аутентификация пользователей

4.1. Где можно почитать по-русски про настройку аутентификации пользователей в Squid?
Загляните в FAQ:
http://squid.opennet.ru/FAQ/my/FAQ-23.html
http://squid.org.ua/FAQ/my/FAQ-19.html#ss19.6
http://squid.org.ua/FAQ/my/FAQ-19.html#ss19.7

4.2. Прошу прощения за дурацкий вопрос, но где взять ncsa_auth?
В исходных текстах вашего Squid сделать

% cd auth_modules/NCSA
% make
% make install

Модуль аутентификации будет установлен в ту же директорию что и бинарник самого Squid.

4.3. Как настроить аутентификацию пользователей по одному порту (3128) и разрешить прохождение пользователей без аутентификации по другому порту (8080) ?
Поднять два Squid-а. Иначе - никак.

4.4. Как сделать так, чтобы Squid разрешал запросы тольк от тех, кто заглогинился на PDC (Samba) ?
Воспользуйтесь модулем аунтентификации SMB. Подробный инструкции по его настройке см.
здесь.

4.5. Возможно ли настроить аутентификацию пользователей, если мой Squid работает в режиме прозрачного прокси?
Нет, это работать не будет. Либо аутентификация, либо прозрачный прокси.

4.6. Если я настроил аутентификацию, то я смогу видеть имя пользователя в access.log?
Да. Имя пользователя заносится в access.log для каждого запроса.

5. Прозрачное проксирование

5.1. Как мне настроить прозрачный прокси на Linux ?
По-английски:
http://www.squid-cache.org/FAQ/FAQ-17.html#ss17.3
По-русски: http://www.bog.pp.ru/work/squid.html#transparent

5.2. Поддерживает ли Squid wccp v.2 ?
Нет. Только v.1.

5.3. А можно прозрачно пропускать ftp-трафик через Squid ?
Нет. Squid прозрачно проксирует только http.

5.4. Я могу настроить прозрачный прокси на Windows ?
Нет. Также не работает поддержка WCCP, Async I/O и внешних вспомогательных программ/редиректоров.

6. Delay Pools

6.1. Где-нибудь есть русское описание настроек delay pools ?
Советую почитать отличную статью по этому поводу:
http://linuxnews.ru/docs/showdoc.php?id=4668&thread=4668

6.2. Использую delay pools. При рестарте прокси резко возрастает нагрузка в канале. Почему?
Все верно. При рестарте в пулы попадут только НОВЫЕ запросы. Все прежние запросы под органичение не попадают, отсюда и нагрузка.

7. Мониторинг и анализ журналов

7.1. Хочется прикрутить MRTG к Squid. Кто-нить это делал ?
Ответ см. на
http://squid.opennet.ru/mrtg/.

8. Реклама. Редиректоры

8.1. Подскажите есть ли где-нибудь готовые URL "плохих" сайтов и банерных систем ?
Обратите внимание на редиректор
SquidGuard. С ним вместе идет громадная база порнушных сайтов и прочей мишуры. Список российских банеродержателей можно найти на http://pail.pu.ru.

8.2. Мой редиректор иногда отказывается обрабатывать запросы! Почему ?
Гляньте в cache.log, скорее всего в данный момент все ваши дочерние процессы редиректора заняты. В этом случае просто увеличьте их кол-во в директиве redirect_children файла squid.conf.

8.3. Где можно посмотреть пример конфига для SquidGuard ?
См. здесь:
http://www.squidguard.org/config/.

9. Как мне заставить работать через Squid мой любимый ...

9.1. ICQ-клиент (Windows)?
Пример:
http://squid.opennet.ru/examples/icq.shtml.

9.2. Licq (*nux)?
Пример:
http://squid.opennet.ru/exampl/licq.shtml.

9.3. Trillian ?
См. пример настройки на странице
http://squid.opennet.ru/examples/trillian.shtml.

9.4. Total(Windows) Commander ?
См. пример настройки на странице
http://squid.opennet.ru/examples/wc.shtml.

9.5. Хочется пользоваться системой портов во FreeBSD, а доступ только через прокси, как быть ?
Чтобы вы могли скачивать исходные тексты при установке порта, укажите в файле /etc/make.conf следующие переменные:

FETCH_ENV=   FTP_PROXY=ftp://IP_адрес_прокси:порт_прокси
FETCH_ENV=   HTTP_PROXY=http://IP_адрес_прокси:порт_прокси

10. Разное

10.1. А могу ли я забирать почту по POP3 с super-freemail.com через Squid ?
Нет. Squid не проксирует POP-сессии.

10.2. Как мне посмотреть с какими ключами configure собран мой Squid ?
Посмотрите в файл config.status, если остались исходники, из которых собирался Squid. Начиная с версии 2.5, опции можно посмотреть, использовав ключ -v :

% squid -v
Squid Cache: Version 2.5.STABLE3
configure options:  --prefix=/var/squid/2.5 --enable-snmp


Вадим Веремеенко Copyright © 2002-2005