PDA

View Full Version : squid для WL-500gP


Сhemist
19-02-2008, 14:19
Долго шарил по форуму и обнаружил, что все ссылки по squid, что мне попадались, содержат два утверждения:
1. "нафига здесь такая штука, это же не сервак"
2. "ну ты поищи ... (подставить ссылку по вкусу), там точно все есть"

Я ярый фанат squid. Я не использую его, как кэширующий прокси (для этого у меня стоит BFilter), а чаще всего я использую его для получения дополнительного IP для скачивания пор..., нужных статей :)
Имея большой опыт подъема свида под FreeBSD я решил забацать его и тут, благо в списке пакетов он есть.

Итак, первое:
ipkg install squid
ставим сам squid

Далее, заходим в /opt/etc/squid
и находим там squid.conf

Привожу здесь минимально необходимый рабочий конфиг

auth_param basic program /opt/libexec/ncsa_auth /opt/share/passwords/users
auth_param basic children 1
auth_param basic realm Authorized users only. Squid PROXY
auth_param basic credentialsttl 2 hours

acl MY proxy_auth REQUIRED
acl all src 0.0.0.0/0.0.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 SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT

http_access allow MY
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_port 3128

hierarchy_stoplist cgi-bin ?

cache_dir ufs /opt/var/squid/cache 20 16 256

cache_swap_low 97
cache_swap_high 100

access_log /opt/var/squid/logs/access.log squid
pid_filename /opt/var/squid/logs/squid.pid

acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

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

acl apache rep_header Server ^Apache
broken_vary_encoding allow apache

header_access From deny all
header_access Referer deny all
header_access User-Agent deny all
header_access Cache-Control deny all
header_access Via deny all
header_access X-Forwarded-For deny all

cache_effective_user nobody
cache_effective_group nobody

visible_hostname home.elist.ws

icon_directory /opt/share/squid/icons
error_directory /opt/share/squid/errors/Russian-1251

cachemgr_passwd 456789 all

coredump_dir /opt/var/squid/cache

и к нему небольшие коментарии:

auth_param basic program /opt/libexec/ncsa_auth /opt/share/passwords/users - как Вы понимаете, второй путь может быть любым, но там должен лежать файлик (users) с паролями в формате htaccess. Права на него нужно ставить так, чтобы непревелигированный пользователь (nobody) смог его прочитать.

auth_param basic realm Authorized users only. Squid PROXY - текст, который выводится в шапке запрос пароля. Может быть любым на Ваше усмотрение.

cache_dir ufs /opt/var/squid/cache 20 16 256 - очень важная строка, разберем поподробнее:
/opt/var/squid/cache - путь к кэшу. Может вести куда угодно, НО не на fat или ntfs партиции.
20 - размер кэша в Мб. Выбирается на Ваш вкус и возможности.

access_log /opt/var/squid/logs/access.log squid - место, куда пишется лог-файл доступа к ресурсам. Собственно его можно анализировать - кто и куда лазил за пор... статьями. ВНИМАНИЕ! Не забывайте его ротировать, дабы размер его не принял катастрофические величины.

visible_hostname home.elist.ws - поменяйте на свой хост или IP.

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

Первый запуск производить squid -z для формирования дерева директорий в кэше.
Для автоматического запуска squid при старте не забудте добавить в post-mount строчку
/opt/etc/init.d/S80squid start
а для того, чтобы squid принимал запросы извне не забудьте добавить в post-firewall строчки
iptables -A INPUT -p 'tcp' --dport 3128 -j ACCEPT
iptables -t nat -A PREROUTING -i vlan1 -p 'tcp' --dport 3128 -j DNAT --to-destination $4:3128

В итоге все сводится к классическому Linuxовому правилу "Конфиг всему голова" :)

З.Ы. Для настройки squid в качестве кэширующего прокси для локальной сети следует разобраться в комбинации
acl home src 192.168.0.0/255.255.0.0
http_access allow home

192.168.0.0/255.255.0.0 - диапазон Вашей "внутренней" сети.

Т.е. первое правило определяет сеть для безаппеляционного доступа, а второе этот доступ разрешает. Таким образом пользователям "внутренней" сети не придется вводить пароль для доступа к кэшу/

Не оъясняю маленькую засаду с порядком правил - хочу посмотеть, воспользовался ли кто моей инструкцией :)

