Новости сайта
Главная страница » 2006 » Июль » 4 » Ускорение интернета через прокси сервер

Ускорение интернета через прокси сервер
Сегодня будем ускорять интернет.
Никаких чудо программ увеличивающих вашу скорость на 300% не будет.

Экономия траффика составляет около 30%. Мои тесты показали что в среднем интернет ускорился в 1.5 - 2 раза.
Кстате ставя прокси сервер мы снизим нагрузку на ННМ, что увеличит скорость загрузки сайта.
Вся схема работает на давно опробованных (и бесплатных) программах используемых в IT индустрии.
В основе лежит прокси сервер (или веб кэш) Squid , а дополняет его ДНС сервер в режиме кэширования (можно и без ДНС обойтись - в этот раз так и сделаем).
Squid (проксик наш) сделан сообществом Open Source разработчиков (изначально для *никc систем) и соответствено полностью бесплатен.
Скорее всего вы уже сталкивались с тем что на работе не можете скачать что-то и вместо варезного сайта видите фотку довольного админа :)

Ну дак вот это и достигаеться тем же прокси сервером.
Дак за счёт чего достигаеться ускорение интернета? А за счёт того что вы ходите в интернет через прокси сервер, прокси скачивает странчку сохраняет её на жёсткий дископеративную_память и отдает уже вам.
В следующий раз вы идёте на эту страничку она вам отдаёться с жесткого диска, если конечно она не устарела (особо часто используемые объекты вообще храняться в оперативной памяти).
Интернет браузеры имеют подобный механизм но ни в какое сравнение с Squid'ом не лезут (привет защитникам Оперы :D)
Тем более если у вас есть локальная сеть, прокси сервер просто необходимость - пару человек с утра слазили на ннм.ру и большинство ннм сохранилось
локально на прокси следующие кто полезет на ннм с локалки, получат сайт очень быстро с проксика.
Это конечно примитивное объяснение, и у многих могут появиться вопросы о том что будут проблемы с сайтами итд - поверьте технология отточена
и всё работает отлично.
Конечно у прокси есть и дополнительные приемущества, среди них:

- возможность фильтрации сайтов, типов фаилов, да чего и когда хотите.
- возможность резки рекламы (дополнительное ускорение)
- возможность фильтрации информации передаваемой браузером об операционке, версии браузера и.т.д
- возможность ограничения скорости скачки (чтобы какае-нибудь п@дла не вздумала Fedora Core в 10 потоков качать а остальные курили в сторонке)
- возможность просматривать логи (кто, куда, когда ходил)
- всё это можно ограничить по времени, пользователю, скорости, размеру итд

Установить проксик в самой базовой конфигурации - дело получаса (если эту статью читать ;)). Тем более так как большинство пользователей сидят в Windows
проксик будем ставить на Windows (кстате на Линукс*никс этот проксик можно поставить с тем же успехом - это вам не MS ISA)
Насчёт ресурсов - сколько дадите - столько и будет кушать. Комфортно работать для одной рабочей станции нужно где-то 8 МБ оперативки,
процессор не более 1-2% загрузки при усиленном хождении по интернету.

И так поехали!

Заходим
сюда выбираем версию 2.6 - нажимаем Download.
скачать (1.6 Мб)
Это мы скачали Windows порт Squid'a.

Теперь разархивируем в C:Squid
Переименоввываем C:Squidetcsquid.conf.default в squid.conf (то есть убрали .default с конца)
Переименоввываем C:Squidetcmime.conf.default в mime.conf
После идём его конфигурировать - открываем C:Squidetcsquid.conf (лучше редактировать в Notepad++ - привыкайте к культуре :D)

1.) ищем директиву "cache_dir" (линия 998 (теперь поняли почему нужен Notepad++ :) ? ))
убирает значок # спереди (называеться разкоментировать, то что стоит после знака # программой игнорируеться и служит для того чтобы люди заметки там писали)
получаеться следующее: "cache_dir ufs c:/squid/var/cache 100 16 256" - вот первая цифра (100) после пути указывает сколько мегабайт под кэш отдать
на жёстком диске, по умолчанию 100 Мегабайт, мне например не жалко - дома стоит 256 (на работе 2 гига). Заметьте в пути используються обратные слэши
- так и должно быть.

2.) далее настраиваем чтобы кто попало не пользовался нашим проксиком
идём на линию 2387 и там добавляем "acl local_net src 192.168.0.0/24" (вместо "192.168.0.0/24" поставьте свою сетку/маску если хотите разрешить доступ только со всоего компа - поставьте "127.0.0.1/255.255.255.255")
если хотите разрешить только 2 (3, 4, 10) адресса то поставте "acl local_net src 192.168.0.101/255.255.255.255 192.168.0.102/255.255.255.255" теперь с 192.168.0.101 и 192.168.0.102 будет разрешен доступ к проски серверу
этот параметр задаёт с каких адрессов возможно будет использование проски сервера.
теперь идём на линию 2526 (заметьте мы уже добавили одну линию, так что все сместилось) и вставляем туда
"http_access allow local_net"

