Документация по ОС FreeBSD Пятница, 10.05.2024, 21:59
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Squid

Установка и настройка прокси сервера OOPS
Прокси сервера бывают разные, красивые и безобразные ; ))) Цитата меня самого. Стандартом де-факто в Интернете стал SQUID, но имеются на просторах бывшей великой и могучей вещи не хуже. А может в чем-то даже лучше.
В свое время, когда стал вопрос использования прокси-сервера для доступа в Интернет мне пришлось перелистать много литературы по настройке сквида. Не имею к нему особых претензий, но практически любой начинающий скажет – сложный. И будет в чем-то прав. К моему счастью попалась мне на глаза заметка про OOPS в разделе новостей на www.opennet.ru . Это же в свою очередь повлекло за собой поиск по древу портов – он там присутствовал.
И так это было лирическое вступление, теперь приступаем.
Первое, что нам необходимо, это решить как мы будем его ставить – из портов, пакаджей или исходников. Последняя версия OOPS-a доступна www.oops-cache.org.
В принципе подойдет любой вариант, для базовой установки. Еще нам потребуется апач, точнее одна его утилита, для обеспечения аутентификации пользователей.

freebsd# cd /usr/ports/www/oops
freebsd# make && make install && make clean && rehash

- установка из портов

freebsd# pkg_add –v oops-1.5.22.20021204.tgz

- устанавливаем из пакаджа

freebsd# tar xvfz oops-1.5.22.20021204.tar.gz
freebsd# ./configure
freebsd# make install && make clean && rehash

По умолчанию он будет установлен в каталог /usr/local/oops. Что нам не обходимо так это его конфигурационный файл. Находится он вместе с остальными в /usr/local/etc/oops
Следующее наше действие:

freebsd# cp /usr/local/etc/oops/oops.conf.sample /usr/local/etc/oops/oops.conf

Этим мы создали основной наш конфигурационный файл и сохранили, так сказать, резервную копию старого файла.
Теперь приступим непосредственно к конфигурированию. Открываем созданный нами oops.conf. Первое что мы увидим – это достаточно простой конфиг с кучей пояснений, понятных на интуитивном уровне. И первое наше действие – указатьь ДНС сервера, которые будет использовать наш проксисервер, здесь ничего сложного нет – синтаксис как в resolv.conf

nameserver 193.193.193.193
nameserver 193.193.193.194

Идем дальше. Необходимо указать прослушивании каких портов будет осуществлять прокси-сервер

http_port 3128
icp_port 3130

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

userid oops

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

logfile /usr/local/oops/logs/oops.log { 3 1m } unbuffered
accesslog /usr/local/oops/logs/access.log
pidfile /var/run/oops.pid
statistics /var/run/oops_statfile

Так же необходимо указать, сколько оперативной памяти будет подминать под себя наша прокся

mem_max 32m
lo_mark 16m

Для поддержки HTTP/1.1 и проверки на «свежесть» за кешированых объектов

force_http11
always_check_freshness

Продолжаем закачивать, при обрыве пользователем загрузки страницы/файла, если закачка достигла энного процента

force_completion 75

Максимальный размер кешируемого объекта

maxresident 1m

Следующим идет список ACL, мы вставим необходимые нам

acl BADNETWORKS src_ip 192.168.20/24
acl LOCAL_NETWORK src_ip 192.168.10.0/24

Тут понятно – первая означает не хорошую сетку, которая не должна ходить в инет, а вторая наоборот, ну нашенскую, которую пускаем ; ))). Жесткой привязки к имени нет и можно их обзывать как угодно.
Поддерживаемы е типы
Можем указать кодировки для пользователей, привязать определенные домены, порты и многое другое:

acl RUS dstdom ru su
acl UKR dstdom ua
acl BADPORTS port [1:19],[22:79],110,138,139,513,[6000:6010
acl BADDOMAIN dstdom baddomain1.com baddomain2.com
acl MANAGER src_ip 192.168.10.2
acl SKIF src_ip 192.168.10.1

В принципе достаточнооставить все как есть и лишь добавить свои, необходимые ACL. В рассмотренном выше примере, нам потребуются две SKIF, MANAGER, которым мы сделаем широкий канал доступа в Интернет.

Следующим параметром который нам придется изменить – список локальных сетей

local-networks 192.168.10.0/24

Ну вот, а теперь настало время икс – мы решаем, кто куда пойдет и как при этом будет себя чувствовать. Сначала рассмотрим основную массу пользователей. Предположим ситуация такая: у вас есть двух мегабитный канал в вожделенную паутину (прям как у меня), ну можно поменьше, пусть 128k. Первое что нам нужно решить – режем мы людям скорость или нет. Ответ почти всегда –ДА, и бо мы тоже (админы) люди и хотим быстро по оному лазить Условимся, что на конкретного машину выделяем 4k (мона и меньше, но я сделал стока, мне канал позволяет). Теперь как проверяем пользователя – логин: пароль берем из файла, самый простой случай. Обеспечиваем доступ только в определенное время или всегда?

group paco {
networks 192.168.10/24 127/8;
networks_acl LOCAL_NETWORKS! BAD_NETWORKS;
badports [0:79],110,138,139,513,[6000:6010] ;
miss allow;
#############
auth_mods passwd_file;
per_ip_bw 4k;
bandwidth 4k;
# CONNECT;
##############

#denytime Sat,Sun 0642:1000
#denytime Mon,Thu:Fri,Sun 0900:2100
# icp acl ...
icp {
allow dstdomain * ;
}
#
# http acl
http {
allow dstdomain *;
}

}
Если мы решили пускать народ в определенное время – пожалуйста откоментировали изменили ; ))). Захотели ограничить доступ к определенным доменам - указали. Просто, правда? ; )))
Но у нас же есть два пользователя которые не хотят иметь никаких ограничений, что ж, поможем и им ; ))) Создадим такую же группу, но поместим ее впереди вот этой, основной – принцип как у ipfw – читаем правила в порядке возрастания, то что идет раньше игнорирует следующее.