angel_il
19-02-2008, 22:59
о тогда вопрос к ярому сквидоводу, давно завязал со сквидом поэтому не могу вспомнить чего не хватает, у меня над сквидом еще пара проксей но CONNECT для HTTPS не запрещен, а засада вот такая если svn ломится через моего сквидато получает облом (код ошибки напишу позже, лог на работе) если говорю svn-у использовать вышестоящую проксю то все ок. Т.е., что то накосячил с HTTPS, HTTP работает без проблем.
Ну и естественнно без опции never_direct оно вообще не работает ибо сверху прокси.

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

Сhemist
20-02-2008, 06:46
Возможно вся проблема в том, что по умолчанию в конфиге squid стоят такие строчки
acl SSL_ports port 443

acl Safe_ports port 443 # https

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
Т.е. коннект по этому порту закрыт дважды (!). Я не проверял это, но как вариант - попробуй.

les
14-03-2008, 04:11
Спасибо автору! Сделал как написано, всё вроде работает. В "засаду" пока не попал или может не понял что попал :)

Кстати, а что это за кэшманагер? Для чего он нужен и как его вырубить, раз уж он глючный?

Reyter
14-03-2008, 07:52
Сhemist, хорошая статья, побольше бы таких. :)
Если бы еще к ней добавить примеры вариантов ограничения доступа к прокси, авторизации и шейпинга - было бы вообще замечательно. ;)

Сhemist
18-03-2008, 06:51
Кстати, а что это за кэшманагер? Для чего он нужен и как его вырубить, раз уж он глючный?

Его включать не нужно :) Это cgi-скрипт, открывающий доступ к кэшу и статистике обращений и т.д.

Сhemist
18-03-2008, 06:55
вариантов ограничения доступа к прокси, авторизации

В данном случае описан вариант ограничения доступа и авторизации (согласитесь, в данном случае это одно и тоже) для "домашнего" использования. Зачем забивать головы настройкой автоматической авторизации пользователей из корпоративной сети по записям в локальном домене, если для этого существуют другие сайты и другие статьи. Поиск по слову squid рулит!

vaspupkin
19-03-2008, 08:34
но там должен лежать файлик (users) с паролями в формате htaccess. Права на него нужно ставить так, чтобы непревелигированный пользователь (nobody) смог его прочитать
Можно тут поподробней?
Что должен содержать файл и какие права ему дать?

Сhemist
19-03-2008, 08:53
vaspupkin, извини конечно, но я не могу ответить на твой вопрос :) А послать почитать ФАК по Unix-системам как-то рука не поднимается.

vaspupkin
19-03-2008, 09:12
vaspupkin, извини конечно, но я не могу ответить на твой вопрос :) А послать почитать ФАК по Unix-системам как-то рука не поднимается.

А что так, религия не позволяет дать ближнему чуть больше? Я и ФАК не отказывался почитать, знать бы о чем читать. Ну не было у меня нужды изучить подробно UNIX.

Сhemist
19-03-2008, 09:21
Как раз религия говорит - помоги ближнему своему, направь его к свету, но дай пару раз стукнуться лбом, чтобы знал элементарные вещи и учился пользоваться поиском.
Читать тут (http://www.opennet.ru/). Ключевые слова: htaccess и установка прав доступа.

vaspupkin
19-03-2008, 10:20
Сдаюсь...
А всего-то хотел перенаправить лог на USB HDD в /tmp/harddisk/squid/logs

Файл /opt/share/passwords/user
nobody:x:99:99:nobody:/:/tmp/harddisk/var/squid/nologin

Права на файл
[admin@WL500GP root]$ ls -la /opt/share/passwords/users
-rw-r--r-- 1 admin root 56 Mar 19 11:58 /opt/share/passwords/users

Настройка /opt/etc/squid/squid.conf
auth_param basic program /opt/libexec/ncsa_auth /opt/share/passwords/users

Права на /tmp/harddisk/var/squid
[admin@WL500GP root]$ ls -la /tmp/harddisk/var/squid
drwxr-xr-x 4 admin root 4096 Mar 19 10:11 .
drwxr-xr-x 3 admin root 4096 Mar 19 09:36 ..
drwxr-xr-x 2 admin root 4096 Mar 19 10:11 cache
drwxr-xr-x 2 admin root 4096 Mar 19 09:36 logs

Сквид сбрасывается после старта. Лог пишется не на диск, а в /opt/var/squid/logs с ошибкой
FATAL: Cannot open '/tmp/harddisk/var/squid/logs/access.log' for writing.
The parent directory must be writeable by the
user 'nobody', which is the cache_effective_user
set in squid.conf.

Что не так делаю?

al37919
19-03-2008, 10:30
ну что тут скажешь. Если совсем конкретно, то прочитать для чего нужна комманда chmod

Сhemist
19-03-2008, 10:54
Гуру прав.... У тебя права на запись в эту директорию и в этот файл стоят от админа, а должны стоять от nobody

Изыскания
Файл /opt/share/passwords/user

nobody:x:99:99:nobody:/:/tmp/harddisk/var/squid/nologin в корне не верны.

vaspupkin
19-03-2008, 10:58
Гуру прав.... У тебя права на запись в эту директорию и в этот файл стоят от админа, а должны стоять от nobody

Изыскания
Файл /opt/share/passwords/user

nobody:x:99:99:nobody:/:/tmp/harddisk/var/squid/nologin в корне не верны.

Спасибо, с правами от nobody разобрался.

Kot
19-03-2008, 12:13
а возможно ли прикрутить к сквиду анализатор логов аля sarg? если да, то как? :)