3.) теперь идём на линию 2833 и добавляем "visible_hostname Proxy4NNM"
и сохраняем фаил.

всё настроили! (по самому простому конечно - но начинать нужно с простого)
открываем командную строку (Start-->Run-->CMD-->'ok' | Пуск-->Выполнить-->cmd-->'ok')
переходим в каталог С:Squidsbin (в командной строке пишем "С:" потом "CD " потом "CD Squid" потом "cd sbin" - естественно без кавычек и каждый раз нажимая Enter )
должно появиться "C:Squidsbin", далее печатаем "squid.exe -z" и жмем Enter. Через секунду другую проксик завершит создавать директории для кэша и завершиться.

проверяем
в той же командной строке просто пишем "squid.exe", идём в браузер Инструменты-->Настройки-->Основные-->Параметры соединение...-->
Настройка прокси вручную-->пишем свой ip адресс (127.0.0.1 если поставили 127... в local_net, 192.168.x.x если 192.168.0.0) - порт 3128
Если у вас стоит Internet Explorer - то идём на http://www.mozilla.com/firefox/ и скачиваем FireFox. (4.9 МБ)
дальше идём на ннм.ру - если сайт загрузился - всё работает.

если всё работает выделяем окошко с командной строкой (где мы запустили squid.exe) и нажимаем "CTRL-C" сквид должен выйти.
далее мы установим сквид как системный сервис чтоб не запускать его вручную каждый раз (нужны права администратора на локальной машине)
в командной строке пишем "squid.exe -i", далее идём в Start-->Run-->service.msc-->'ok' | Пуск-->Выполнить-->service.msc-->'ok' находим Squid, нажимаем 2 раза
смотрим что "Startup type" (непомню как в русской версии, что-то типа "Тип Запуска") был "Automatic" и нажимаем "Start"
или из командной строки пишем "net start Squid"

===========================ВСЁ!!!========================

прокси работает - ускорение почувствуете не сразу а как кэш начнет заполняться (через день если нормально используете)

и так, на моем канале в 6Мбитс

без прокси - NNM
на internet explorere загрузился за 19 секунд на FireFox'e за 21 секунды на Opere за 14 секунд

через прокси который мы поставили - NNM (я прогнал nnm.ru несколько раз чтоб он в кэш залез)
на internet explorere загрузился за 15 секунд на FireFox'e за 8 секунд на Opere за 7 секунд

через прокси который у меня дополнительно настроен на отдельном компе (512MБ кэш, 64 оперативы сквиду) - NNM
на internet explorere загрузился за 7 секунд на FireFox'e за 6 секунд на Opere за 5 секунды

Теперь можно поднастроить прокси, позапрещать сайты и сгенерировать отчеты

если вам интересно или просто хочеться выжать побольше из прокси - его нужно поднастройть.

если нам нужно запретить некоторые сайты, рекламу, расширения и конечно же сделать "белый" список на который ограничения не влияют.
всё делаеться через squid.conf фаил.
открываем его и добавляем после "acl Safe_ports port 777 # multiling http" строка 2399:

acl block_sites url_regex "C:/squid/etc/block_sites.acl"
acl block_extensions url_regex "C:/squid/etc/block_extensions.acl"
acl block_ads url_regex "C:/squid/etc/block_ads.acl"
acl whitelist url_regex "C:/squid/etc/whitelist.acl"

после добавляем следующие перед "http_access allow local_net" (строка 2530):

http_access allow whitelist
http_access deny block_sites
deny_info http://www.nnm.ru block_sites
http_access deny block_extensions
http_access deny block_ads
# deny_info http://192.168.0.100/empty.gif block_ads

теперь в директории C:Squidetc создаем фаилы block_sites.acl, block_extensions.acl, block_ads.acl и whitelist.acl в фаил block_sites прописываем сайты которые хотим запретить
(директива "deny_info http://www.nnm.ru block_sites" будет показывать сайт ннм вместо сайтов в фаиле block_sites.acl)
вместо рекламы можете ставить пустой прозрачный гиф, только найдите его :) в инете (у меня он на локальком веб серваке лежит)
для этого раскоментируйте последнюю строчку и вставьте свой адресс. А вообще AdBlock вам в помощь :)

