Настраиваем корпоративный PROXY сервер на базе CentOS5+Squid + SAMS + NCSA Auth
В каждой организации, где количество ПК больше одного, рано или поздно встает вопрос по лимитированию и учету Internet трафика. Возможно для кого-то это не актуально, и для кого-то NAT самое оно, но исходя из реалий, и прикидывая среднюю стоимость безлимитной полосы в 2-5mbps, хочется и использовать данный канал более рационально, да и ограничить пользователя в посещении ресурсов, которые к работе не относятся в принципе никак.
Главный вопрос КАК? не останется без ответа, т.к. поисковик выдает множество как программных, так и аппаратных решений! Смотреть в сторону коммерческих продуктов, или отдать предпочтение Open Source ПО — дело ваше, да и зависит все от бюджета и корпоративной лицензионной политики. Но на практике большинство руководителей предприятий малого и среднего бизнеса склоняются от коммерческого продукта к бесплатному, как в целях экономии средств, так и в интересах законности.
Сегодня, я хочу поговорить о настройке кеширующего proxy сервера на основе свободного, бесплатного ПО. Но для начала необходимо определить для себя круг задач, которые будет выполнять сервер. В моем случае оно сводится к минимум, а именно к веб интерфейсу статистики и управления, а также возможности завернуть весь интернет трафик локальной сети на порт proxy. Вводить или не вводить какие-либо ограничения — дело ваше, но по моему это бессмысленно, так как пользователь дырочку найдет всегда! Согласитесь, ведь пусть лучше пользователь проведет 10-20 минут в день на Одноклассниках и Вконтактах, чем убьет час рабочего времени на поиск нормального, и не забаненного админом, анонимайзера!
Самое время поговорить о программном обеспечении для вышеописанных задач! Вариантов масса, и выбрать есть из чего, есть простенькие решения на базе FreeBSD + Squid + LightSquid, есть и Install CD решения. Но сегодня я хочу поговорить о решении на базе CentOS + Squid + SAMS + NCSA Auth. Почему выбор пал именно на подобную связку? Наверное из-за моей любви к CentOS, да и Squid стандарт прокси практически де-факто, SAMS же обладает всем необходимым функционалом по управлению прокси сервером, плюс вменяемый русскоязычный интерфейс, что для кого-то может быть полезным. Также у SAMS есть возможность генерации PDF отчетов по использованному трафику по пользователям. С NCSA авторизацией думаю вас знакомить смысла нет, итак все понятно:)
Что же, от слов к делу, будем настраивать. Вопрос на чем? Недавно мною была написана статья по настройке собственного сервера виртуализации на базе OpenVZ, и собственно сам сервер виртуализации был введен в коммерческую эксплуатацию компании, и выбор по развертыванию прокси выпал именно на него, т.к. выделять под данные задачи физическую машину по меньшей мере неоправданная роскошь. Поэтому я и создал на нем VE контейнер со следующими характеристиками:
- Шаблон ОС — centos-5-x86
- Размер диска — 5000мб
- RAM — 512 мб
- CPU — 1000 единиц, Intel(R) Xeon(R) CPU E5405, 1 core
- CPU лимит — 20%
Если вы считаете что данная конфигурация слаба, что же, дело ваше, выбирайте аппаратное или программное решение производительнее, но под 100-150 пользователей данный VPS сервер подойдет вполне. Далее на сервер был навешен белый реальный ip адрес и была проверена его доступность как из интернета, так и из локальной сети.
После «установки» сервера приступаем к его настройке под наши задачи и нужды. Для начала обновляем систему:
yum makecache && yum -y update
После приступаем к установке программного обеспечения:
yum install php php-mysql php-gd pcre-devel squid mysql-server mysql-devel gd-devel gcc
После установки добавляем необходимое в автозагрузку:
chkconfig mysqld on
chkconfig httpd on
chkconfig squid on
Далее создаем темповую директорию для сборки SAMS:
mkdir -p /usr/src/sams
cd /usr/src/sams
Качаем STABLE версию SAMS (есть там и RPM пакеты для CentOS и Fedora, но после тестирования выяснилилось что они кривые) отсюда и устанавливаем:
wget http://nixdev.net/release/sams/sams-1.0.5.tar.bz2
tar xf sams-1.0.5.tar.bz2
cd sams-1.0.5
./configure && make && make install
chkconfig sams on
cd / && rm -fr /usr/src/sams
Далее настраиваем Apache, добавляем в /etc/httpd/conf.d/sams.conf
Alias /sams /usr/share/sams<Directory /usr/share/sams/>Order Allow,DenyAllow from allDeny from none</Directory>
Если вы хотите настроить SAMS на виртуальном хосте, то советую вам почитать статью по тонкой настройке Apache2, в которой как раз и описан данный вопрос.
После того, как был добавлен sams.conf необходимо перезапустить Apache:
service httpd restart
Следом редактируем /etc/sams.conf, в котором меняем всего две записи:
MYSQLPASSWORD=ВАШ ПАРОЛЬ (Для пользователя SAMS)
MYSQLVERSION=5.0 (Мы используем 5 версию MySQL сервера, при значении 4.0 возможны проблемы)
Далее на очереди MySQL, запускаем сервер и делаем все то что предложит скрипт первого запуска, то есть задаем пароль root и после-инсталяционную настройку сервера:
service mysqld start
Создаем MySQL пользователя sams и даем ему права на необходимые таблицы:
mysql -u root -p
GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY «ВАШ ПАРОЛЬ»;
GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY «ВАШ ПАРОЛЬ»;
flush privileges;
quit
Вливаем дампы SAMS в базу:
mysql -u root -p < /usr/local/share/sams/data/sams_db.sql
mysql -u root -p < /usr/local/share/sams/data/squid_db.sql
Настала очередь Squid, собираем squid swap, и уже после запускаем прокси сервер.
squid -z
2011/01/22 22:06:48| Creating Swap Directories
service squid start
service sams start
-A INPUT -p tcp -m tcp —dport 80 -j ACCEPT-A INPUT -p tcp -m tcp —dport 3128 -j ACCEPTservice iptables restart
1. Настройки Web интерфейса ==> нажимаем на Гаечный ключ
Настраиваем в соответствии со скрином, сохраняем изменения:
2. SAMS ==> Администрирование SAMS ==> Настройка SAMS
Настраиваем в соответствии со скрином, сохраняем изменения:
3. SAMS ==> Шаблоны пользователей ==> Default
Настраиваем в соответствии со скрином, сохраняем изменения:
4. Пользователи ==> Добавить пользователя
Настраиваем в соответствии со скрином, сохраняем изменения:
5. SAMS ==> SQUID ==> Реконфигурировать SQUID ==> Реконфигурировать
Прокси сервер настроен и готов обслуживать пользователей. Можно посмотреть статистику работы proxy сервера:
И в качестве бонуса, URL автоматической настройки proxy(Строка автоматической инициализации) на клиентских машинах, удобно подпихивать его через ГП на Windows AD:
function FindProxyForURL(url, host)
{
return «PROXY ip.address:3128″
};
Popularity: 43% [?]
Похожие записи:
- Фронтенд и бекенд для www. Apache + Nginx
- Переезд на новую площадку
- Тюнинг nginx
- Эксперимент с Apache2 и mod_pagespeed
- Nginx + PHP-FPM или полный отказ от Apache2
