Сhemist
19-03-2008, 12:25
Да, можно. Лог access.log имеет стандартный формат, поэтому достаточно натравить на него анализатор.

Kot
19-03-2008, 12:29
просто при использовании sarg на шлюзе с процессором на 2ггц и памятью на 512м при анализе логов сжирается вся память и идет 5ти минутный ступор.. навереное роутер такое не осилит

Сhemist
19-03-2008, 12:38
У меня на роутере стоит Awstats. Прекрасно переваривается машинкой.

vaspupkin
21-03-2008, 21:17
Ничего, если тему подниму? :rolleyes: Не силен я в юниксе, а настроить хочется.
Сквид поднял, все заработало. В эксплорере установил подключаться через прокси с портом 3128.
Теперь хотелось бы узнать, как сделать пару настроек:

1. Как сделать прозрачным вход для юзера, т.е. что бы он не вводил пароль при каждом открытии эксплорера? Галка "сохранить пароль" не работает при переоткрытии эксплорера.
2. Как запретить пользователю подключаться в обход прокси, т.е. если отключить проки сервер, то подключение к инету тоже возможно?

bash
21-03-2008, 21:29
а чаще всего я использую его для получения дополнительного IP для скачивания пор..., нужных статей

Я так и не понял, зачем нужен кольмар? Можно с примерами?

Сhemist
22-03-2008, 12:26
1. Как сделать прозрачным вход для юзера, т.е. что бы он не вводил пароль при каждом открытии эксплорера? Галка "сохранить пароль" не работает при переоткрытии эксплорера.
2. Как запретить пользователю подключаться в обход прокси, т.е. если отключить проки сервер, то подключение к инету тоже возможно?

Все в этой фразе: Для настройки squid в качестве кэширующего прокси для локальной сети следует разобраться в комбинации
acl home src 192.168.0.0/255.255.0.0
http_access allow home

А второй вопрос - только с помощью файервола. Закрыть в нем 80 порт и никто не сможет пройти, только через прокси. Или завернуть 80 порт на порт прокси - так правильнее. Как это сделать - поиск. На форуме все обсуждалось.

les
25-03-2008, 12:48
Chemist, подскажи как вырубить кэширование полностью и есть ли в этом смысл?

Я так понимаю, что отключив кэширование squid будет меньше тратить рессурсов коробочки т.к. не нужно будет писать файлы на диск/флэш, но с другой стороны упадёт скорость открытия страниц т.к. кажды раз ему нужно будет качать всё содержимое запрашиваемого сайта.
Или я ошибаюсь?

Спасибо!

Сhemist
25-03-2008, 13:01
Chemist, подскажи как вырубить кэширование полностью и есть ли в этом смысл?

Выключаете использование squidа и все. Все запросы идут напрямую.

А нужен Вам squid или нет, тут уж решать самому. У меня на компе стоит прокся, которая режет что нужно. А squid я чаще использую снаружи.

les
25-03-2008, 13:07
Выключаете использование squidа и все. Все запросы идут напрямую.
.

Дело в том, что сквид я использую не для выхода из локалки, а для обхода прокси моего работодателя через нестандартный порт. Эх, каждый пролазит наружу как может :D

