SQUID для ленивых. Облегчаем себе жизнь | ||
Сети > Для новичка Добрый день, уважаемые Хабрапользователи, в связи со сложившейся тенденцией к изучению всем известного прокси сервера SQUID, я бы хотел предложить вариант некой типовой настройки небольшой связки, которая будет полезная для начинающих системных администраторов небольших контор, ну или просто для тех, кому лень разбираться. Данная статья ни в коем случае не претендует на глобальный мануал на все случаи жизни — как я уже и сказал это всего лишь обобщенный частный случай.
Добрый день, уважаемые Хабрапользователи, в связи со сложившейся тенденцией к изучению всем известного прокси сервера SQUID, я бы хотел предложить вариант некой типовой настройки небольшой связки, которая будет полезная для начинающих системных администраторов небольших контор, ну или просто для тех, кому лень разбираться. Данная статья ни в коем случае не претендует на глобальный мануал на все случаи жизни — как я уже и сказал это всего лишь обобщенный частный случай.
Ну, давайте обсудим с чего мы начинаем, у нас есть сервер в моем случае это свежеустановленная Ubuntu Server с выбранными параметрами LAMP и SSH (специально с целью написания статьи):
root@testgateway:~# uname -a Linux testgateway 2.6.32-33-generic-pae #70-Ubuntu SMP Thu Jul 7 22:51:12 UTC 2011 i686 GNU/Linux
root@testgateway:~# lsb_release -a Distributor ID:Ubuntu
Description:Ubuntu 10.04.3 LTS
Release:10.04
Codename:lucid
root@testgateway:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 5.5G 723M 4.6G 14% /
none 190M 172K 189M 1% /dev
none 194M 0 194M 0% /dev/shm
none 194M 44K 194M 1% /var/run
none 194M 0 194M 0% /var/lock
none 194M 0 194M 0% /lib/init/rw
/dev/sda7 7.3G 189M 6.7G 3% /var
/dev/sda1 92M 21M 66M 25% /boot
Вот с такими вот параметрами, заведомо я подготовил 2 сетевых интерфейса, не удивляйтесь что у обоих интерфейсы из локальных диапазонов, просто машинка установлена внутри xen.
root@testgateway:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:36:73:84:48
inet addr:192.168.0.237 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::216:36ff:fe73:8448/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1361 errors:0 dropped:0 overruns:0 frame:0
TX packets:720 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:111090 (111.0 KB) TX bytes:107285 (107.2 KB)
Interrupt:32 Base address:0xa000
eth1 Link encap:Ethernet HWaddr 00:16:36:64:1c:bd
inet addr:192.168.122.51 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::216:36ff:fe64:1cbd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:68 errors:0 dropped:0 overruns:0 frame:0
TX packets:82 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8170 (8.1 KB) TX bytes:10923 (10.9 KB)
Interrupt:36 Base address:0xe100
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Здесь интернет будет идти от eth1, локальная сеть, т.е. я буду находится со стороны eth0.
Естественно рекомендуется, провести:
root@testgateway:~# apt-get update
root@testgateway:~# apt-get upgrade
Следующим шагом мы должны поставить дополнительные пакеты для нашего прокси сервера, как наверное Вы догадались мы будем использовать связку SQUID+SAMS, но настраивать будем типичный случай, авторизация по IP, и для облегчения себе жизни заворот всех пользователей на порт прокси сервера. Эту связку потом можно будет с легкостью настроить на авторизацию по логин/паролю, и даже связать с AD.
Необходимыми пакетами для нашего случая мы установим так:
root@testgateway:~# apt-get install libpcre3 libpcre3-dev libmysqlclient15-dev php5-ldap php-fpdf squid squidguard gcc make php5-gd Если вдруг будет мало доустановим еще. Следующим шагом будет скачивание и установка самого SAMS, скачиваем стабильную версию 1.0.5, есть еще SAMS 2.0, но как-то попробовал, еще слишком много багов было.
root@testgateway:~# wget http://sams.perm.ru/download/sams-1.0.5.tar.bz2
Далее, распаковываем и устанавливаем его: root@testgateway:~# bunzip2 sams-1.0.5.tar.bz2 && tar -xpf sams-1.0.5.tar && rm sams-1.0.5.tar
root@testgateway:~# cd sams-1.0.5/
root@testgateway:~# ./configure – -with-httpd-locations=/var/www
root@testgateway:~# make
root@testgateway:~# make install
После этого в принципе не должно получится ошибок, и можно смело продолжать, если есть какие-то ошибки, значит следует вчитаться, и доустановить то чего не хватает.
Далее копируем скрипт запуска sams, к нам на сервер
root@testgateway:~/sams-1.0.5# cp ./etc/sams.debian /etc/init.d/samsd root@testgateway:~/sams-1.0.5# update-rc.d samsd defaults
Adding system startup for /etc/init.d/samsd ...
/etc/rc0.d/K20samsd -> ../init.d/samsd
/etc/rc1.d/K20samsd -> ../init.d/samsd
/etc/rc6.d/K20samsd -> ../init.d/samsd
/etc/rc2.d/S20samsd -> ../init.d/samsd
/etc/rc3.d/S20samsd -> ../init.d/samsd
/etc/rc4.d/S20samsd -> ../init.d/samsd
/etc/rc5.d/S20samsd -> ../init.d/samsd
Далее чуть-чуть настроим MySQL. Нужно загрузить таблицы, и организовать доступ к ним: root@testgateway:~/sams-1.0.5# mysql -u root -p Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 39
Server version: 5.1.41-3ubuntu12.10 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY "maxim";
Query OK, 0 rows affected (0.02 sec)
mysql> GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY "maxim";
Query OK, 0 rows affected (0.00 sec)
mysql> exit
root@testgateway:~/sams-1.0.5# cd ./mysql
root@testgateway:~/sams-1.0.5/mysql# mysql -u root -p < sams_db.sql
root@testgateway:~/sams-1.0.5/mysql# mysql -u root -p < squid_db.sql
Далее чуть-чуть правим файл, /etc/sams.conf: MYSQLPASSWORD=maxim
Надеюсь все догадались, что это пароль который мы вставляли в команды Mysql.
Наконец, дошла очередь и до настройки самого SQUIDа, но не думайте, что это будет очень сложно, приготовьтесь, что всю грязную работу в будущем за вас будет делать SAMS.
Открываем файл настройки, и изменим там несколько строк:
# Squid normally listens to port 3128 http_port 192.168.0.237:3128 transparent
maximum_object_size_in_memory 50 MB
cache_dir ufs /var/spool/squid 3000 32 512
Параметры кэша подбираются индивидуально под каждый случай. maximum_object_size 50 MB url_rewrite_program /usr/local/bin/samsredir
Теперь настраиваем обработку лога access.log Открываем crontab, лучше это делать с помощью crontab -e, и добавляем туда следующую строчку:
*/1 * * * * /usr/local/bin/sams Далее создадим директории для кэша сквида: root@testgateway:~/sams-1.0.5/mysql# squid -z 2011/10/13 12:40:12| Creating Swap Directories и стартуем squid. root@testgateway:~/sams-1.0.5/mysql# /etc/init.d/squid start Проверяем: root@testgateway:~/sams-1.0.5/mysql# ps aux | grep proxy proxy 19158 0.2 1.2 7696 4876 ? Ss 12:40 0:00 /usr/sbin/squid -N -D
proxy 19159 0.0 0.4 5080 1636 ? Ss 12:40 0:00 (samsredir)
proxy 19160 0.0 0.4 5080 1640 ? Ss 12:40 0:00 (samsredir)
proxy 19161 0.0 0.4 5080 1636 ? Ss 12:40 0:00 (samsredir)
proxy 19162 0.0 0.4 5080 1636 ? Ss 12:40 0:00 (samsredir)
proxy 19163 0.0 0.4 5080 1640 ? Ss 12:40 0:00 (samsredir)
proxy 19164 0.0 0.0 1616 316 ? Ss 12:40 0:00 (unlinkd)
Если картина идентична, то значит все запустилось хорошо. Далее идем настраивать наш SAMS, это уже делается через веб-интерфейс, вбиваем в браузере адрес нашего прокси, у нас он был 192.168.0.237/sams, и видим страницу приглашения ввод и пользователя и пароля.
Но прежде чем мы это сделаем мы должны исправить небольшой баг этой системы, а именно в связи с выходом PHP5.3, немного некорректно отображаются страницы настройки, вернее совсем не отображаются. Но это операция не сложная, просто правим два файла:
/usr/local/share/sams/src/configtray.php /usr/local/share/sams/src/webconfigtray.php
переименовываем GetHostName в GetHostNameSams и все заработало. Дальше я буду на примере маленьких скриншотов показывать, что и где нужно править, чтобы все работало, как нам надо. Приглашение, по умолчанию логин: Admin, пароль: qwerty
Следующий шаг, настройка веб-интерфейса, выставляем следующие параметры: Окно администрирование SAMS не влезло в ширину экрана, поэтому опишу текстом, авторизацию устанавливаем IP, файл перенаправления запроса 192.168.0.237/sams/icon/classic/blank.gif, путь к каталогу, где лежат файлы запрета запроса 192.168.0.237/sams/messages, редиректор встроенный SAMS, и последнее сохранять данные о трафике в базе за последние 12 месяцев. Далее переходим к настройке шаблонов, удаляем все, чтобы нам ничего не мешало и создаем новый. Далее добавляем пользователя и связываем его c нашим шаблоном Далее запускаем демон samsd: /etc/init.d/samsd start. И реконфигурируем SQUID. После этого, если пользователю прописать прокси в браузере все начинает отлично работать, но так как нам это не удобно будет делать на всех пользователях, так что применим классическую админскую хитрость, заворот HTTP трафика на порт прокси сервера. iptables -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128 Вот так вот у нас получился прокси, с удобным веб-интерфейсом, возможно кто-то меня обвинит в плагиате, мол уже 100 раз это все было, но сразу хочется отметить, что как я и сказал в самом начале статьи, этот вариант настройки прокси для ленивых, т.к. практически все вкусности SQUID, такие как ограничения по трафику, создание списков доступа, разрешенных доменов, запрет на скачивание, можно получить из веб-настройки. А также мы легко получаем систему просмотра статистики, которой может воспользоваться любой пользователь Вашей организации, зайдя на страничку под своим логином. Конечно остается сложность с учетом трафика торрентов, почты и другого не 80 порта, и на это тоже есть свое решение, которое очень хорошо впишется в общую картину. Если буду формироваться вопросы, милости прошу, обсудим, все остальные тонкости настройки Источник: http://habrahabr.ru/blogs/sysadm/130335/ |
||
Комментарии | ||