group adminuser {
networks 192.168.10.1/32 192.168.10.2/32;
networks_acl MANAGER SKIF;
badports [1:19],[22:79],110,138,139,513,[6000:6010] ;
miss allow;
auth_mods passwd_file;
icp {
allow dstdomain *;
}
http {
allow dstdomain *;
}
}
И так, что значит это самое 192.168.10.1/32 – да ничего, просто это маска вида 255.255.255.255, тобишь указываем конкретные хосты, Можно, в принципе использовать одни ACL-ки, но так нагляднее, плюс ACL проверяются медленнее и позже непосредственно указанных сетей.
В обоих случаях присутствует строчка

auth_mods passwd_file;

Что она значит – да ничего особого… ; ))) Просто мы указываем, что авторизацию будем проходить при помощи файла с паролями.
Двигаемся дальше. Нам необходимо указать размер нашего Кеша и где он будет располагаться, нет ничего проще:

storage {
path /usr/local/oops/storages/oops_storage ;
size 2000m ;
}

Ага, а вот этот самый модуль и указывает, где расположен файлик с паролями, тип проверки аутентификации, и что вывешивать если мы ошиблись с паролем ; ))) в окошке браузера

module passwd_file {
realm oops
scheme Basic
file /usr/local/etc/oops/passwd
template /usr/local/etc/oops/auth_template.html
}

Все, в принципе мы закончили конфигурирование нашего прокси-сервера. Можно готовить пиво ; ))).
Теперь необходимо создать сам файлик с паролями где ему положено быть –тоже нет ничего сложного, правда для этого потребуется немного апача ; ))) точнее одна его встроенная утилита – htpasswd:

freebsd# htpasswd –c /usr/local/etc/oops/passwd pupkin

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

freebsd# htpasswd /usr/local/etc/oops/passwd nepupkin

Ну вот мы создали и это, но еще не все! Надо создать наше хранилище Кеша. Создается оно при первом запуске с ключом –z

freebsd# oops –z

Иногда приходиться писать полностью:

freebsd# /usr/local/sbin/oops –z

Все, теперь у нас создан и отформатирован раздел Кеша и запущен OOPS – проверяем, а работает ли он, убедившись в том, что ни фига не работает отставляем пиво и читаем дальше ; ))).

Теперь нужно сделать следующее – повернуть весь трафик на нашу проксю, как? Опять таки – просто ; ))) Берем ipfw и пишем следующее:

01150 fwd 127.0.0.1,3128 tcp from 192.168.10.0/24 to any 80,3128,8080,8101,443

Все, теперь запросы поступающие из нашей сети по портам 80,3128,8080,8101,443 пойдут на прокси, вот тут всем и вспомниться, что админ не последний человек в конторе ; ))).
Так, а теперяче надо же сделать так, что бы при загрузке фри, он сам стартовал. Тоже все достаточно просто – в папке /usr/local/etc/rc.d есть файлик, точнее скрипт под именем oops.sh.sample переименовываем его, али копируем под новым именем

freebsd# cp /usr/local/etc/rc.d/oops.sh.sample /usr/local/etc/rc.d/oops.sh

Все, сделали, достали пиво, откупорили, перед этим проверив, что настройки брэндмауера (фаервола и пр. ; ))) ) позволяют уходить пакетам с нашего тазика ; ))) И пьем его смело.

Если вам захотелось посмотреть, а куда ж наш злобный народ лазит в рабочее время и что он там творит – ну снова пивка захотелось, надо же народ раскрутить? – используем чудесный анализатор логов от сквида – SARG. Все, что от нас потребуется – это его чуток подправить и указать путь к файлику access.log OOPS-а. Все и можем наслаждаться радостью бытия ; ))) Пиво есть, народ лазит, за нас статистику считают, мы можем пойти к начальству и предъявить на любое тело дело – когда, где, сколько и с кем ; )))
 
Автор: Skif
Категория: Squid | Добавил: oleg (10.11.2007)
Просмотров: 2272 | Рейтинг: 5.0/1 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0
links

Copyright MyCorp © 2024