Поэтому отказаться от сквида я не могу, но кэширование мне, в принципе, не нужно. Вот и хотел его попробывать вырубить. Возможно ли это?

Сhemist
25-03-2008, 13:28
Ну и я примерно так же его использую. При этом никогда не задумывался как там выключать кэширование и делать это или не делать. Мне мощи коробки вполне хватает, т.к. в этом деле не мощь главное, а толщина канала. Туда-сюда все гонять, тут скорость будет узким местом.
Почитай сторонние маны, может кто такую задачу решал.
И попробуй вот это (http://wl500g.info/showthread.php?t=13373), может поможет. От нее нагрузки на роутер совсем мало.

al37919
25-03-2008, 13:45
а не проще ли использовать стандартный ssh сервер с организацией туннеля для той же цели?

Сhemist
25-03-2008, 14:00
Это к les вопрос. Для моих разовых вылазок такой комбинации достаточно. У меня с доступом полегче :)

al37919
25-03-2008, 14:29
ну, насколько я понял, вы с les делаете одно и то же:
подняв сквид на роутере стоящем в месте А, прописав его в месте Б в виде прокси, ходим в инет, находясь в Б через А.

Тот же результат достижим так:
1) dropbear надеюсь уже стоит и в wan смотрит
2) создаем динамический туннель в putty и открываем соединение
3) прописываем А в виде socks5 прокси и ходим в инет из Б через А

Подробно я этот вопрос разбирал здесь: http://wl500g.info/showthread.php?t=12833

Просто сквид в отличие от дропбира штука уж больно тяжеловесная... imho, конечно.

Сhemist
25-03-2008, 14:35
Ты все верно понял, но я повторюсь - мне это удовольствие нужно раз в сто лет. Поэтому дернуть галку через F12 в Opera мне быстрее для получение нужного результата.
А твою ссылку видел уже и взял на заметку. Как только - так сразу!

les
26-03-2008, 16:03
al37919, спасибо за инфу. Идея с ssh-тонелем мне понравилось, однако полностью реализовать не удалось. Детали напишу в топике про ssh-тонели, т.к. к squid это отношения не имеет.

Добавлено: В конце-концов разобрался! Спасибо.

Выводы:
Если нужен доступ в инет через коробочку на нестандартном порту (например, обход файрвола сети из котороый вы выходите) то ssh-tunnel удобнее если выход нужен только одному или нескольким людям, но тем кому можно доверить логин на рутер. В любом другом случае лучше использовать squid, так как он позволяет создать отдельный файл с логинами пользователей и не требует никаких дополнительных действий для выхода в инет.

monarchp
14-06-2008, 15:54
1. как дать доступ к проксе всей своей локальной подсетке (192.168.*) и конкретным ip'шникам из вне...?
2. регулярно вылетает.. - Jun 14 20:14:00 kernel: Out of Memory: Killed process 429 (squid). - как решается...?
3. хотел прикрутить статистику к сквиду... нашол Sarg - Squid Analysis Report Generator , но толком не компилится... может кто собирал уже бинарник и поделится..?

gcc -c -I. -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DHAVE_DIRENT_H=1 -DSTDC_HEADERS=1 -DHAVE_ICONV=1 -DICONV_CONST= -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DIRENT_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_NETDB_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_CTYPE_H=1 -DHAVE_GD_H=1 -DHAVE_GDFONTL_H=1 -DHAVE_GDFONTT_H=1 -DHAVE_GDFONTS_H=1 -DHAVE_GDFONTMB_H=1 -DHAVE_GDFONTG_H=1 -DHAVE_ICONV_H=1 -DHAVE_ERRNO_H=1 -DHAVE_SYS_RESOURCE_H=1 -DSIZEOF_OFF_T=4 -DOFFSET_STRING=\"%d\" -DHAVE_FOPEN64=1 -g -O2 -w -DBINDIR=\"/opt/bin\" -DSYSCONFDIR=\"/opt/etc/sarg\" -DHTMLDIR=\"/opt/share/www/sarg\" topuser.c
gcc: Internal error: Terminated (program cc1)
Please submit a full bug report.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make: *** [topuser.o] Error 1

monarchp
17-06-2008, 02:21
никто не вкурсе ..? ))

vectorm
17-06-2008, 09:39
никто не вкурсе ..? ))
Подскажу только по 2 вопросу:
юзать своп файл или перепаивать до 128 метров память.

