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. Все настройки находятся в этом файле. Давайте его рассмотрим.
vim /etc/squid3/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 адрес, к которому пытаются получить доступ.
Это далеко не все типы списков, но для начала хватит, а более подробная информация есть в том же конфигурационном файле.
Добавим список, для доступа к серверу из локальной сети:
Создадим список Safe_ports, чтобы разрешить трафик на порты основных сетевых служб, а также незарегистрированные порты выше 1024:
Создадим еще два списка - SSL_ports и connect, чтобы разрешить использовать метод connect только для ssl соединений. Это запретит клиенту использовать другие прокси-серверы поверх нашего:
Как я уже говорил, эти списки сами по себе ничего не значат и никак не влияют на работу сервера. Чтобы применить список нужно использовать директиву http_access. Ее синтаксис:
Действие может быть allow (разрешить) или deny (запретить). теперь запретим доступ ко всем портам, кроме заданных в Safe_ports:
Дальше запретим использование метода CONNECT кроме SSL соединений:
Теперь разрешим доступ из этого компьютера (acl список localhos предопределен):
Разрешим доступ из локальной сети:
И запретим все остальное:
Другие настройки
Контроль доступа, это один из самых важных компонентов, но настройка squid ubuntu на этом незакончена. Есть еще много интересных параметров, мы рассмотрим только несколько из них:
http_port - задает ip адрес и порт, на котором будет работать программа. Можно запускать прокси только на этом компьютере такой конструкцией:
Или в локальной сети:
https_port - задает ip адрес и порт, на котором будут приниматься https соединения. Мы не рассматриваем работу с https в этой статье.
cache_mem - количество памяти, которая выделяется для кэширования объектов.
cache_dir - позволяет задать папку для хранения кэша. По умолчанию весь кэш хранится в оперативной памяти. Синтаксис:
cache_dir файловая_система папка размер_в_мб L1 L2
L1 и L2 - количество подпапок первого и второго уровня. Файловая система определяет каким образом данные будут писаться на диск. Например:
coredump_dir - директория, в которую будет сохранен дамп памяти в случае ошибки.
refresh_pattern - очень интересный параметр, который позволяет продлить время жизни объектов в кэше. Синтаксис такой:
refresh_pattern -i регулярное_выражение минимальное_время процент максимальное_время параметры
- регулярное выражение - задает объекты, к которым нужно применять параметр;
- минимальное_время - время в минутах пока объект считается свежим;
- максимальное_время - максимальное время в минутах, пока объект будет свежим;
параметры могут быть такие:
- override-expire - игнорировать заголовок expire;
- override-lastmod - игнорировать последнюю дату изменения файла;
- reload-into-ims - вместо не кэшировать отправлять запрос If-Modified-Since;
- ignore-reload - игнорировать запросы клиента не кэшировать.
Например:
Вам могут понадобиться и другие настройки после того, как установка 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. Мы рассматривали только основные моменты, которые могут понадобиться каждому пользователю. Если вам нужна более тонкая настройка, такая как ограничение скорости и так далее, вам придется обратиться к документации программы. Если у вас остались вопросы, спрашивайте в комментариях!
вода
Ни о чем
А мне понравилось, спасибо! Простыми словами и вкратце)
Спасибо большое. Эту статью прочел, как приквел, перед статьёй про proxy IPv6. Прям искренне благодарен за обе.
Здравствуйте! Спасибо за ваш сайт очень помогает!
Скажите а как можно обновить сквид с 3 на 4 версию?
Теоретически да, пакет уже есть для последней версии Ubuntu в её репозиториях. Про старые версии не знаю. Сам не пробовал, стоит ещё 3.5 на сервере. Ну и вам надо посмотреть изменения чтобы убедится что вашу конфигурацию ничего не сломает - https://fourdots.com/mirror/squid/archive/4/squid-4.0.4-RELEASENOTES.html
А какой командой это можно сделать? squid update?
Привет всем. А кто подскажет, какая конфигурация компа нужна для UBUNTU 14.04+ Squid 3 для раздачи инета на 60 машин? Спасибо.
"http_port - задает ip адрес и порт, на котором будет работать программа. Можно запускать прокси только на этом компьютере такой конструкцией:
http_port localhost:3218
Или в локальной сети:
http_port :3128"
1. Ничего не понял... поясните? "Можно запускать прокси только на этом компьютере" можно на другом? как понимать?
2. Что за выводы вы все время выводите? выводы из чего?
Или это шаблон вашего движка такой?... не впервый раз вижу и всегда думаю, что в последний раз сюда захожу... может лучше "Заключение" (в заключинии и т.п.) Все время кажется, что школьник пишет (так его научили в школе... "вывод")
Без обид надеюсь.
Если указано `localhost:3218`, то прокси сервер будет доступен только с текущего компьютера (по адресу localhost). Во втором варианте ограничение не установлено, а значит он будет доступен как для localhost, так и для других компьютеров сети.