Экономим каждый байт!

О том как хорошо сэкономить на трафике используя популярный кеширующий прокси Squid. Примеры настроек.

[Станислав Лапшанский, slapsh@kos-obl.kmtn.ru]

В последнее время во многих городах (и особенно в Москве) стали широко распространяться высокоскоростные подключения основанные на Ethernet (домовые сети), кабельных модемах (сети кабельного телевидения), а так же на ASDL (технология высокоскоростного ассиметричного доступа), которые, однако, обладают серьезным недостатком - пользователь такого соединения обычно сильно ограничен по объему так называемого "входящего" трафика, т.е. по объему скачиваемой информации. Не секрет, что большинство пользователей имеет определенные предпочтения при просмотре сайтов - одни и те же сайты посещаются изо дня в день в поисках свежей информации опубликованной на их страницах (например http://www.softerra.ru/). При этом раз за разом закачивается большое количество статичной информации - разного рода плашки, графические заголовки и т.п. Многие немедленно мне возразят - а как же встроенный кеш браузера? Да пожалуй никак, отвечу я - к сожалению способы кеширования у браузеров настолько далеки от совершенства, что не выдерживают никакой критики. А если у вас дома или в офисе к Интернету подключен не один компьютер, а несколько?

Надеюсь теперь многие поняли о чем пойдет речь в этой статье - о решении проблемы кеширования входящего трафика кардинальным образом, а именно при помощи домашнего прокси-сервера. Итак если вы хотите снизить объем входящего трафика и/или у вас дома или в офисе к Интернету подключено несколько пользователей решение с использованием прокси-сервера для вас. Да, я чуть не забыл - использование прокси-сервера на медленном выделенном канале (скажем 64кбит/сек) значительно ускорит загрузку страниц ваших любимых сайтов.

Для устройства прокси-сервера будем использовать бесплатное программное обеспечение - прокси-сервер Squid (см. http://www.squid-cache.org/) на базе FreeBSD или Linux. Вообще-то Squid существует и для Windows NT, однако ценность такого решения на мой взгляд является сомнительной. Перед установкой Squid следует скачать последнюю стабильную версию в виде исходных кодов, или бинарного пакета с сервера производителя дистрибутива вашей операционной системы. Для компиляции исходных кодов применяется стандартная последовательность:
./configure
make
make install (требуются права root)
Для установки бинарного пакета следует применять способы характерные для вашей операционной системы, например для FreeBSD следует подать такую команду (от пользователя root):
pkg_add squid-2.4_x.tgz

После установки следует приступить к конфигурированию. Местонахождение конфигурационных файлов сильно отличается в зависимости от дистрибутива (/etc, /usr/local/etc/squid, /usr/local/squid/etc). В общем случае рекомендую поискать файл squid.conf следующей командой (желательно от root): find / -name "squid.conf" -print Загрузите squid.conf в подходящий редактор. Почти 3000 строк. Возьмите себя в руки, все не так страшно - реальный конфигурационный файл будет куда меньше. Итак пример простого конфигурационного файла для squid (подразумевается что у нас локальная сеть класса C 192.16.0.0/255.255.0.0), а машина c прокси-сервером имеет адрес 192.16.0.1 с шлюзом в Интернете (см. рисунок):

Рисунок

# IP-адрес и порт на котором будет доступен
# прокси-сервер для клиентов
http_port 192.16.0.1:3128

# Отключим "общение" с соседними прокси-серверами
icp_port 0
htcp_port 0
# Отключим кеширование динамически загружаемых страниц
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

# Укажем местонахождение и размер кеша (200Мб)
cache_dir ufs /var/squid 200 32 384

# Местонахождение логов запросов к прокси-серверу
cache_access_log /usr/local/squid/logs/access.log

# Местонахождение логов кеша
cache_log /usr/local/squid/logs/cache.log

# Отключим бесполезный лог менеджера кеша
cache_store_log none

# Пароль для анонимного ftp-соединения
ftp_user ano@nim.ru

# Откроем доступ к прокси-серверу с клиентов
# из нашей подсети (192.16.0.0/255.255.0.0)
acl all src 192.16.0.0/16
http_access allow all

Следует отметить, что squid по умолчанию будет запущен с правами пользователя nobody из группы nogroup (это один из самых бесправных пользователей в системе), следовательно необходимо позаботиться о соответствующих правах доступа к каталогам:
chmod nobody:nogroup /usr/local/squid/logs
mkdir /var/squid
chmod nobody:nogroup /var/squid
Теперь все готово для первого запуска:
/usr/local/squid/bin/squid -z
Эта команда создаст необходимое количество подкаталогов в которых будут храниться данные кеша. Все готово, теперь можно запускать прокси-сервер в обычном режиме:
/usr/local/squid/bin/RunCache >/dev/null 2>&1 &
Однако разумно запускать squid сразу при старте системы, например в FreeBSD для этого следует в каталоге /usr/local/etc/rc.d создать файл следующего содержания:

#!/bin/sh
case "$1" in

; старт прокси-сервера
start)
rm /usr/local/squid/logs/squid.pid >/dev/null 2>&1
(cd /tmp; /usr/local/squid/bin/RunCache >/dev/null 2>&1 &)
echo -n ' squid'

; остановка прокси-сервера
stop)
kill `cat /usr/local/squid/logs/squid.pid`
esac
exit 0

Итак прокси-сервер работает. Теперь, для работы с ним, необходимо правильно настроить наш браузер: например для Internet Explorer v6.0 это делается следующим образом: меню Tools ? Internet Options: далее вкладка Connections, кнопка LAN Settings: в открывшемся диалоговом окне требуется установить флажок Use proxy server for your LAN и записать адрес и порт прокси-сервера в соответствующие поля (в нашем случае это 192.16.0.1 и 3128). Несколько нажатий на кнопку ОК и ваш браузер готов для работы с прокси-сервером!

"Softerra"

[ опубликовано 14/01/2002 ]

Станислав Лапшанский, slapsh@kos-obl.kmtn.ru - Экономим каждый байт!   Версия для печати