Novik
17-06-2008, 10:02
3. хотел прикрутить статистику к сквиду... нашол Sarg - Squid Analysis Report Generator , но толком не компилится...
Убрать ключ -O2. Или собирать кросс-компилятором на большой машине.

greenfox
20-06-2008, 17:06
При запуске гоорит:
Starting proxy server: 2008/06/20 18:59:10| squid.conf line 40: acl QUERY urlpath_regex cgi-bin ?
2008/06/20 18:59:10| aclParseRegexList: Invalid regular expression '?': Invalid preceding regular expression


Строка 40:
hierarchy_stoplist cgi-bin ?


cache.log :
2008/06/20 18:59:29| WARNING: basicauthenticator #1 (FD 7) exited
2008/06/20 18:59:29| Too few basicauthenticator processes are running
FATAL: The basicauthenticator helpers are crashing too rapidly, need help!



Что ему, блин надо???
Помогите, плиз

Alexey
05-08-2008, 14:01
Может и мне кто поможет, хочу прикрутить к squid'у веб морду. например lightsquid. научите как настроить веб сервер, чтобы показывалась статистика. или если это будет непосильная нагрузка на коробочку, то может кто знает бесплатный анализатор squid логов под windows.

Nebulosa
07-08-2008, 12:18
А есть SquadGuard в репазиториях? Как это пожно посмотреть?
Или кто ставил, поделитесь соображениями, как работает, хватает ли мощности роутера.
Правил немного, около сотни доменов и различных путей, регулярок штук 15... Если есть более легковесные аналоги, тоже посоветуйте ссылкой.

Есть сквид+сквид гуард настроенный, хочу вот на роутер перетащить.

p.s. знаю что можно все рализовать в конфигах самого сквида, но вот только один ньюанс при ошибке 403 - сквид отдает html-страничку, а мне нужно чтобы он отдавал пустой gif-файл - смотрится это куда лучше.

Nebulosa
12-08-2008, 13:21
Поковырялся, размышляю вслух... :)

Установил сквид, никаких проблем, настроил, прокси работает. Начал заново осмысливать проблему вырезания рекламы, уточнил кое-какие моменты (сразу замечу что мне сквид нужен только для вырезки баннеров, все логи я отключил, статистика и даже кеш мне тоже не нужны):

- в сквиде, сборки для OpenWRT, кеш не отключается (предполагаю отсутсвует опция при компиляции) поэтому выставил кеш в 1KB.

- Если реализовывать блокирование баннеров средствами самого сквида, то получаем два неприятных момента - все списки блокировок будут грузиться в оперативную память, коей очень и очень мало, и второй момент - возможно выдача только html-странички, а не прозрачного gif-файла, вместо баннеров, который я хотел получить.

- Squidguardа нет в репазиториях, нужно самостоятельно его откомпилировать и установить, кроме самого squidguard также нужно откомпилировать BerkerlyDB. Я пока не смог разобраться, как это дело компилировать в OpenWRT SDK

