Вот вчера на работе целый день провозился со "своей африканочкой" конфигурируя прокси-сервер SQUID3, чтобы раздавать интернет в локальную сеть.
Есть много способов открыть интернет, например можно просто перебросить порт 80,8080,443 с помощью iptables, но тогда он будет доступен всем и сразу... Мне же нужен дифференцированный доступ, плюс кеширование, чтобы сэкономить трафик факультета. Именно поэтому я выбрал SQUID.
И так, существует два способа установки SQUID (как и любой другой программы под Linux) это собрать из исходников и воспользоваться готовым пакетом. Так как шлюз нужен мне срочно, а опыта сборки из исходникв нет я выбрал второй.
Пишем в консоле:
$ sudo apt-get install squid3
Далее система скачает и установит SQUID, после чего он запуститься. После этого нам надо его остановить и пересоздать кеш, поэтому говорим:
$ sudo /etc/init.d/squid3 stop
$ sudo squid -z
Далее правим конфигурационный файл /etc/squid3/squid.conf:
Правим списки доступа ACL:
acl localnet src 192.168.0.0/24 # локальная сеть диапазон 192.168.0.1-192.168.0.254
acl getway src 192.168.0.1 # шлюзовой сервер
acl arhive urlpath_regex -i \.rar$ \.zip$ \.7z$ # архивы
acl audio urlpath_regex -i \.mp3$ \.asf$ \.wma$ # аудиофайлы
acl video urlpath_regex -i \.avi$ \.mov$ \.vob$ \.wmv$ # видеофайлы
acl execute urlpath_regex -i \.exe$ # exe-файлы
acl shell urlpath_regex -i \.cmd$ \.bat$ # файлы командной оболочки
Правим правила доступа (внимательно соблюдайте последовательность строк):
http_access allow localhost
# режем для локальной сети
http_access deny localnet audio
http_access deny localnet video
http_access deny localnet arhive
http_access deny localnet execute
http_access deny localnet shell
http_access allow localnet # разрешаем инет локалке с предыдущих правил
http_access deny all # запрещаем все остальному миру
В данном случае локальной сети разрешен доступ в инет, но запрещены загрузки медиа-контента, архивов и выполнимых файлов Windows. Тогда как серверу все можно :)
Создаем пул с помощью которого регулируем скорость клиенту:
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 5000/15000
delay_access 1 allow localnet
delay_access 1 deny all
Здесь мы создали пул второго класса, т.е. всей сети мы даем весь канал (-1/-1 неограничивать), а клиент получает первые 15кб на максимальной скорости, а последующие данные на скорости в 5кб/секунда.
Оптимизируем кеш:
refresh_pattern -i \.gif$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.png$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.jpg$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.jpeg$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.pdf$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.zip$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.tar$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.gz$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.tgz$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.exe$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.prz$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.ppt$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.inf$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.swf$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.mid$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.wav$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.mp3$ 43200 100% 43200 override-lastmod override-expire
Ну вот кажется и все на сегодня... Теперь запускаем SQUID и настраиваем браузеры клиентов на наш прокси (ваш_ip_сервера:3128)
$ sudo /etc/init.d/squid3 start
Конечно еще хотелось бы сделать прокси "прозрачным", резать баннеры и запрещать некоторые "горячие" и неочень сайты, логировать трафик по пользователям... Это все конечно будет, но потом...
В настройке мне очень помогла статья на OpenNET: http://www.opennet.ru/base/net/squid_inst.txt.html
1 комментарий:
Спасибо за информацию! Как-нибудь нужно тоже выделить время, дабы поэкспериментировать с этим чудом. =)
Отправить комментарий