Mathway source - cтатт≥


√оловна  ѕроекти  —татт≥ 

ѕ≥нгв≥ни наш≥ швидк≥... 3

Ќадруковано в тижневику "ћой компьютер"

÷ього разу ¤ зак≥нчу розпов≥дь про те, ¤к змусити п≥нгв≥н≥в швидше б≥гати по ≤нтернету. ћи будемо встановлювати кешуючий прокс≥-сервер Squid, ¤кий буде збер≥гати ус≥ в≥дв≥дан≥ вами стор≥нки, ≥ при наступному зверненн≥ до них д≥ставатиме њх з кешу, а не т¤гнутиме з ≤нтернету.

Squid - один з найпопул¤рн≥ших кешуючих прокс≥-сервер≥в. …ого поул¤рн≥сть по¤снюЇтьс¤ гнучк≥стю та великою к≥льк≥стю опц≥й налаштуванн¤, що дозвол¤Ї налаштувати сервер дуже тонко п≥д будь-¤к≥ умови. ѕрокс≥ кешуЇ HTTP, FTP, SSL та де¤к≥ ≥нш≥ запити, дозвол¤Ї обмежувати швидк≥сть з'Їднань, п≥дтримуЇ ≥Їрарх≥ю сервер≥в... «важаючи на купу можливостей, цей матер≥ал не претендуЇ на вичерпн≥сть, а носить б≥льш огл¤довий характер. ’оча (при на¤вност≥ бажаючих ;) ), ¤к≥сь аспекти можна буде розгл¤нути б≥льш детально. ѕерша верс≥¤ squid з'¤вилас¤ у 1996 роц≥, тому спод≥ватись на нефункц≥ональн≥сть або купу страшних глюк≥в не варто. ѕри цьому проект на диво дос≥ не маЇ оф≥ц≥йноњ документац≥њ у завершеному стан≥ (окр≥ man-стор≥нок ≥ FAQ). Ќа момент написанн¤ матер≥алу останньою стаб≥льною верс≥Їю прокс≥ був squid-2.5.STABLE7, ¤кий можна закачати з оф≥ц≥йного сайту squid: http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE7.tar.bz2. –озпаковуЇмо арх≥в командою tar -xzf ./squid-2.5.STABLE7.tar.bz2 до поточного каталогу. “епер треба створити користувача, в≥д ¤кого буде запускатись сервер: useradd -r squid. ’оча у мене в≥н з ¤когось дива був присутн≥й у систем≥, не зважаючи на те, що пакунку з≥ скв≥дом не було.

