<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF123%3AProxy</id>
		<title>LXF123:Proxy - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF123%3AProxy"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF123:Proxy&amp;action=history"/>
		<updated>2026-05-13T08:43:45Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF123:Proxy&amp;diff=10765&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF123:Proxy&amp;diff=10765&amp;oldid=prev"/>
				<updated>2010-09-17T10:41:15Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;: '''Сети''' Свяжем ваши Linux-ПК, и пускай они вас обслуживают&lt;br /&gt;
&lt;br /&gt;
==''Squid'': Поднимем прокси-сервер==&lt;br /&gt;
&lt;br /&gt;
{{Цикл/Сеть}}&lt;br /&gt;
&lt;br /&gt;
: Часть 8: Хотите, чтобы web-серфинг стал быстрее и безопаснее? '''Нейл Ботвик''' покажет, как достичь этого, а заодно уменьшить потребление трафика!&lt;br /&gt;
&lt;br /&gt;
Большая часть содержимого web-страницы в вашем браузере не менялась с прошлого просмотра. Да, слова могут быть другими, но картинки, особенно логотипы&lt;br /&gt;
и кнопки, остаются теми же. Браузер кэширует эти данные, и они не загружаются каждый раз заново, но что если другой пользователь вашей сети заходит&lt;br /&gt;
на тот же самый сайт или у вас несколько компьютеров? Даже переключение на другой браузер отбирает часть отнюдь не безграничной ширины канала.&lt;br /&gt;
&lt;br /&gt;
В простейшем случае вам поможет прокси-сервер. Браузер запрашивает объект не прямо с сайта, а у посредника, который загружает его и сохраняет копию.&lt;br /&gt;
В следующий раз, когда вам или другому пользователю понадобится такой же объект, прокси-сервер отправит копию, убедившись с помощью ряда проверок, что&lt;br /&gt;
она не устарела.&lt;br /&gt;
&lt;br /&gt;
Может, вы уже и пользуетесь прокси-сервером – большинство провайдеров применяют их для экономии трафика, нередко реализуя так называемый «прозрачный» [''правильнее сказать – перехватывающий, – прим. ред.''] режим, когда трафик принудительно направляется через прокси-сервер, даже если вы не указали этого&lt;br /&gt;
в настройках браузера.&lt;br /&gt;
&lt;br /&gt;
Экономия полосы пропускания – лишь одно из назначений прокси-сервера. С помощью различных параметров настройки и дополнений можно фильтровать содержимое&lt;br /&gt;
определенных типов. Прокси поможет предотвратить посещение нежелательных с вашей точки зрения сайтов вашими детьми или сотрудниками – например, запретит&lt;br /&gt;
им торчать в социальных сетях, огда они  должны делать уроки или работать. Вы также сможете отфильтровать рекламные сайты, подавив загрузку баннеров, отнимающих время и трафик, не говоря уже о назойливой всплывающей рекламе.&lt;br /&gt;
&lt;br /&gt;
Самый популярный прокси-сервер с открытым исходным кодом – это ''Squid'' (http://www.squid-cache.org), поэтому начнем с его настройки, а потом более&lt;br /&gt;
подробно познакомимся с проксированием и фильтрацией.&lt;br /&gt;
&lt;br /&gt;
===Web через прокси===&lt;br /&gt;
&lt;br /&gt;
После установки ''Squid'' через менеджер пакетов вы можете захотеть изменить пару опций в его конфигурационном файле '''/etc/squid/squid.conf'''. В нем почти пять тысяч строк – это настоящий монстр. Но большинство строк – комментарии, описывающие опции, и многие параметры можно оставить без изменения;&lt;br /&gt;
зато видно, сколько всего можно подрегулировать. Из-за потенциальной сложности индивидуальной настройки лучше всего держаться поближе к варианту по умолчанию и менять отдельные опции постепенно, сохраняя резервные копии файлов работающих конфигураций, чтобы при необходимости в любой момент откатиться&lt;br /&gt;
к ним (подробности ищите в статье о ''Git'' для '''/etc''' в [[LXF121:VCS|LXF121]]).&lt;br /&gt;
&lt;br /&gt;
Установки по умолчанию – идеальная стартовая точка, и теоретически с ними все должно сразу заработать. После установки ''Squid ''запустите его из менеджера служб вашего дистрибутива и расскажите о нем своему браузеру. Установите адрес прокси-сервера в доменное имя или IP-адрес компьютера, на котором запущен ''Squid'' (или в localhost, если это ваша локальная машина), а номер порта – в '''3128''' (вариант ''Squid'' по умолчанию). ''Squid'' прячет кэшированные файлы в каталоге '''/var/cache/squid/''' – следующая команда покажет, сколько дисковой памяти он сейчас использует (пока не очень много, ибо вы еще ничего не поместили в кэш):&lt;br /&gt;
&lt;br /&gt;
 du -sh /var/cache/squid/&lt;br /&gt;
&lt;br /&gt;
Теперь откройте несколько сайтов и снова выполните команду. Вы должны увидеть, что используется больше места, то есть ''Squid'' закэшировал текст и картинки для только что просмотренных страниц.&lt;br /&gt;
&lt;br /&gt;
Итак, прокси-сервер запущен; зададим необходимые настройки в ПО, которое с ним работает. Для начала сделайте это во всех браузерах. Впрочем, браузеры – не единственные программы, загружающие данные по HTTP или FTP (''Squid'' обрабатывает и FTP-запросы): менеджеры пакетов тоже качают немало, и если на нескольких компьютерах установлен один и тот же дистрибутив, то одни и те же пакеты будут загружаться снова и снова, что, конечно, нежелательно. В некоторых менеджерах пакетов, например, ''Synaptic'', можно задать прокси-сервер в настройках, но также можно установить переменные окружения, используемые большинством утилит командной строки (а все графические менеджеры пакетов полагаются на эти утилиты). Нужно установить значения двух переменных '''http_proxy''' и '''ftp_proxy''' (имена в нижнем регистре) в &amp;lt;nowiki&amp;gt;http://ваш.прокси.сервер:3128&amp;lt;/nowiki&amp;gt;. Как это сделать, зависит от дистрибутива. В некоторых системах есть соответствующая опция в параметрах сети, в других нужно добавить пару строк в файл '''/etc/profile.d''':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;export http_proxy=http://your.proxy.server:3128&lt;br /&gt;
 export ftp_proxy=http://your.proxy.server:3128&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Тонкая настройка===&lt;br /&gt;
&lt;br /&gt;
Ну вот, ''Squid'' работает, и можно подкрутить еще кое-что. Основные опции, которые нужно проверить – это '''http_port''' (номер порта, который слушает ''Squid''; по умолчанию 3128) и '''cache_dir''' (каталог, где ''Squid'' будет хранить кэшированные данные). Последний параметр также определяет тип хранилища и максимальный размер. По умолчанию это:&lt;br /&gt;
&lt;br /&gt;
 cache_dir ufs /var/cache/&lt;br /&gt;
 squid 100 16 256&lt;br /&gt;
&lt;br /&gt;
что означает стандартный метод хранения ('''ufs''') в каталоге '''/var/cache/squid''' с максимальным размером в 100 МБ. Максимальный размер должен быть несколько меньше объема доступного места, чтобы избежать фрагментации файловой системы. Однако чрезмерно большой кэш может оказаться медленным, и при этом хранить такие старые файлы, которые уже никогда не будут востребованы повторно.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Заголовок=Скорая помощь|Содержание=Если вы не можете найти какой-то файл или программу из упомянутых здесь, возможно, ваш дистрибутив изменил ее местоположение. Воспользуйтесь списком содержимого менеджера пакетов или командой ''locate'', чтобы найти ее.|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Остальные два числа – количество каталогов и подкаталогов, используемых для хранения данных – лучше оставить как есть. Существуют и другие типы хранилищ, но они опять же для более продвинутого использования. Например, '''diskd''' более эффективен, когда объем трафика большой, но работает медленнее, когда трафик умеренный. Также нужно установить в '''cache_mgr''' адрес электронной почты, куда будут отправляться сообщения о серьезных ошибках.&lt;br /&gt;
&lt;br /&gt;
Кэш ''Squid'' также можно установить перед сервером или кластером серверов, снизив их загрузку и увеличив производительность, но это выходит за рамки наших четырех страниц.&lt;br /&gt;
&lt;br /&gt;
===Кто идет куда?===&lt;br /&gt;
&lt;br /&gt;
Прокси-серверы – мишень для неавторизованного использования. Если доступ на некий сайт блокирован брандмауэром (например, в компании, не желающей истратить весь свой месячный трафик на YouTube), пользователи могут попытаться найти открытый прокси-сервер, подключиться к нему и получить доступ к заблокированным сайтам. Предотвратить это можно двумя способами. Простейший – запретить доступ к прокси-серверу с любого компьютера вне локальной сети, закрыв порт 3128 на маршрутизаторе. Альтернативы – различные схемы аутентификации. Самая простая из них использует файл такого же формата, как '''.htpasswd''' в ''Apache'', и добавить пользователей в него можно командой ''htpasswd'':&lt;br /&gt;
&lt;br /&gt;
 htpasswd /etc/squid/passwd username&lt;br /&gt;
&lt;br /&gt;
При первом запуске добавьте ключ '''-c''', чтобы создать файл. После этого не указывайте '''-c''' снова, а то удалите существующие записи. Теперь добавьте в файл '''squid.conf''' следующие строки:&lt;br /&gt;
&lt;br /&gt;
 auth_param basic program /usr/libexec/ncsa_auth /etc/squid/passwd&lt;br /&gt;
 auth_param basic children 5&lt;br /&gt;
 auth_param basic realm Squid proxy-caching web server&lt;br /&gt;
 auth_param basic credentialsttl 2 hours&lt;br /&gt;
&lt;br /&gt;
Они велят ''Squid'' запускать названную программу для аутентификации ('''/usr/libexec/ncsa_auth''' включена в ''Squid'', хотя путь в вашем дистрибутиве может слегка отличаться) и разрешают поддерживать до пяти процессов (все остальные попытки аутентификации будут ждать своей очереди). Параметр '''realm''' – просто сообщение, выдаваемое ''Squid'' при запросе пароля, а последняя опция устанавливает период, в течение которого действительна сессия (время жизни). Если пользователям неохота каждый раз вводить имя и пароль, можно занести их в настройки прокси в браузере или в переменную окружения '''http_proxy''' в стандартном формате URL:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://username:password@my.proxy.com:3128&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь мы лишь устанавливаем метод аутентификации. Мы еще не требуем ни от кого войти в систему, за это отвечает секция '''ACL''' (Access Control List – список контроля доступа) файла '''squid.conf'''. Списки задаются с помощью ключевого слова '''acl''', например:&lt;br /&gt;
&lt;br /&gt;
 acl lan src 192.168.0.0/24&lt;br /&gt;
 acl users proxy_auth user1 user2&lt;br /&gt;
 acl allusers proxy_auth REQUIRED&lt;br /&gt;
&lt;br /&gt;
Каждая строка определяет правило ACL (второе слово задает имя правила, а последующие описывают его суть). Первое правило отвечает любому запросу, приходящему из сети 192.168.0.0/24, так что любой компьютер локальной сети будет ему соответствовать. Вторая строка соответствует заданным пользователям, при условии, что они ввели пароль и прошли аутентификацию в соответствии с '''auth_param'''. Третья строка похожа на вторую, за исключением опции '''REQUIRED''', которая означает соответствие любому действительному пользователю. Теперь используем директиву '''http_access''', чтобы применить эти правила.&lt;br /&gt;
&lt;br /&gt;
 http_access allow lan&lt;br /&gt;
 http_access allow users&lt;br /&gt;
 http_access deny all&lt;br /&gt;
&lt;br /&gt;
Это разрешает доступ пользователям из списков '''lan''' или '''users''' и запрещает всем остальным. Таким образом, вы можете подключаться по локальной сети без пароля или извне с указанием пароля – все остальные не могут. Если запрос не соответствует ни одному из правил доступа, он считается соответствующим самому последнему из них, поэтому в общем случае лучше делать его правилом '''deny'''. Если это '''deny all''', то никаких сомнений не остается, потому что он соответствует любому запросу, который забирается так далеко. Правила рассматриваются по порядку, и применяется первое совпадение, поэтому правило '''lan''' должно предшествовать '''users''', иначе у пользователей локальной сети все равно будет запрашиваться пароль.&lt;br /&gt;
&lt;br /&gt;
===Прозрачный прокси===&lt;br /&gt;
&lt;br /&gt;
''Squid'' может работать в прозрачном режиме, хотя тогда в аутентификации смысла нет. Это позволяет избежать необходимости ввода настроек прокси в браузере; все запросы будут восприняты и отправлены через него, несмотря ни на что. Для этого компьютер со ''Squid'' должен быть также и интернет-шлюзом, чтобы все запросы гарантированно проходили через него. Затем измените '''http_port''' в '''squid.conf''' на&lt;br /&gt;
&lt;br /&gt;
 http_port 80 transparent&lt;br /&gt;
&lt;br /&gt;
Теперь все запросы для порта 80, достигающие этого компьютера, будут любезно пропущены через ''Squid''.&lt;br /&gt;
&lt;br /&gt;
===Кто идет когда?===&lt;br /&gt;
&lt;br /&gt;
Мы рассмотрели далеко не все возможности списков ACL. В частности, они позволяют фильтровать запросы по различным критериям. Одна из интересных возможностей – правила со временем действия. Если вы не хотите ликвидировать доступ к сайтам социальных сетей полностью, а просто желаете, чтобы они не мешали работе, можно задать правила, блокирующие доступ к ним в рабочие часы, но не во время обеда или когда ребенок уже выполнил домашнее задание.&lt;br /&gt;
&lt;br /&gt;
 acl manager proxy_auth me&lt;br /&gt;
 acl lunchtime time MTWHF 12:30-1:30&lt;br /&gt;
 acl weekend time SA&lt;br /&gt;
 acl social_networks dstdomain .facebook.com .twitter.com&lt;br /&gt;
 http_access allow me&lt;br /&gt;
 http_access deny social_networks !lunchtime !weekend&lt;br /&gt;
 http_access allow lan&lt;br /&gt;
 http_access deny all&lt;br /&gt;
&lt;br /&gt;
Первая строка '''acl''' задает пользователя, который может обойти эти ограничения – вовсе не смешно самому оказаться за бортом, заблокировав заодно и себя. Следующие два правила определяют периоды времени, а последний '''acl''' содержит список доменов, доступ к которым будет блокироваться вне данных периодов. Первая строка '''access''' разрешает вам делать то, что вы хотите, тогда как в следующей строке несколько списков '''acl''' определяются в одном правиле доступа. В таком случае для срабатывания правила необходимо совпадение со всеми списками сразу. '''!''' изменяет смысл запрета на противоположный, так что эта строка блокирует доступ к социальным сетям, если время не обеденное и день не выходной. Наконец, как и прежде, мы разрешаем доступ всем пользователям локальной сети и запрещаем всем остальным. Конечно, это простейшая настройка, но ее можно улучшить, добавив другие строки '''acl''' и '''http_access'''.&lt;br /&gt;
&lt;br /&gt;
С приумножением правил конфигурационный файл станет неповоротливым. Есть несколько способов разбить его на части. В качестве аргумента правила '''acl''' могут принимать имя файла, содержащего параметры по одному в каждой строке. Поэтому строку '''social_networks''' можно заменить на&lt;br /&gt;
&lt;br /&gt;
 acl social_networks dstdomain /etc/squid/social_networks.acl&lt;br /&gt;
&lt;br /&gt;
где указанный файл содержит строки&lt;br /&gt;
&lt;br /&gt;
 .facebook.com&lt;br /&gt;
 .twitter.com&lt;br /&gt;
 .thenextfad.com&lt;br /&gt;
&lt;br /&gt;
Внутри '''squid.conf''' можно пользоваться директивой '''include''', поэтому все правила '''acl''' можно поместить в отдельный файл и добавить строку&lt;br /&gt;
&lt;br /&gt;
 include /etc/squid/acl.conf&lt;br /&gt;
&lt;br /&gt;
в '''squid.conf'''. Чтобы вы ни делали, тщательно комментируйте свои действия, иначе, заглянув в правила через полгода, вы едва ли поймете, что имели в виду.&lt;br /&gt;
&lt;br /&gt;
===Требования к серверу===&lt;br /&gt;
&lt;br /&gt;
Два основных критерия при оценке ресурсов, которые нужно выделить прокси-серверу – число запросов, которые он будет обрабатывать, и объем работы на каждый запрос. Обслуживать домашнюю сеть с несколькими пользователями и простейшим кэшированием способен и старый, маломощный компьютер, а для сети компании с большим количеством пользователей и фильтрацией, естественно, потребуется больше. Производительность процессора – не главное требование: важнее объем оперативной памяти и производительность диска, а также и отношение объема ОЗУ к объему жесткого диска. Чем больше каталог кэша, тем больше места потребуется для дисковых буферов, чтобы не уронить производительность.&lt;br /&gt;
&lt;br /&gt;
Люди ''Squid'' (нет, это не персонажи второсортного фильма из 1950-х) рекомендуют сверх требований ОС иметь 32 МБ свободной памяти на каждый ГБ кэша. Понятно, что понадобится приличная сетевая скорость с не менее чем гигабитным соединением всех сетей, кроме самых маленьких.&lt;br /&gt;
&lt;br /&gt;
===Фильтрация содержимого===&lt;br /&gt;
&lt;br /&gt;
''Squid'' умеет вызывать из своего конфигурационного файла другие программы – мы уже видели такой пример с аутентификацией, вызывающей программу ''/usr/libexec/ncsa_auth''. Это означает, что к ''Squid'' можно прицепить различные средства фильтрации и блокировать доступ к нежелательному содержимому. Альтернативный подход – заставить программу фильтрации обращаться к ''Squid''. Так работает ''DansGuardian'' (http://dansguardian.org). ''DansGuardian'' блокирует доступ различными способами, включающими черный список URL-адресов и доменов и фильтр содержимого. Последний анализирует содержимое web-страницы, прежде чем решить, передавать ее или нет. В этом отношении он похож на спам-фильтр. У обоих методов есть преимущества и недостатки, а их сочетание обеспечивает надежную защиту.&lt;br /&gt;
&lt;br /&gt;
Установите ''DansGuardian'' обычным способом (из менеджера пакетов дистрибутива); значения по умолчанию в его конфигурационном файле '''/etc/dansguardian/dansguardian.conf''' весьма разумны. Возможно, они покажутся вам чересчур ограничивающими, но файл хорошо закомментирован, и нетрудно сообразить, как расширить доступ. Самые важные строки в нем –&lt;br /&gt;
&lt;br /&gt;
 filterip =&lt;br /&gt;
 filterport = 8080&lt;br /&gt;
 proxyip = 127.0.0.1&lt;br /&gt;
 proxyport = 3128&lt;br /&gt;
 language = ‘russian’&lt;br /&gt;
 contentscanner = ‘/etc/dansguardian/contentscanners/clamdscan.conf’&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Заголовок=Скорая помощь|Содержание=Можно заранее загрузить в кэш последние версии популярных сайтов с помощью ''wget'':&lt;br /&gt;
&lt;br /&gt;
''wget -r -nd --delete-after &amp;lt;nowiki&amp;gt;http://wherever.com&amp;lt;/nowiki&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Эта команда пройдет сайт и скачает новые или обновленные страницы в кэш. Попробуйте запускать ее из ''Cron'' перед началом работы.|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Первая задает IP-адрес, на котором работать ''DansGuardian''; оставьте его пустым, чтобы слушать на всех сетевых интерфейсах. Чтобы определить более одного адреса, указывайте каждый новый на отдельной строке со своим '''filterip'''. Параметр '''filterport''' – порт, который прослушивает ''DansGuardian''. Следующие две строки – это IP-адрес и порт сервера ''Squid'', откуда ясно, что ''DansGuardian'' и ''Squid'' могут работать на отдельных компьютерах, хотя это увеличивает сетевой трафик. Параметр '''language''' задает язык, используемый на web-странице, возвращаемой ''DansGuardian'' как оповещение о блокировке запрошенного документа.&lt;br /&gt;
&lt;br /&gt;
Последняя строка – установка по умолчанию, но не исключено, что вам захочется ее закомментировать. Она велит ''DansGuardian'' прогонять каждый объект через ''ClamAV'' для проверки на вирусы, но вот беда: перед передачей ''ClamAV'' файл нужно загрузить полностью, а это исключает потоковую передачу данных. Удовлетворившись настройкой, запустите программу с помощью менеджера сервисов дистрибутива и настройте ее старт при загрузке системы.&lt;br /&gt;
&lt;br /&gt;
Вам также потребуется изменить настройки прокси в браузерах, так как теперь запросы должны приходить на порт 8080, откуда они будут перенаправлены к ''Squid'' на порт 3128. Если вы уже настроили несколько компьютеров на использование ''Squid'' на порту 3128, быстрое и простое решение – изменить порт ''Squid'' на что-то другое. Укажите это в '''dansguardian.conf''' и заставьте'' DansGuardian'' слушать порт 3128. Номера портов не являются неприкосновенными, хотя для прокси обычно используются эти два.&lt;br /&gt;
&lt;br /&gt;
Если к ''DansGuardian'' или к ''Squid'' подключиться не удается, сначала загляните в файл системного журнала на сервере. Например, с некоторыми настройками ядра ''DansGuardian'' может выдать ошибку '''«Failed to get client’s original destination IP»''' («Не могу получить исходный IP-адрес клиента»); тогда нужно установить параметр '''originalip=off''' в '''dansguardian.conf'''.&lt;br /&gt;
&lt;br /&gt;
Теперь у вас должен быть рабочий прокси-сервер, который разгрузит канал, ускорит просмотр сайтов и позволит вам указывать, кому, когда и куда ходить. И в ''Squid'', и в ''DansGuardian'' есть масса возможностей, которых мы не коснулись, и подробную информацию о том, как еще подправить их густо закомментированные файлы конфигурации, можно найти в разделе документации соответствующих сайтов. '''LXF'''&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>