Поскипев мозгами, решил особо не заморачиваться с компиляцией, и сделать альтернативный вариант - установить скрипт фильтрафии на Perl (хотя процессор perl кушает, мама не горюй!). Монструозный adzapper я сразу отверг, потому как даже на моем компе он вешал процессор, превращая браузинг в пытку :) Попробовал поискать альтернативы попроще, нашел BannerFilter (http://phroggy.com/bannerfilter/) - скрипт для perl в 7 кб без особых наворотов. Поставил Perl (размером 9,7МБ OMG!), потому как microperlа для скрипта было маловато.
Подключил в конфиге редиректор, указал количество потоков редиректа - 2, свалил в одну кучу правила фильтрации (кстати хочу отметить в плюс упрощенную систему правил, регулярные выражения особо не нужны), запустил - работает!

"Подытожим" (c) : все работает, особых тормозов не наблюдаю, однако есть моменты, которые тоже хотелось бы улучшить - а именно - уменьшить размер занимаемой оперативной памяти. Сам squid очень прожорлив - по показниям htop - 12% ~ 3,5 Мб серфинге может вырасти до 14-15% ~ 4-4,5Мб + 2 потока занимают по 7,5% каждый а это по 2 мб на поток + еще один процесс squid c указанием конфигурации - 2,8% - 810КВ. Тоесть идея с вырезанием рекламы обошлась мне в ~8Мб минимум оперативной памяти, что я считаю многовато...

Думаю, что можно попробовать еще два варианта - скомпилировать и установить squidguard либо попробовать поковыряться в mod_redirect для lighttp, вроде он такое позволяет. Посмотрим плюсы-минусы, если что вернусь к текущему варианту.

DafT
12-08-2008, 22:06
1. как дать доступ к проксе всей своей локальной подсетке (192.168.*) и конкретным ip'шникам из вне...?
2. регулярно вылетает.. - Jun 14 20:14:00 kernel: Out of Memory: Killed process 429 (squid). - как решается...?
3. хотел прикрутить статистику к сквиду... нашол Sarg - Squid Analysis Report Generator , но толком не компилится... может кто собирал уже бинарник и поделится..?

gcc -c -I. -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DHAVE_DIRENT_H=1 -DSTDC_HEADERS=1 -DHAVE_ICONV=1 -DICONV_CONST= -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DIRENT_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_NETDB_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_CTYPE_H=1 -DHAVE_GD_H=1 -DHAVE_GDFONTL_H=1 -DHAVE_GDFONTT_H=1 -DHAVE_GDFONTS_H=1 -DHAVE_GDFONTMB_H=1 -DHAVE_GDFONTG_H=1 -DHAVE_ICONV_H=1 -DHAVE_ERRNO_H=1 -DHAVE_SYS_RESOURCE_H=1 -DSIZEOF_OFF_T=4 -DOFFSET_STRING=\"%d\" -DHAVE_FOPEN64=1 -g -O2 -w -DBINDIR=\"/opt/bin\" -DSYSCONFDIR=\"/opt/etc/sarg\" -DHTMLDIR=\"/opt/share/www/sarg\" topuser.c
gcc: Internal error: Terminated (program cc1)
Please submit a full bug report.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make: *** [topuser.o] Error 1


первое разрули через iptables например
iptables -i vlan1 -s ххх.ххх.ххх.ххх -I INPUT -p tcp --dport 3128 -j ACCEPT разрешаешь внешнему ip вход
iptables -i vlan1 -s 192.168.0.0/16 -I INPUT -p tcp --dport 3128 -j ACCEPT
разрешаешь вход на подсеть ( если подсеть 192,168,1,ххх то маска будет не 16 а 24)
ну а дальше всех остальных с порта скидываешь iptables -i vlan1 -s 0.0.0.0/0 -I INPUT -p tcp --dport 3128 -j DROP

рад если помог :)

opyzhov
09-09-2008, 11:51
в сети 4 компа.. подключены к роутеру Asus, один из подключенных компов Linux Server (ubuntu)
На Asus стоит Squid все ходят в инет через него, поднят SNMP протокол и настроена маршрутизация.. больше на роутере никакие проги не стоят..(чтобы не грузить)
linux server занимается закачками, и сбором статистики по SNMP от роутера Asus. (MRTG)

Возможно ли запустить анализ статистики по сквиду на Linux Server..

Nebulosa
19-09-2008, 12:14
И опять к теме redirector'a. :)

Остановился вообщем на варианте Bash скрипта:
+ не нужно устанавливать Perl (+ экономия места например на флешке)
+ очень быстрая работа работа скрипта, браузер (firefox) не подвисает при открытии многих страниц, время отклика уменьшилось, видно невооруженным глазом.
+ расход оперативной памяти меньше - 5 процессов (минимум необходимый для работы браузера, меньше - прокси отказывает в соединении) занимает меньше памяти чем один процесс perl.
+ при изменении/добавлении списка баннеров не нужно перегружать конфигурацию Squid - правила добваляются на лету.

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

Установка:
в squid.conf добавить:
url_rewrite_program /opt/bannerfilter/redirector.sh
url_rewrite_children 5

Установить grep: ipkg install grep потому как в busybox grep не понимает опцию "-Ff"

создать файл redirector.sh в папке /opt/bannerfilter
#!/bin/sh

while :
do
read url user idt met
[ "`echo "$url" | /opt/bin/grep -Ff /opt/bannerfilter/exceptions`" = "" ] && [ "`echo "$url" | /opt/bin/grep -Ff /opt/bannerfilter/banners`" ] && url="http://192.168.1.1/null.gif";
echo "$url $user $idt $met"
done

