Дельта синхронизация без облака

Ранее мы показывали разные способы синхронизации криптодиска между ПК и Android-устройством.

Смотрим плавность хода с помощью BMW Rheingold

Всем знакома ситуация, когда двигатель немного "троит", но пропусков зажигания нет...

Дельта-синхронизация крипто-дисков

Существуют разные способы зашифровать "облако". Один из них - поместить в облако крипто-диск. В предыдущей статье мы писали, почему это не всегда удобно.

Облачный хостинг VDS за 2 минуты

Настоящий облачный VDS-хостинг от UltraVDS: тестируем производительность

Базовая настройка SQUID


Денис Колисниченко

Эта статья предназначена для тех, кому нужно быстро настроить SQUID в своей локальной сети на шлюзе для выхода в Интернет.

Что такое SQUID?

SQUID - это программа, которая получает http/ftp запросы клиентов и по ним обращается к ресурсам Интернет. Применение прокси-сервера (squid) дает возможность использовать фиктивные IP-адреса во внутренней сети (Masquerading), увеличивает скорость обработки запроса при повторном обращении (кэширование), обеспечивает дополнительную безопасность.

Нет смысла устанавливать прокси на своей домашней машине, так как функции кэширования выполняет броузер. Прокси-сервер стоит применять лишь в том случае, если в вашей сети три-четыре компьютера, которым нужен выход в Интернет. В этом случае запрос от броузера к прокси-серверу обрабатывается быстрее, чем от прокси к ресурсам Интернет, и таким образом увеличивается производительность. К тому же, мы можем смело установить размер кэша в броузерах клиентов равным нулю.

Установка SQUID

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

dnf install squid

Исходники можно получить по адресу ftp://ftp.squid.org. Для распаковки исходных кодов, выполните следующие команды:

cd /usr/src/
gunzip squid-версия-src.tar.gz
tar xvf squid-версия-src.tar.gz
cd squid

Теперь перейдем непосредственно к установке:

./configure --prefix=/usr/local/squid
make all
make install

Squid будет установлен в каталог, заданный ключом prefix - /usr/local/squid.

Помимо prefix можно пользоваться следующими ключами:

Ключ Описание
--enable-icmp  >измерять путь до каждого HTTP-сервера при запросах с помощью ICMP
--enable-snmp  включить SNMP-мониторинг
--enable-delay-pools  управление трафиком
--disable-wccp  отключить Web Cache Coordination Protocol
--enable-kill-parent-hack  более корректный shutdown
--enable-splaytree  позволяет увеличить скорость обработки ACL

Настройка Squid

Squid использует файл конфигурации squid.conf. Обычно он располагается в каталоге /etc/squid (или /usr/local/squid/etc -более ранние версии).  Открываем его в любом текстовом редакторе, например, joe /usr/local/squid/etc/squid.conf

Укажем прокси провайдера

cache_peer proxy.isp.ru

В данном случает proxy.isp.ru становится нашим "соседом" (neighbour, peer)

Установим объем памяти, доступный squid, и каталог для кэша.
cache_mem 65536
cache_dir /usr/local/squid/cache 1024 16 256

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

Укажем хосты, с которых разрешен доступ к прокси
         acl allowed_hosts src 192.168.1.0/255.255.255.0
         acl localhost src 127.0.0.1/255.255.255.255

разрешенные SSL порты: acl SSL_ports port 443 563

запретим метод CONNECT для всех портов, кроме указанных в acl SSL_ports:
       http_access deny CONNECT !SSL_ports

и запретим доступ всем, кроме тех, кому можно:
        http_access allow localhost
        http_access allow allowed_hosts
        http_access allow SSL_ports http_access deny all

пропишем пользователей, которым разрешено пользоваться squid (den, admin, developer):
        ident_lookup on
        acl allowed_users user den admin developer
        http_access allow allowed_users
        http_access deny all

Тэги maxium_object_size и maxium_object устанавливают ограничения на размер передаваемых объектов.

Ниже приведен пример запрета доступа к любому URL, который соответстует шаблону games и разрешения
доступа ко всем остальным
           acl GaMS url_regex games
           http_access deny GaMS
           http_access allow all

Запуск SQUID

Теперь, когда мы выполнили базовую настройку SQUID, его нужно запустить:
/usr/local/squid/bin/squid -z

Параметр -z нужен для создания (обнуления) каталога, содержащего кэш.
Обычно параметр -z нужен только при первом запуске.

Полезные параметры:
 

Параметр Описание
-a порт для входящих HTTP-запросов
-d отладка (на stderr)
-f  имя файла конфигурации
-h help :-)
-k reconfigure посылка сигнала HUP
-k shutdown завершение работы прокси
-k kill завершение без закрытия журналов
-u порт для входящих ICP запросов
-v version
-D не делать DNS-тест при запускей
-N не становиться демоном (фоновым процессом)
-Y более быстрое восстановление после сбоев

Формат файла squid.conf

Параметры сети

http_port 3128
Порт для запросов клиентов

icp_port 3130
Если соседей (peer) нет, установите icp_port 0

htcp_port 4827
Порт для общения с соседями - ICP - через TCP. При использования
этого параметра нужно установить ключ --enable-htcp при установке

tcp_incoming_address 0.0.0.0
Указывает по какому адресу принимать входные пакеты, если хост имеет
несколько интерфейсов. В версии 2.3 этого параметра нет

tcp_outgoing_address 0.0.0.0
При посылке ставить указанный адрес в качестве исходного

udp_outgoing_address 0.0.0.0 (аналогично, для ICP)
То же, но для ICP

