LXF123:Proxy
|
|
|
- Сети Свяжем ваши Linux-ПК, и пускай они вас обслуживают
Содержание |
Squid: Поднимем прокси-сервер
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
- Часть 8: Хотите, чтобы web-серфинг стал быстрее и безопаснее? Нейл Ботвик покажет, как достичь этого, а заодно уменьшить потребление трафика!
Большая часть содержимого web-страницы в вашем браузере не менялась с прошлого просмотра. Да, слова могут быть другими, но картинки, особенно логотипы и кнопки, остаются теми же. Браузер кэширует эти данные, и они не загружаются каждый раз заново, но что если другой пользователь вашей сети заходит на тот же самый сайт или у вас несколько компьютеров? Даже переключение на другой браузер отбирает часть отнюдь не безграничной ширины канала.
В простейшем случае вам поможет прокси-сервер. Браузер запрашивает объект не прямо с сайта, а у посредника, который загружает его и сохраняет копию. В следующий раз, когда вам или другому пользователю понадобится такой же объект, прокси-сервер отправит копию, убедившись с помощью ряда проверок, что она не устарела.
Может, вы уже и пользуетесь прокси-сервером – большинство провайдеров применяют их для экономии трафика, нередко реализуя так называемый «прозрачный» [правильнее сказать – перехватывающий, – прим. ред.] режим, когда трафик принудительно направляется через прокси-сервер, даже если вы не указали этого в настройках браузера.
Экономия полосы пропускания – лишь одно из назначений прокси-сервера. С помощью различных параметров настройки и дополнений можно фильтровать содержимое определенных типов. Прокси поможет предотвратить посещение нежелательных с вашей точки зрения сайтов вашими детьми или сотрудниками – например, запретит им торчать в социальных сетях, огда они должны делать уроки или работать. Вы также сможете отфильтровать рекламные сайты, подавив загрузку баннеров, отнимающих время и трафик, не говоря уже о назойливой всплывающей рекламе.
Самый популярный прокси-сервер с открытым исходным кодом – это Squid (http://www.squid-cache.org), поэтому начнем с его настройки, а потом более подробно познакомимся с проксированием и фильтрацией.
Web через прокси
После установки Squid через менеджер пакетов вы можете захотеть изменить пару опций в его конфигурационном файле /etc/squid/squid.conf. В нем почти пять тысяч строк – это настоящий монстр. Но большинство строк – комментарии, описывающие опции, и многие параметры можно оставить без изменения; зато видно, сколько всего можно подрегулировать. Из-за потенциальной сложности индивидуальной настройки лучше всего держаться поближе к варианту по умолчанию и менять отдельные опции постепенно, сохраняя резервные копии файлов работающих конфигураций, чтобы при необходимости в любой момент откатиться к ним (подробности ищите в статье о Git для /etc в LXF121).
Установки по умолчанию – идеальная стартовая точка, и теоретически с ними все должно сразу заработать. После установки Squid запустите его из менеджера служб вашего дистрибутива и расскажите о нем своему браузеру. Установите адрес прокси-сервера в доменное имя или IP-адрес компьютера, на котором запущен Squid (или в localhost, если это ваша локальная машина), а номер порта – в 3128 (вариант Squid по умолчанию). Squid прячет кэшированные файлы в каталоге /var/cache/squid/ – следующая команда покажет, сколько дисковой памяти он сейчас использует (пока не очень много, ибо вы еще ничего не поместили в кэш):
du -sh /var/cache/squid/
Теперь откройте несколько сайтов и снова выполните команду. Вы должны увидеть, что используется больше места, то есть Squid закэшировал текст и картинки для только что просмотренных страниц.
Итак, прокси-сервер запущен; зададим необходимые настройки в ПО, которое с ним работает. Для начала сделайте это во всех браузерах. Впрочем, браузеры – не единственные программы, загружающие данные по HTTP или FTP (Squid обрабатывает и FTP-запросы): менеджеры пакетов тоже качают немало, и если на нескольких компьютерах установлен один и тот же дистрибутив, то одни и те же пакеты будут загружаться снова и снова, что, конечно, нежелательно. В некоторых менеджерах пакетов, например, Synaptic, можно задать прокси-сервер в настройках, но также можно установить переменные окружения, используемые большинством утилит командной строки (а все графические менеджеры пакетов полагаются на эти утилиты). Нужно установить значения двух переменных http_proxy и ftp_proxy (имена в нижнем регистре) в http://ваш.прокси.сервер:3128. Как это сделать, зависит от дистрибутива. В некоторых системах есть соответствующая опция в параметрах сети, в других нужно добавить пару строк в файл /etc/profile.d:
export http_proxy=http://your.proxy.server:3128 export ftp_proxy=http://your.proxy.server:3128
Тонкая настройка
Ну вот, Squid работает, и можно подкрутить еще кое-что. Основные опции, которые нужно проверить – это http_port (номер порта, который слушает Squid; по умолчанию 3128) и cache_dir (каталог, где Squid будет хранить кэшированные данные). Последний параметр также определяет тип хранилища и максимальный размер. По умолчанию это:
cache_dir ufs /var/cache/ squid 100 16 256
что означает стандартный метод хранения (ufs) в каталоге /var/cache/squid с максимальным размером в 100 МБ. Максимальный размер должен быть несколько меньше объема доступного места, чтобы избежать фрагментации файловой системы. Однако чрезмерно большой кэш может оказаться медленным, и при этом хранить такие старые файлы, которые уже никогда не будут востребованы повторно.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Остальные два числа – количество каталогов и подкаталогов, используемых для хранения данных – лучше оставить как есть. Существуют и другие типы хранилищ, но они опять же для более продвинутого использования. Например, diskd более эффективен, когда объем трафика большой, но работает медленнее, когда трафик умеренный. Также нужно установить в cache_mgr адрес электронной почты, куда будут отправляться сообщения о серьезных ошибках.
Кэш Squid также можно установить перед сервером или кластером серверов, снизив их загрузку и увеличив производительность, но это выходит за рамки наших четырех страниц.
Кто идет куда?
Прокси-серверы – мишень для неавторизованного использования. Если доступ на некий сайт блокирован брандмауэром (например, в компании, не желающей истратить весь свой месячный трафик на YouTube), пользователи могут попытаться найти открытый прокси-сервер, подключиться к нему и получить доступ к заблокированным сайтам. Предотвратить это можно двумя способами. Простейший – запретить доступ к прокси-серверу с любого компьютера вне локальной сети, закрыв порт 3128 на маршрутизаторе. Альтернативы – различные схемы аутентификации. Самая простая из них использует файл такого же формата, как .htpasswd в Apache, и добавить пользователей в него можно командой htpasswd:
htpasswd /etc/squid/passwd username
При первом запуске добавьте ключ -c, чтобы создать файл. После этого не указывайте -c снова, а то удалите существующие записи. Теперь добавьте в файл squid.conf следующие строки:
auth_param basic program /usr/libexec/ncsa_auth /etc/squid/passwd auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours
Они велят Squid запускать названную программу для аутентификации (/usr/libexec/ncsa_auth включена в Squid, хотя путь в вашем дистрибутиве может слегка отличаться) и разрешают поддерживать до пяти процессов (все остальные попытки аутентификации будут ждать своей очереди). Параметр realm – просто сообщение, выдаваемое Squid при запросе пароля, а последняя опция устанавливает период, в течение которого действительна сессия (время жизни). Если пользователям неохота каждый раз вводить имя и пароль, можно занести их в настройки прокси в браузере или в переменную окружения http_proxy в стандартном формате URL:
http://username:password@my.proxy.com:3128
Здесь мы лишь устанавливаем метод аутентификации. Мы еще не требуем ни от кого войти в систему, за это отвечает секция ACL (Access Control List – список контроля доступа) файла squid.conf. Списки задаются с помощью ключевого слова acl, например:
acl lan src 192.168.0.0/24 acl users proxy_auth user1 user2 acl allusers proxy_auth REQUIRED
Каждая строка определяет правило ACL (второе слово задает имя правила, а последующие описывают его суть). Первое правило отвечает любому запросу, приходящему из сети 192.168.0.0/24, так что любой компьютер локальной сети будет ему соответствовать. Вторая строка соответствует заданным пользователям, при условии, что они ввели пароль и прошли аутентификацию в соответствии с auth_param. Третья строка похожа на вторую, за исключением опции REQUIRED, которая означает соответствие любому действительному пользователю. Теперь используем директиву http_access, чтобы применить эти правила.
http_access allow lan http_access allow users http_access deny all
Это разрешает доступ пользователям из списков lan или users и запрещает всем остальным. Таким образом, вы можете подключаться по локальной сети без пароля или извне с указанием пароля – все остальные не могут. Если запрос не соответствует ни одному из правил доступа, он считается соответствующим самому последнему из них, поэтому в общем случае лучше делать его правилом deny. Если это deny all, то никаких сомнений не остается, потому что он соответствует любому запросу, который забирается так далеко. Правила рассматриваются по порядку, и применяется первое совпадение, поэтому правило lan должно предшествовать users, иначе у пользователей локальной сети все равно будет запрашиваться пароль.
Прозрачный прокси
Squid может работать в прозрачном режиме, хотя тогда в аутентификации смысла нет. Это позволяет избежать необходимости ввода настроек прокси в браузере; все запросы будут восприняты и отправлены через него, несмотря ни на что. Для этого компьютер со Squid должен быть также и интернет-шлюзом, чтобы все запросы гарантированно проходили через него. Затем измените http_port в squid.conf на
http_port 80 transparent
Теперь все запросы для порта 80, достигающие этого компьютера, будут любезно пропущены через Squid.
Кто идет когда?
Мы рассмотрели далеко не все возможности списков ACL. В частности, они позволяют фильтровать запросы по различным критериям. Одна из интересных возможностей – правила со временем действия. Если вы не хотите ликвидировать доступ к сайтам социальных сетей полностью, а просто желаете, чтобы они не мешали работе, можно задать правила, блокирующие доступ к ним в рабочие часы, но не во время обеда или когда ребенок уже выполнил домашнее задание.
acl manager proxy_auth me acl lunchtime time MTWHF 12:30-1:30 acl weekend time SA acl social_networks dstdomain .facebook.com .twitter.com http_access allow me http_access deny social_networks !lunchtime !weekend http_access allow lan http_access deny all
Первая строка acl задает пользователя, который может обойти эти ограничения – вовсе не смешно самому оказаться за бортом, заблокировав заодно и себя. Следующие два правила определяют периоды времени, а последний acl содержит список доменов, доступ к которым будет блокироваться вне данных периодов. Первая строка access разрешает вам делать то, что вы хотите, тогда как в следующей строке несколько списков acl определяются в одном правиле доступа. В таком случае для срабатывания правила необходимо совпадение со всеми списками сразу. ! изменяет смысл запрета на противоположный, так что эта строка блокирует доступ к социальным сетям, если время не обеденное и день не выходной. Наконец, как и прежде, мы разрешаем доступ всем пользователям локальной сети и запрещаем всем остальным. Конечно, это простейшая настройка, но ее можно улучшить, добавив другие строки acl и http_access.
С приумножением правил конфигурационный файл станет неповоротливым. Есть несколько способов разбить его на части. В качестве аргумента правила acl могут принимать имя файла, содержащего параметры по одному в каждой строке. Поэтому строку social_networks можно заменить на
acl social_networks dstdomain /etc/squid/social_networks.acl
где указанный файл содержит строки
.facebook.com .twitter.com .thenextfad.com
Внутри squid.conf можно пользоваться директивой include, поэтому все правила acl можно поместить в отдельный файл и добавить строку
include /etc/squid/acl.conf
в squid.conf. Чтобы вы ни делали, тщательно комментируйте свои действия, иначе, заглянув в правила через полгода, вы едва ли поймете, что имели в виду.
Требования к серверу
Два основных критерия при оценке ресурсов, которые нужно выделить прокси-серверу – число запросов, которые он будет обрабатывать, и объем работы на каждый запрос. Обслуживать домашнюю сеть с несколькими пользователями и простейшим кэшированием способен и старый, маломощный компьютер, а для сети компании с большим количеством пользователей и фильтрацией, естественно, потребуется больше. Производительность процессора – не главное требование: важнее объем оперативной памяти и производительность диска, а также и отношение объема ОЗУ к объему жесткого диска. Чем больше каталог кэша, тем больше места потребуется для дисковых буферов, чтобы не уронить производительность.
Люди Squid (нет, это не персонажи второсортного фильма из 1950-х) рекомендуют сверх требований ОС иметь 32 МБ свободной памяти на каждый ГБ кэша. Понятно, что понадобится приличная сетевая скорость с не менее чем гигабитным соединением всех сетей, кроме самых маленьких.
Фильтрация содержимого
Squid умеет вызывать из своего конфигурационного файла другие программы – мы уже видели такой пример с аутентификацией, вызывающей программу /usr/libexec/ncsa_auth. Это означает, что к Squid можно прицепить различные средства фильтрации и блокировать доступ к нежелательному содержимому. Альтернативный подход – заставить программу фильтрации обращаться к Squid. Так работает DansGuardian (http://dansguardian.org). DansGuardian блокирует доступ различными способами, включающими черный список URL-адресов и доменов и фильтр содержимого. Последний анализирует содержимое web-страницы, прежде чем решить, передавать ее или нет. В этом отношении он похож на спам-фильтр. У обоих методов есть преимущества и недостатки, а их сочетание обеспечивает надежную защиту.
Установите DansGuardian обычным способом (из менеджера пакетов дистрибутива); значения по умолчанию в его конфигурационном файле /etc/dansguardian/dansguardian.conf весьма разумны. Возможно, они покажутся вам чересчур ограничивающими, но файл хорошо закомментирован, и нетрудно сообразить, как расширить доступ. Самые важные строки в нем –
filterip = filterport = 8080 proxyip = 127.0.0.1 proxyport = 3128 language = ‘russian’ contentscanner = ‘/etc/dansguardian/contentscanners/clamdscan.conf’
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Первая задает IP-адрес, на котором работать DansGuardian; оставьте его пустым, чтобы слушать на всех сетевых интерфейсах. Чтобы определить более одного адреса, указывайте каждый новый на отдельной строке со своим filterip. Параметр filterport – порт, который прослушивает DansGuardian. Следующие две строки – это IP-адрес и порт сервера Squid, откуда ясно, что DansGuardian и Squid могут работать на отдельных компьютерах, хотя это увеличивает сетевой трафик. Параметр language задает язык, используемый на web-странице, возвращаемой DansGuardian как оповещение о блокировке запрошенного документа.
Последняя строка – установка по умолчанию, но не исключено, что вам захочется ее закомментировать. Она велит DansGuardian прогонять каждый объект через ClamAV для проверки на вирусы, но вот беда: перед передачей ClamAV файл нужно загрузить полностью, а это исключает потоковую передачу данных. Удовлетворившись настройкой, запустите программу с помощью менеджера сервисов дистрибутива и настройте ее старт при загрузке системы.
Вам также потребуется изменить настройки прокси в браузерах, так как теперь запросы должны приходить на порт 8080, откуда они будут перенаправлены к Squid на порт 3128. Если вы уже настроили несколько компьютеров на использование Squid на порту 3128, быстрое и простое решение – изменить порт Squid на что-то другое. Укажите это в dansguardian.conf и заставьте DansGuardian слушать порт 3128. Номера портов не являются неприкосновенными, хотя для прокси обычно используются эти два.
Если к DansGuardian или к Squid подключиться не удается, сначала загляните в файл системного журнала на сервере. Например, с некоторыми настройками ядра DansGuardian может выдать ошибку «Failed to get client’s original destination IP» («Не могу получить исходный IP-адрес клиента»); тогда нужно установить параметр originalip=off в dansguardian.conf.
Теперь у вас должен быть рабочий прокси-сервер, который разгрузит канал, ускорит просмотр сайтов и позволит вам указывать, кому, когда и куда ходить. И в Squid, и в DansGuardian есть масса возможностей, которых мы не коснулись, и подробную информацию о том, как еще подправить их густо закомментированные файлы конфигурации, можно найти в разделе документации соответствующих сайтов. LXF