chmod +x /opt/bannerfilter/redirector.sh
в файле /opt/bannerfilter/banners - список заблокированных URL
в файле /opt/bannerfilter/exceptions - список URL-исключений.

Перед запуском squid обязательно проверьте работу редиректора, а это сделать просто - нужно его запустить и кинуть парочку url, вроде такого:
$ cd /opt/bannerfilter/
$ ./redirector.sh
http://google-analytics.com
http://192.168.1.1/null.gif
http://ya.ru
http://ya.ru
Ctrl+C

to be continued... :)

Nebulosa
12-11-2008, 06:45
Очередное улучшение в коде редиректора -

Поскольку в репозитории наконец-то выложили grep 2.5.3, то воспользуемся опцией
-m, --max-count=NUM stop after NUM matches

Т.е. redirector.sh выглядит так:
#!/bin/sh

while :
do
read url user idt met
[ "`echo "$url" | /opt/bin/grep -m1 -Ff /opt/www/av/bannerfilter/exceptions`" = "" ] && [ "`echo "$url" | /opt/bin/grep -m1 -Ff /opt/www/av/bannerfilter/banners`" ] && url="http://192.168.1.1/null.gif";
echo "$url $user $idt $met"
done

Логика работы стала более продуманной - после первого же совпадения правила, остальные правила пропускаются и начинает обрабатываться следующий URL.

Результат оптимизации виден и невооруженным глазом :) :
export http_proxy=192.168.1.1:8080&& time wget -p --proxy=on -q http://wl500g.info

real 0m8.070s
user 0m0.008s
sys 0m0.048s

rm -r wl500g.info/

export http_proxy=192.168.1.1:8080&& time wget -p --proxy=on -q http://wl500g.info

real 0m6.736s
user 0m0.008s
sys 0m0.024s

Здесь, banners список - 683 правила, exceptions - 21 правило.

serji
27-11-2008, 18:28
следующий вопрос:
как правильно "чистить логи" от ненужных месяцев в сквиде и лайтсквиде

serji
28-11-2008, 15:27
Здесь, banners список - 683 правила, exceptions - 21 правило.

Простите где?

lagshmi
29-11-2008, 23:42
acl QUERY urlpath_regex cgi-bin ?
cache deny QUERY
при запуске ругатся на эти 2 строчи....

помогите пожалуйстотлючть авторизацию...

Less
30-11-2008, 00:21
acl QUERY urlpath_regex cgi-bin ?
cache deny QUERY
при запуске ругатся на эти 2 строчи....

помогите пожалуйстотлючть авторизацию...
1.
Замените на
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY


2.
Вставте эти строки
acl MyHOST src IP/255.255.255.255
http_access allow MyHOST
перед строками
http_access allow MY
или же Вашей первой строкой
http_access allow
где вы разрешаете первое правило которому необходима авторизация.

serji
01-12-2008, 10:04
после смены redirector.sh и установки grep 2.5.3
Вывалился SQUID со словами
Dec 1 11:10:40 squid[255]: Squid Parent: child process 304 started
Dec 1 11:10:42 squid[304]: The url_rewriter helpers are crashing too rapidly, need help!
Dec 1 11:10:42 squid[255]: Squid Parent: child process 304 exited due to signal 6
а сам redirector.sh
./redirector.sh: ./redirector.sh: 7: Syntax error: Unterminated quoted string

Nebulosa
03-12-2008, 07:56
Простите где?

Ну у меня лежит, насобирал вручную при серфинге по злачным местам :)
Я их не выкладываю, потому как у каждого список будет свой.

Прочитал в очередной раз маны про редиректоры Squid немного уточнил свой редиректор, лишние переменные убрал и прочее:


#!/bin/sh

while :
do
read url ip ident method
[ "`echo "$url" | /opt/bin/grep -m1 -Ff /opt/www/av/bannerfilter/exceptions`" = "" ] && ([ "`echo "$url" | /opt/bin/grep -m1 -Ff /opt/www/av/bannerfilter/banners`" ] && echo 'http://192.168.1.1/null.gif' || echo) || echo
done

Заодно выяснил что 5 процессов крайне мало (у меня затык был именно в этом месте..), также выяснил что мой браузер (Firefox) может держать 16 коннектов с сайтом одновременно, а сквид получается может обработать только 5. Поэтому сделал ход конём - увеличил количество процессов до 30. :)

url_rewrite_children 30
Теперь все летает и overload гораздо ниже.