udp_incoming_address 0.0.0.0
То же, но для ICP (при приеме)

passive_ftp on | off
По умолчанию включен, но если squid за firewall, надо выключить

Соседи

cache_peer hostname type proxy-port icp-port options
Каждый сосед прописывается отдельной строкой.

  • hostname - имя соседа
  • type - parent - старший, sibling - одного уровня.
Parent - при отсутствии запроса в локальном кэше, он перенаправляется к parent, тот, если
запроса не окажется в его кэше, пересылает его дальше и т.д. Возвращает готовый ответ
подчиненному. Если squid получает TCP_DENIED от parent, то обращается к ресурсу напрямую.

sibling - при отсутствии запроса в локальном кэше, запрос перенаправляется в sibling, при отсутствии
запроса в нем, возвращает сообщение об этом, никаких дополнительных действий не предпринимается.

Управление кэшем

cache_swap_high число
При достижение этого уровня заполнения кэша ( в процентном соотношении) начинается ускоренный
процесс удаления старых объектов.

cache_swap_low 90
Процесс удаления прекращается при достижении этого уровня.

maximum_object_size 4096 KB
Максимальный размер кэшируемого объекта.

minimum_object_size 0 KB
Файлы меньшего размера не сохраняются

Протоколирование

cache_access_log /usr/local/squid/logs/access.log
Протоколируется каждый запрос к SQUID

cache_log /usr/local/squid/logs/cache.log
Журнал запусков процессов

cache_store_log /usr/local/squid/logs/store.log
Журнал записи объектов в кэш.

Если какой-то журнал вам не нужен, установите none вместо имении файла.

Параметры внешних программ

ftp_user email-адрес
Будет использоваться вместо пароля при анонимном доступе к ftp-серверам

cache_dns_program /usr/local/squid/bin/dnsserver

dns_nameservers список-IP-адресов
Используется вместо того списка DNS-серверов, который опреден в /etc/resolv.conf; по умолчанию - none

authenticate_program none
Позволяет производить аутентификацию клиентов, делающих запросы. Должен быть определен
ACL proxy_auth; традиционная программа аутентификация определена в

../auth_modules/NCSA authenticate_program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd

Списки ACL

ACL - определение списка доступа. Определяется так:

acl имя тип строка

Тип - это тип объекта, а строка - регулярное выражение. Можно использовать список
acl имя тип "имя файла" (по одному параметру в строке)

Типы:
 

src ip-address/netmask IP адрес клиентов
src addr1-addr2/netmask диапазон адресов
dst ip-address/netmask URL хостов
time [day-abbrevs] [h1:m1-h2:m2]  Время, где день это одна буква из SMTWHFA
port список портов
port port1-port2 диапазон портов
proto протокол - HTTP/FTP
method метод - GET/POST
browser [-i] regexp сравнивается заголовок User-Agent

[-i] - игнорируется регистр букв.

Параметры доступа

http_access allow|deny aclname
Разрешать доступ к прокси по HTTP

icp_access allow|deny aclname
Разрешать доступ к прокси по ICP

miss_access allow|deny aclname
Разрешить получать ответ MISS от нас.

cache_peer_access cache-host allow|deny aclname
Ограничить запросы к данному соседу - расширение для cache_peer_domain.

proxy_auth_realm Squid proxy-caching web server
Строка текста, которая будет выдана на экран клиента при запросе имени/пароля
доступа к кешу.

Параметры администрирования

cache_mgr email
Почтовый адрес, на который будет послано письмо, если squid перестанет функционировать.

cache_effective_user nobody
При запуске squid от имени root изменить UID на указанный

cache_effective_group nogroup
Аналогично для GID

visible_hostname имя-хоста
Это имя будет упоминаться в сообщениях об ошибках)

hostname_aliases имя
Список синонимов для нашего имени хоста

Отказ от рекламы

Вставьте эти строки в свой /usr/local/etc/squid/squid.conf:
acl good_url    url_regex     "/usr/local/etc/squid/acl/good_url"
acl bad_urlpath urlpath_regex "/usr/local/etc/squid/acl/bad_urlpath"
acl bad_url     url_regex     "/usr/local/etc/squid/acl/bad_url"

http_access deny bad_urlpath !good_url
http_access deny bad_url     !good_url

Соответственно нужно будет создать три файла: good_url, bad_url_path и bad_url.

В bad_url следует поместить "плохие" URL, например:
^http://.*doubleclick
^http://.*-ad.flycast.com/server/img/
^http://1000.stars.ru/cgi-bin/1000.cgi
^http://1000.stars.ru/cgi-bin/1000.cgi
^http://12.16.1.10/~web_ani/
...

В bad_url_path - "плохой" путь
88x31.*gif
88x31.*GIF
100x80.*gif
100x80.*GIF
100x100.*gif
100x100.*GIF
120x60.*gif
120x60.*GIF
179x69.*gif
193x72.*gif
468x60.*gif
...

Обычно такие имена имеют банеры.

Примеры файлов good_url, bad_url_path и bad_url можно взять здесь(5К).

Программы для учета трафика

Для мониторинга работы SQUID и вообще для учета трафика можно пользовать
программами:

sqmgrlog - http://www.ineparnet.com.br/orso/index.html
mrtg - http://www.switch.ch/misc/leinen/snmp/perl/
iptraf - http://dkws.narod.ru/linux/soft/iptraf-2.4.0.tar.gz
bandmin - http://www.bandmin.org
webalizer (анализ работы Apache) - http://www.mrunix.net/webalizer/