—крипт конф≥гурац≥њ маЇ досить багато ц≥кавих ключ≥в, про ¤к≥ можна д≥знатись, набравши ./configure --help.я вкажу т≥льки на найб≥льш важлив≥ з мого погл¤ду: --enable-default-err-language=Russian-koi8-r ¤кщо виникають проблеми з англ≥йськими пов≥домленн¤ми про помилки серверу; украњнських, нажаль нема :( --enable-delay-pools ¤кщо потр≥бно обмежувати траф≥к дл¤ р≥зних з'Їднань; --enable-icmp вим≥рюЇ шл¤х до сус≥д≥в; --enable-cache-digests застосовувати Cache Digests дл¤ оптим≥зац≥њ вибору сус≥д≥в.

ќстанн≥ дв≥ опц≥њ потр≥бн≥ при побудов≥ мереж≥ прокс≥-сервер≥в, ¤к≥ взаЇмод≥ють м≥ж собою.ќтож, сконф≥гурувавши пакунок, кажемо make ≥ п≥д root'ом make install. —кв≥д встановитьс¤ в директор≥ю /usr/local/squid разом з логами ≥ файлами конф≥гурац≥њ. ƒл¤ зручност≥ на останн≥ два каталоги можна зробити с≥мл≥нки у /etc та /var/log в≥дпов≥дно, або скористатись групою параметр≥в скрипта ./configure --prefix, щоб розкласти ус≥ компоненти найб≥льш зручно дл¤ вас.

“епер переходимо до конф≥гурац≥њ сервера. ќб'Їм файла etc/squid.conf п≥дказуЇ, що робити це можна не одну годину, ¤кщо п≥д≥йти до справи серйозно ≥ знати, чого хочеш :). “ому ми т≥льки налаштуЇмо скв≥д так, щоб в≥н працював в куп≥ з privoxy (див ћ #48), а на ≥нш≥ опц≥њ ¤ просто вкажу, щоб при потреб≥ знати, де шукати.

- http_port 3128 - порт, ¤кий слухатиме скв≥д; - icp_port 0 - ¤кщо немаЇ сус≥д≥в, ¤к≥ будуть стукати у двер≥, нав≥що двер≥ ;) ; - cache_peer - налаштуванн¤ сус≥д≥в. - cahe_mem 8 MB - к≥льк≥сть оперативноњ пам'¤т≥, ¤ку може використовувати скв≥д; - cache_swap_high 95 - процент заповненн¤ кешу, при ¤кому почнетьс¤ видаленн¤ об'Їкт≥в з нього; - cache_swap_low 90 - процент заповненн¤ кешу, при ¤кому зупинитьс¤ видаленн¤ об'Їкт≥в з нього; - maximum_object_size 4096 KB - максимальний розм≥р об'Їкта, ¤кий буде збережено в кеш≥; - cache_dir ufs /usr/local/squid/var/cache 100 16 256 - опис каталогу п≥д кеш; пол¤: ufs - тип збер≥ганн¤ об'Їкт≥в; /usr/local/squid/var/cachе - м≥сце розташуванн¤ кешу; 100 - об'Їм кешу в ћб; 16 - к≥льк≥сть каталог≥в першого р≥вн¤; 256 - к≥льк≥сть каталог≥в другого р≥вн¤; - client_netmask 255.255.255.255 - маска, на ¤ку множатьс¤ IP користувач≥в squid; потр≥бна дл¤ збереженн¤ таЇмниц≥ особистого житт¤ кл≥Їнта, наприклад при встановленн≥ маски в 255.255.255.0, останн≥й байт IPшник≥в в логах прокс≥ буде зам≥нено нулем; - ftp_user <е-мило> - потр≥бно дл¤ доступу на анон≥мн≥ фтп, де¤к≥ свар¤тьс¤ на замовчувальний вар≥ант ≥ не пускають ;) - ftp_list_width 64 - ширина листинга фтп, замовчувальних 32 ¤вно недостатньо; - quick_abort_pct 95 - ¤кщо кл≥Їнт об≥рвав запит, а вже завантажено б≥льше 95 в≥дсотк≥в, зак≥нчити завантаженн¤; поруч Ї опц≥њ дл¤ max/min обмеженн¤ розм≥ру закачаного об'Їкта; - cache_mgr - поштова скринька адм≥н≥стратора сервера; буде виводитись на стор≥нках з помилками; - cache_effective_user squid - в≥д ≥мен≥ цього користувача буде запускатись процес; - група параметр≥в delay_* дл¤ налаштуванн¤ под≥лу каналу м≥ж к≥лькома кл≥Їнтами.

“епер найц≥кав≥ше - списки доступу (ACL). « њх допомогою можна розписати коли, кому, що ≥ ¤к можна ,чи не можна. ћають наступний вигл¤д: acl ≥м'¤ тип строка ... - в строц≥ може бути дек≥лька параметр≥в, вони об'Їднуютьс¤ лог≥чним јЅќ; acl ≥м'¤ тип "назва файлу" - один файл в строку, ¤кий м≥стить параметри. ѕараметр≥в Ї велика купа, найб≥льш уживаними Ї наступн≥: - src addr - кл≥Їнтськ≥ IP адреси, можуть мати наступний вигл¤д: 192.168.4.0/24, або 192.168.4.2-192.168.4.46; - dst addr - IP адреса сервера, до ¤кого прийшов запит; - srcdomain, dstdomain - те саме, т≥льки дл¤ доменних ≥мен; - time [day] [год1:хв1-год2:хв2] - день (одна з букв SMTWHFA) та пер≥од часу, коли прийшов запит; - proto [HTTP | FTP | ...] - протокол запиту; - proxy_auth користувач ... - дл¤ проходженн¤ аутентиф≥кац≥њ користувачем при доступ≥ до скв≥да, можна використати REQUIRED дл¤ будь-¤кого ≥мен≥ користувача;

ѕодивимось, що можна зробити за допомогою цих списк≥в доступу: - http_access allow|deny [!]aclname ... - дозв≥л/заборона доступу до прокс≥ по HTTP, acl об'Їднуютьс¤ лог≥чним ≤: - always_direct allow|deny [!]aclname ... - запити, що задовольн¤ють даним acl завжди направл¤ти до першоджерела, оминаючи ≥нш≥ кеш≥; - never_direct allow|deny [!]aclname ... - повн≥стю протилежна повед≥нка ;) ;

