четверг, 20 ноября 2008 г.

[Техно] ...этому дала, этому дала, а тому не дала :)

Или как на Ubuntu-сервере раздать интернет в локальную сеть.

Вот вчера на работе целый день провозился со "своей африканочкой" конфигурируя прокси-сервер 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 комментарий:

Byssos комментирует...

Спасибо за информацию! Как-нибудь нужно тоже выделить время, дабы поэкспериментировать с этим чудом. =)