в фаил whitelest.acl пишем сайты на которые никакие запреты не влияют (например запрет рекламы)
в фаил block_extensions.acl пишем какие расширения запретить для скачки (.exe например)
в фаил block_ads.acl пишем шаблоны адрессов для рекламы (http://ads. например)

заметьте что в этих фаилах используються регулярные выражения а не
просто строки. например вместо точки нужно ставит .
Если не знаете что это такое посмотрите примеры в фаилах
(в конце я выложу архив со всем готовым)

после этого в командной строке (С:Squidsbin) пишем
"squid.exe -k check -n SquidNT"
если есть ошибки нам скажут - исправляем, потом
"squid.exe -k reconfigure -n SquidNT"
и сквид перечитает фаилы конфигурации.

итак: фаил журнала куда сквид пишет каждый запрос от клиента находиться в C:Squidvarlogs и называеться access.log
откройте и посмотрите что он из себя представляет.
вот фрагмент (2 строчки)

1146809425.078 47 192.168.0.112 TCP_HIT/200 11440 GET http://www.nnm.ru/nnm.css - NONE/- text/css
1146809425.656 453 192.168.0.112 TCP_MISS/200 665 GET http://www.nnm.ru/script/script.php - DIRECT/88.212.200.13 text/html

что то типа такого будет там. 2ое число означает сколько потребовалось на загрузку объекта в миллисекундах. потом идёт йп адресс клиента.
потом идёт статус кэша, HIT - значит объект был на прокси сервере, MISS - значит его пришлось грузить с интернета
(стоит оговориться что некоторые страницы не кэшируються чтобы правильно отображался сайт). потом идёт код от веб сервера. после идёт размер объекта.
далее адресс объекта и прочая лабуда которая нам сейчас не нужна. (здесь же может быть имя пользователя если настроена авторзация)
Нам главной понять где время на загрузку а где размер объекта.
этих знаний должно хватить для анализа как загружаеться сайт и что его тормозит.

для удобства я использую утилиту tail.exe (http://unxutils.sourceforge.net/) (я положил её в C:Squidsbin)

вообщем :) в командной строке пишем
"tail.exe -f C:Squidvarlogsaccess.log" и вы в реальном времени сможете наблюдать как работает прокси.
теперь заходим на сайт и смотрим что замедляет сайт.
к примеру на ннм в конце можно увидеть такое
1146813020.730 4266 192.168.0.112 TCP_MISS/503 1494 GET http://213.248.54.143/901146812983.gif - DIRECT/213.248.54.143 text/html
1146813023.454 7460 192.168.0.112 TCP_MISS/200 1471 GET http://u975.32.spylog.com/cnt? - DIRECT/194.67.35.198 image/gif
тоесть счётчики грузяться фиг знает сколько (~11сек.) - будем их убивать!
в фаил block_ads.acl добавляем выражения

^http://counter.
top.list.ru
spylog.com

говорим сквиду перечитать конфигурацию (squid.exe -k reconfigure -n Squid)

заходим на сайт и видим в access.log:
1146813536.372 0 192.168.0.112 TCP_DENIED/403 1431 GET http://u975.32.spylog.com/cnt? - NONE/- text/html
1146813536.382 10 192.168.0.112 TCP_DENIED/403 1441 GET http://counter.yadro.ru/hit;NoNaMe? - NONE/- text/html
1146813536.382 0 192.168.0.112 TCP_DENIED/403 1425 GET http://top.list.ru/counter? - NONE/- text/html

что эти нехорошие объекты были посланы гулять.
то что мы счётчики порезали скажеться на статистике сайта - так что если режете счётчики "оберегайте" хорошие сайты.

вообщем вроде немного разобрались с проксиком, скоростью, рекламой и прочей нечестью... :)

если хотите можете себе html отчёты генерировать подробные, сколько трафика, куда когда зачем.
Делаеться это с помощью Webalayzer'a (http://www.stonesteps.ca/projects/webalizer/)
качать сдесь (http://www.stonesteps.ca/downloads/)
в моём архиве уже есть в папке Webalizer
чтоб сгенерировать отчёт открываем командную строку (C:SquidWebalizer)
webalizer.exe -c squid.conf (для тех кто скачает созданный мной архив)
или
webalyzer.exe -F Squid -o C:Squidstatistics C:Squidvarlogsaccess.log
копируем webalyzer.css в папку statistics и читаем index.html

всё может выглядеть сложно но на деле делаеться за полчаса.

для ленивых я выложил архив со всем готовым СКАЧАТЬ (только нужно поменять адресс local_net в squid.conf если у вас не 192.168.0.0 или 192.168.1.0 сеть, хотя и так будет работать если соединяться на 127.0.0.1)

я описал только малую часть возможностей, если интересно читайте
тут и тут

Категория: Интересное, занимательное | Просмотров: 744 | Добавил: huligun | Дата:
Комментарии
Всего комментариев: 0
Имя *:
Email *:
Код *:
Используются технологии uCoz