ѕри застосуванн≥ зв'¤зки squid-privoxy, автори останнього рад¤ть використовувати таку схему: browser->squid->privoxy. ƒл¤ цього треба зробити так≥ зм≥ни в конф≥гурац≥њ squid.conf: - вказати privoxy ¤к головний прокс≥, до ¤кого будуть надсилатись запити: cache_peer localhost parent 8118 7 no-query ; пол¤: localhost - доменне ≥м'¤ машини, де висить прокс≥; parent - тип прокс≥ (головний); 8118 - порт, ¤кий слухаЇ прокс≥: 7 - порт дл¤ ICP запит≥в; так ¤к сус≥д не squid, ≥ не зможе в≥дпов≥сти на запит, то направл¤Їмо можлив≥ запити на ехо-порт; no-query - не надсилати ICP запити; - змусити скв≥д завжди направл¤ти запити по ftp напр¤му, так ¤к privoxy не п≥дтримуЇ цей протокол, а ус≥ ≥нш≥ завжди пускати через налаштован≥ кеш≥ (тобто privoxy). ƒл¤ цього треба розкоментувати чотири стоки у конф≥гурац≥йному файл≥: acl FTP proto FTP always_direct allow FTP acl all src 0.0.0.0/0.0.0.0 never_direct allow all

 р≥м цього, в броузер≥ треба встановити прокс≥ дл¤ FTP, HTTP, SSL, вказавши localhost, порт 3128 (див. ћ #48).

“епер залишилось створити директор≥њ п≥д кеш, ≥ скв≥д буде готовий до запуску. ƒл¤ цього зм≥нимо власника каталогу, де буде лежати кеш та логи: chown squid /usr/local/squid/var/, ≥, власне, створимо кеш: /usr/local/squid/sbin/squid -z. «апускаЇтьс¤ прокс≥ просто командою /usr/local/squid/sbin/squid, а ¤кщо старт в≥дбуваЇтьс¤ в оффлайн≥, то з ключом -D, щоб в≥н не перев≥р¤в, чи налаштована мережа.

ќт ми ≥ встановили кешуючий проккс≥-сервер. “епер в броузер≥ можна в≥дключити налаштунки кешу, ¤кщо ви не маЇте звички копирсатись у ньому ;).

ўодо автоматичного старту п≥дчас запуску системи. ¬ пакет≥ скрипта дл¤ init немаЇ, здаЇтьс¤ в FAQ були т≥льки поради про те, ¤кими командами запускати та зупин¤ти скв≥д. “ому ¤ вз¤в цей скрипт в ≥нш≥й програм≥ (pdnsd ;) ) ≥ переробив його п≥д squid. —под≥ваюсь, коли вийде матер≥ал, скрипт можна буде вз¤ти на http://mathway.narod.ru. “аи буде bash-скрипт, ¤кий розкладе усе по м≥сц¤х.

ќсь ≥ завершилась розпов≥дь про те, ¤к можна навчити п≥нгв≥н≥в б≥гати швидше по мереж≥ ≤нтернет. «вичайно, наведен≥ програми дадуть б≥льший ефект, коли сто¤тимуть на шлюз≥ в локальн≥й мереж≥: статистика показуЇ, що траф≥к зменшуЇтьс¤ ор≥Їнтовно на 40%. јле на локальн≥й машин≥ њх прац¤ теж не залишаЇтьс¤ непом≥ченою :). Ќе можна сказати, що це все, що можна зробити, Ї ще багато параметр≥в ¤дра системи, ¤к≥ впливають на њњ повед≥нку в мереж≥, але це вже зовс≥м ≥нша ≥стор≥¤...

P.S. ≤нформац≥¤, наведена в данному цикл≥ статей отримана мною з джерел, ¤к≥ ¤ вважаю над≥йними. Ќе зважаючи на це, ¤ не можу гарантувати абсолютну точн≥сть наведених в≥домостей, ≥ не несу в≥дпов≥дальн≥сть за можливу шкоду, викликану використанн¤м матер≥ал≥в.


(c) 2005 ћатв≥йчук ќлег aka Matvey
Hosted by uCoz