Squid – это популярный прокси-сервер, который используется в основном для кэширования часто запрашиваемого веб-контента, чтобы уменьшить время отклика страниц, а также для фильтрации сетевого трафика. Он поддерживает множество различных протоколов таких как HTTP, FTP, TLS, SSL, Internet Gopher и HTTPS. А еще эта штука может быть очень полезной при медленном интернет-соединении. Первоначально Squid был разработан как Unix демон, но потом было выпущено несколько портов для WIndows. Squid распространяется под лицензией GNU General Public License.
В этой инструкции вы узнаете как установить Squid в Ubuntu 16.04. Просто последовательно выполняйте эти инструкции и установка squid ubuntu не вызовет никаких проблем. Squid это довольно многофункциональная программа и мы не сможем охватить в этой статье все ее функции, но попытаемся рассмотреть основные, чтобы вы смогли ее полностью настроить и использовать. Начнем с установки.
Установка Squid в Ubuntu
Есть несколько способов установки Squid в Ubuntu, один из самых распространенных – установка из официальных репозиториев с помощью утилиты apt.
Сначала откройте терминал сочетанием клавиш Ctrl+Alt+T и обновите индекс пакетов:
sudo apt update
После обновления списка пакетов можно переходить к установке прокси-сервера просто выполните команду:
sudo apt install squid
Затем утилита спросит нужно ли продолжать установку, введите Y и дождитесь окончания загрузки и установки:
Затем можно переходить к настройке.
Настройка Squid
Конфигурационный файл сервера находится в директории /etc/squid. В зависимости от версии Squid название папки и самого файла может отличаться, например, /etc/squid3/squid.conf или /etc/squid/squid.conf. Все настройки находятся в этом файле. Давайте его рассмотрим.
Когда откроется файл вы увидите что то похожее:
Файл содержит несколько опций настроек, а также очень много документации по их использованию. Мы не будем трогать многие из них, но основные рассмотрим.
Контроль доступа
Сначала нам нужно настроить правила доступа клиентов к нашему прокси-серверу. Squid проектировался как программа для организаций и даже если вы используете его дома, настройка squid 3 тоже должна быть выполнена.
Для это используется acl список. это обычный список объектов, сейчас он вообще ничего не значит. Это могут быть ip адреса, порты и т д. Потом мы укажем программе что нужно делать с этим списком, разрешать или запрещать доступ. Синтаксис создания acl списка такой:
acl имя_списка тип_списка элемент_списка
Таких строк может быть несколько с одним именем и типом, из них получается список. Имя списка может быть произвольным, мы его еще будем использовать. Тип списка это намного интереснее. Может быть одним из:
- src – ip адрес откуда исходит соединение, адрес клиента;
- dst – ip адрес назначения соединения, адрес сервера, к которому хочет получить доступ клиент;
- dstdomain – домен назначения соединения;
- srcdomain – домен клиента;
- arp – MAC адрес сетевой карты клиента;
- time – время, когда выполняется соединение;
- port – порт, к которому пытается получить доступ клиент;
- proto – протокол, по которому устанавливается соединение;
- method – метод передачи данных, например, GET – передача данных HTTP, POST – передача данных форм в HTTP, CONNECT – запрос соединения с сервером;
- http_status – ответ сервера;
- browser – браузер клиента;
- url_regex – url адрес, к которому пытаются получить доступ.
Это далеко не все типы списков, но для начала хватит, а более подробная информация есть в том же конфигурационном файле.
Добавим список, для доступа к серверу из локальной сети:
acl localnet src 192.168.0.0/16
Создадим список Safe_ports, чтобы разрешить трафик на порты основных сетевых служб, а также незарегистрированные порты выше 1024:
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
Создадим еще два списка – SSL_ports и connect, чтобы разрешить использовать метод connect только для ssl соединений. Это запретит клиенту использовать другие прокси-серверы поверх нашего:
acl SSL_ports port 443
acl connect method CONNECT
Как я уже говорил, эти списки сами по себе ничего не значат и никак не влияют на работу сервера. Чтобы применить список нужно использовать директиву http_access. Ее синтаксис:
http_access действие имя_списка
Действие может быть allow (разрешить) или deny (запретить). теперь запретим доступ ко всем портам, кроме заданных в Safe_ports:
http_access deny !Safe_ports
Дальше запретим использование метода CONNECT кроме SSL соединений:
http_access deny Connect !SSL_ports
Теперь разрешим доступ из этого компьютера (acl список localhos предопределен):
http_access allow localhost
Разрешим доступ из локальной сети:
http_access allow localnet
И запретим все остальное:
http_access deny all
Другие настройки
Контроль доступа, это один из самых важных компонентов, но настройка squid ubuntu на этом незакончена. Есть еще много интересных параметров, мы рассмотрим только несколько из них:
http_port – задает ip адрес и порт, на котором будет работать программа. Можно запускать прокси только на этом компьютере такой конструкцией:
Или в локальной сети:
https_port – задает ip адрес и порт, на котором будут приниматься https соединения. Мы не рассматриваем работу с https в этой статье.
cache_mem – количество памяти, которая выделяется для кэширования объектов.
cache_dir – позволяет задать папку для хранения кэша. По умолчанию весь кэш хранится в оперативной памяти. Синтаксис:
cache_dir файловая_система папка размер_в_мб L1 L2
L1 и L2 – количество подпапок первого и второго уровня. Файловая система определяет каким образом данные будут писаться на диск. Например:
cache_dir aufs /var/spool/squid 100 16 256
coredump_dir – директория, в которую будет сохранен дамп памяти в случае ошибки.
refresh_pattern – очень интересный параметр, который позволяет продлить время жизни объектов в кэше. Синтаксис такой:
refresh_pattern -i регулярное_выражение минимальное_время процент максимальное_время параметры
- регулярное выражение – задает объекты, к которым нужно применять параметр;
- минимальное_время – время в минутах пока объект считается свежим;
- максимальное_время – максимальное время в минутах, пока объект будет свежим;
параметры могут быть такие:
- override-expire – игнорировать заголовок expire;
- override-lastmod – игнорировать последнюю дату изменения файла;
- reload-into-ims – вместо не кэшировать отправлять запрос If-Modified-Since;
- ignore-reload – игнорировать запросы клиента не кэшировать.
refresh_pattern -i .gif$ 43200 100% 43200 override-lastmod override-expire
Вам могут понадобиться и другие настройки после того, как установка squid ubuntu Будет завершена. Но они выходят за рамки этой статьи. Теперь сохраните изменения, закройте файл и перезагрузите Squid:
sudo service squid3 restart
Если эта команда вернет ошибку, попробуйте другую:
sudo service squid restart
Осталось проверить работу нашего прокси-сервера. Это можно сделать с помощью любого браузера. Откройте настройки браузера и выполните настройку прокси. Я покажу как это сделать в Mozilla Firefox. Если у вас другой браузер, например, Google Chrome думаю вы разберетесь как там настраивается прокси.
Настройка клиентской стороны
Откройте браузер, перейдите в Настройка –> Дополнительно –> Сеть. Затем нажмите Настройки в разделе Подключение и выберите настроить прокси вручную:
В поле HTTP прокси укажите IP адрес машины, на которой выполнялась установка Squid сервера, а в поле порт – номер порта 3128. Этот порт используется по умолчанию в Squid, но вы можете изменить номер порта с помощью /etc/squid/squid.conf
Нажмите ОК, и прокси начнет работать.
Выводы
В этой статье была рассмотрена установка и настройка squid ubuntu 16.04. Мы рассматривали только основные моменты, которые могут понадобиться каждому пользователю. Если вам нужна более тонкая настройка, такая как ограничение скорости и так далее, вам придется обратиться к документации программы. Если у вас остались вопросы, спрашивайте в комментариях!