Ubuntu squid: Установка Squid в Ubuntu 16.04
Установка Squid в Ubuntu 16.04
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 адрес, к которому пытаются получить доступ.
Это далеко не все типы списков, но для начала хватит, а более подробная информация есть в том же конфигурационном файле.
Добавим список, для доступа к серверу из локальной сети:
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 адрес и порт, на котором будет работать программа. Можно запускать прокси только на этом компьютере такой конструкцией:
http_port localhost:3218
Или в локальной сети:
http_port :3128
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. Мы рассматривали только основные моменты, которые могут понадобиться каждому пользователю. Если вам нужна более тонкая настройка, такая как ограничение скорости и так далее, вам придется обратиться к документации программы. Если у вас остались вопросы, спрашивайте в комментариях!
Оцените статью:
Загрузка…
🐎 Как настроить общесистемный прокси в Ubuntu 18.04 – Information Security Squad
В этом руководстве мы узнаем, как настроить общесистемный прокси в Ubuntu 18.04.
Представьте, что вы находитесь в локальной сетевой среде, где доступ к Интернету также возможен, если вы проходите через прокси-сервер.
Итак, в этом руководстве мы узнаем, как настроить общесистемные параметры прокси на вашем сервере Ubuntu 18.04 или на настольном ПК, чтобы вы могли иметь доступ к Интернету.
Установка прокси на Ubuntu 18.04
Установить общесистемный прокси в Ubuntu 18.04 довольно простая задача.
Давайте посмотрим, как.
Установите общесистемный прокси с помощью переменных среды
Одним из способов настройки общесистемных параметров прокси в системе Ubuntu 18.04 является использование переменных среды, особенно если вы используете сервер без монитора.
Переменные среды прокси зависят от обработчиков протокола, используемых вашим прокси-сервером.
Это может быть http, https, ftp или socks.
Следовательно, чтобы установить переменные среды http или https, используйте команду export.
export http_proxy=http://192.168.43.100:3128
export https_proxy=https://192.168.43.100:3128
Обратите внимание, что команда export временно устанавливает переменные среды, которые являются постоянными только в оболочке, в которой вы создали переменную, и у пользователя, который ее создал.
Эй, вы хотите узнать, как настроить прокси Squid?
Проверьте ссылки ниже:
Чтобы настроить переменные среды прокси для применения ко всем системным пользователям или постоянным для всех оболочек, вы можете добавить эти строки в /etc/environment.
echo -e "http_proxy=http://192.168.43.100:3128/\nhttps_proxy=https://192.168.43.100:3128/" | sudo tee -a /etc/environment
http_proxy=http://192.168.43.100:3128/ https_proxy=https://192.168.43.100:3128/
Обратите внимание, что эти параметры вступят в силу только при повторном входе в систему, так как /etc/environment читается при авторизации.
Однако вы все равно можете использовать команду netplan, чтобы применить настройки.
sudo netplan apply
Чтобы проверить, попробуйте загрузить что-нибудь из терминала или запустить обновление системы.
Вы увидите, что соединения происходят через прокси-сервер.
wget google.com --2019-03-23 12:34:05-- http://google. com/ Connecting to 192.168.43.100:3128...
sudo apt update 0% [Connecting to 192.168.43.100 (192.168.43.100)] [Connecting to 192.168.43.100 (192.168.43.100)]...
Чтобы настроить параметры прокси-сервера только для APT, вы можете просто создать файл конфигурации прокси в /etc/apt/apt.conf.d/.
echo -e 'Acquire::http::Proxy "http://192.168.43.100:3128/";\nAcquire::https::Proxy "https://192.168.43.100:3128/";' | sudo tee /etc/apt/apt.conf.d/02proxy
Acquire::http::Proxy "http://192.168.43.100:3128/"; Acquire::https::Proxy "https://192.168.43.100:3128/";
Если ваш прокси-сервер требует аутентификации по имени пользователя и паролю, переменные среды будут установлены следующим образом;
http_proxy=http://Username:Password@192.168.43.100:3128/ https_proxy=https://Username:Password@192.168.43.100:3128/
Для APT;
Acquire::http::Proxy "http://Username:Password@192. 168.43.100:3128/"; Acquire::https::Proxy "https://Username:Password@192.168.43.100:3128/";
Если вы хотите запустить команду через прокси, вы можете добавить команду apt к настройкам прокси, как показано ниже;
sudo 'http_proxy=http://192.168.43.100:3128' apt update
или
sudo 'http_proxy=http://Username:[email protected]:3128' apt update
Настройка системного прокси в Ubuntu 18.04 через Сетевые настройки
Вы также можете установить системный прокси в настройках сети рабочего стола Ubuntu 18.04.
Однако это может не распространяться на всю систему. Прокси по умолчанию отключен.
Следовательно, нажмите значок настроек и выберите “настроить самостоятельно”.
Введите сведения о прокси-сервере, IP-адрес и порт.
После этого закройте значок настроек.
Это все о том, как настроить общесистемный прокси в Ubuntu 18.04.
Контентная фильтрация в школе на основе Ubuntu 18. 04 и прозрачного Squid, с интеграцией в сеть на MikroTik и не только
1. Введение
Тема контентной фильтрации в школах достаточно заезженная и по ней полно информации, но она уже достаточно устарела, в связи с переходом множества сайтов на защищенный протокол HTTPS, с которым не работает большинство предлагаемых решений. Поэтому я решил написать максимально полную статью от А до Я собрав воедино всю информацию, найденною мной на просторах Гугля. Статья рассчитана на базовые знания в сфере администрирования и подойдет для учителей информатики.
2. Техническое задание
Дано: 436-ФЗ и школа, в которой множество компьютеров, объединенных в сеть и подключенных к интернету через роутер MikroTik или любой другой.
Задача: сделать контентную фильтрацию HTTP и HTTPS по белому списку для всех, кроме себя любимого и управления школы.
3. Решение задачи
Был найден неиспользуемый стационарный компьютер с двух-ядерным Intel-ом, 1 Гб ОЗУ и жестким на 80 Gb.
Для решения будет сделано следующее:
- Установлена Linux Ubuntu Server 18.04 LTS
- На сервер установлен и настроен прозрачный Proxy Squid, собранный из исходных кодов с поддержкой HTTPS.
- Интеграция сервера в подсеть, путем перенаправления запросов на Proxy или альтернативным вариантом (в самом конце)
Начнем.
3.1. Установка и настройка Ubuntu 18.04
Процесс установки прост. Качаем дистрибутив Ubuntu Server 18.04 с официального сайта. Рекомендую качать со старым установщиком, так как новый, лично у меня, ушел в бесконечную загрузку во время установки. Записываем образ на флешку/диск любым удобным способом. Для записи на флешку рекомендую использовать Rufus и в начале записи выбрать «Запись DD-образа». Далее, следуя информации на экране, устанавливаем систему. Остановимся только на выборе компонентов, где можно выбрать сразу OpenSSH и всё. Нам много не нужно, а что нужно, установим сами.
Итак, Ubuntu установлена. Сеть, если у вас DHCP, уже настроена. Войдем в режим суперпользователя, чтобы каждый раз не добавлять sudo к командам.
sudo -s
Введем свой пароль и обновим систему.
apt-get update
apt-get upgrade
Установим текстовый редактор и файловый менеджер.
apt-get install nano mc
Чтобы сохранить файл в nano, необходимо нажать Ctrl+O и следом Y. Выход из редактора осуществляется нажатием Ctrl+X. Можно сохранить файл сразу перед выходом, нажав Ctrl+X и следом Y.
Чтобы открыть файловый менеджер, введите mc. Откроется типичный DOS-овский NortonCommander или в Windows TotalCommander/FAR с двумя панелями. Хотя я привык работать с консолью, файловый менеджер тоже иногда помогает, например, найти нужный файл быстрее.
Если же у вас не DHCP или вы хотите отдельный IP-адрес для своего сервера, как этого захотел я, то перейдем к настройке.
Настройка статического IP-адресаВ отличии от предыдущих версий Ubuntu, в новой 18. 04 сеть настраивается уже не в привычном всем нам /etc/network/interfaces, а через netplan в файле /etc/netplan/*.yaml. Файл может называться по разному, но он там один. Сам же /etc/network/interfaces пишет нам следующее:
Также, если вы захотите обновиться с версии старше до 18.04, настройки сети останутся там, где и были. Netplan актуален только для чистой установки 18.04.
Приступим, все-таки, к настройке сети.
Для начала посмотрим название сетевого интерфейса, присвоенное ОС, и запомним его.
ifconfig
Теперь откроем файл с настройками.
nano /etc/netplan/*.yaml
В нем уже должна быть настройка DHCP. Приведем файл к следующему виду.
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
название сетевого интерфейса:
dhcp4: no
dhcp6: no
addresses: [адрес/24]
gateway4: шлюз
nameservers:
addresses: [77. 88.8.7, 77.88.8.3]
Вписываем свои интерфейс, адрес и шлюз. DNS рекомендую оставить эти — Яндекс.DNS Детский будет как дополнительная защита. Такой же DNS настроен у меня в роутере. В любом случае, необходимо указывать тот DNS, который раздает роутер.
Здесь необходимо обратить внимание на пробелы (именно пробелы, а не табуляция). Каждый, своего рода, пункт отделяется от предыдущего пробелом. К примеру, если после nameservers строку addresses не отделить пробелом, а выровнять со строкой выше, то, при попытке применения настроек, netplan выдаст ошибку.
Применим настройки.
netplan apply
Перезагрузим сервер, на всякий случай.
reboot
Также, добавил альтернативный вариант настройки сети, как для DHCP, так и для статического IP, если не устраивает netplan.
Альтернативный вариант настройки сетиВ Ubuntu 18.04 можно вернуться к привычному варианту настройки сети через /etc/network/interfaces. Для этого в самом файле указано, что нужно установить утилиту ifupdown. Установим ее:
apt-get install ifupdown
Теперь откроем файл изначальных настроек в netplan
nano /etc/netplan/*.yaml
и закомментируем все его содержимое, чтобы не было конфликтов.
Далее откроем файл настроек сети
nano /etc/network/interfaces
И добавим в него:
для статического IP-адреса
auto название_вашего_сетевого_интерфейса
iface название_вашего_сетевого_интерфейса inet static
address IP-адрес
netmask Маска
gateway Шлюз
dns-nameservers 77.88.8.7 77.88.8.3
для динамического (DHCP)
auto название_вашего_сетевого_интерфейса
iface название_вашего_сетевого_интерфейса inet dhcp
Перезагрузим сервер
reboot
Если используете этот вариант настройки сети, то далее, в настройках Firewall, можете отказаться вообще от Webmin и использовать вариант настройки под спойлером (хотя вариант с Webmin тоже будет работать)
Теперь необходимо включить прохождение пакетов сквозь наш сервер. Открываем файл /etc/sysctl.conf
nano /etc/sysctl.conf
Ищем в нем строку net.ipv4.ip_forward=1 и раскомментируем ее. Если стоит значение 0, то меняем на 1.
Введем команду для применения настройки
sysctl -p /etc/sysctl.conf
После настройки сети, рекомендую перейти сразу в терминал, и продолжать работу уже в нем. Для этого, если вы не выбрали на этапе установки OpenSSH, установим его.
apt-get install ssh
По умолчанию SSH уже настроен на вход по пользователю/паролю на 22 порте, но вы можете настроить его для себя через, например, ключ авторизации и с другим портом в целях защиты сервера от атак извне. Как это сделать полно информации в интернете.
В качестве терминала я использую XShell. Вы можете использовать тот, который вам больше по душе.
DHCP-сервер и вторая сетевая карта нам не нужны, так как мы будем перенаправлять запросы пользователей на наш Proxy с помощью самого роутера.
Основа заложена. Теперь перейдем к установке и настройке Squid.
3.2. Установка и настройка Squid c поддержкой HTTPS и фильтрация по спискам
3.2.1. Сборка и установка Squid
Так как в репозиториях нет готового пакета Squid с поддержкой SSL, то придется собрать его вручную из исходников. Для начала откроем файл с репозиториями.
nano /etc/apt/sources.list
В нем раскомментируем (удалим # в начале) строки, начинающиеся с deb-src.
После этого обновим пакеты.
apt-get update
Далее установим инструменты для сборки.
apt-get install fakeroot build-essential devscripts
И добавим все необходимые пакеты для сборки.
apt-get build-dep squid3
Установим библиотеку для поддержки SSL.
apt-get install libssl1.0-dev
Перейдем в домашнюю папку и создадим папку для сборки, сразу установив на нее нужные права.
cd ~
mkdir build
chown _apt:root build
Перейдем в созданную папку и скачаем исходники Squid.
cd build
apt-get source squid3
В папке build появится папка с именем squid3 и номером релиза. В Ubuntu 18.04.3 это 3.5.27. Перейдем в нее.
cd squid3-3.5.27
Перед сборкой необходимо указать опции. Откроем файл с ними.
nano debian/rules
Ищем перечисление опций, как на картинке
Добавляем следующие опции.
--enable-ssl \
--enable-ssl-crt
Ubuntu → Настройка прокси-сервера SQUID+простой контент фильтр на Ubuntu Server 10.04 / 10.10
Использование прокси серверов оправдано в локальный сетях в том случае, если скорость соединения не очень высока или есть необходимость контролировать работу сотрудников в интернет-в общем под эти требования можно подогнать, в принципе, любые задачи. Короче, прокси-серверу быть!
SQUID считается огромным монстром, но если его освоить, то он работает как часы, даже в крупных сетях. С его помощью можно крутить сетевые запросы пользователей так, что неподготовленному человеку становится дурно от избытка информации. Переходим от слов к делу.
В этой статье я постараюсь рассказать как настроить кеширующий прокси-сервер для локальной сети, дополнительной возможностью блокировки сайтов, взрослой тематики.
Установка сервера проста до безобразия:
sudo apt-get install squid
Правим файл конфигурации:
sudo nano /etc/squid/squid.conf
По умолчанию SQUID использует для работы порт 3128, но нам необходимо сделать так чтобы не было необходимо перенастраивать каждого клиента, для этого необходимо использовать прозрачное проксирование, по этому нам в строку определяющую порт, необходимо добавить transparent, чтобы все конфиге это выглядело:
http_port 3128 transparent
Находим следующий блок:
#acl localnet src 10.0.0.0/24 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
Для повышения безопасности сервер будет обслуживать запросы только из локальной сети, IP адреса в моей локальной сети из диапазона 192. 168.1.0/24,
Где: 192.168.1.0-подсеть, /24-количество бит в маске-идентификаторе сети (255.255.255.0)
#acl localnet src 10.0.0.0/24 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.1.0/24 # RFC1918 possible internal network
Разрешаем доступ из localnet:
http_access allow localnet
Находим и раскоментируем, правило кеширования
cache_dir ufs /var/spool/squid 4096 32 256
Здесь все можно оставить как есть.
Если на сервер не много оперативной памяти-1Gb то имеет смысл установить лимит ее использования, нашим сервером. Нам необходимо найти и раскоментировать:
memory_pools on
memory_pools_limit 50 MB
50мб установлено по умолчанию, у меня используется это значение-вполне нормально работает.
Для уведомления пользователей об ошибках можно установить страницу ошибок на русском задается она в параметре error_directory и установить кодировку Windows-1251, для желающих можно зайти в директроию /usr/share/squid/errors/ и там посмотреть список папок.
error_directory /usr/share/squid/errors/Russian-1251
На этом основная настройка закончена, сохраняем изменения выходим.
Нам необходимо перестроить кеш который хранится в /usr/sbin/squid
sudo /usr/sbin/squid -z
sudo /etc/init.d/squid start
Технически сервер работает и готов к использованию и данной, минимальной конфигурации, вполне хватит для тестов, но он висит на порту 3128 к которому http запросы никаким образом не попадают, для этого нам необходимо завернуть порт 80 и 8080 на 3128 где их примет Squid и обработает.
Лезем в файл rc.local
sudo nano /etc/rc.local
В локальную сеть у меня смотрит интерфейс eth3 IP которого 192.168.1.1
В сеть провайдера eth2, из этих условий вытекает то что указано ниже:
iptables -t nat -A PREROUTING -i eth3 ! -d 192.168.1.0/24 -p tcp -m multiport --dports 80,8080 -j DNAT --to-destination 192.168.1.1:3128
Добавляем это в rc. local заменив IP адрес шлюза на тот что используется в вашей сети.
Перезагружаем шлюз чтобы настройки применились, можно конечно перезапустить rc.local, но иногда возникают непонятные глюки, которые отнимают много времени. Намного быстрее перезагрузить систему!
Проверяем на любом клиентском ПК интернет должен работать, без дополнительных настроек браузера.
В целом кеширование данных передаваемых из сети, а также DNS запросов от пользователей, будет производиться, но нам необходимо заблокировать, некоторые сайты и создать нечто, похожее на контент-фильтр.
Собирать в «рукопашную» доменные адреса порников- довольно утомительное и неблагодарное занятие, быстрое гугление выдало базу URL адресов, которые были рассортированы по категориям, меня интересовала категория adult, база занимала 14Мб -для текстового файла, реально много, попытка скормить ее? как есть Squid, с треском провалилась прокси-сервер просто отказывался запускаться.
Пришлось немного поработать руками, были удалены дублирующиеся записи и домены находившиеся на бесплатных хостингах типа narod. ru, pochta.ru и прочих, т.к. размещение сайтов данной тематики, является нарушением условий использования, то они довольно быстро прибиваются администрацией этих ресурсов, зачастую, они там живут не более месяца, а места занимают много.
Для простоты обслуживания я их рассортировывал по доменным зонам com, ru, net, org. Для тех кто будет использовать мои наработки, то их можно копировать как есть, все названия и расширения из данной статьи сохранены.
В результате удалось сократить размер файла до 1,7Мб, конечно многое пришлось выкинуть, но на эффективность рабы это не сильно повлияло.
Теперь нам необходимо добавить правила для заблокированных сайтов
sudo nano /etc/squid/squid.conf
И добавляем туда следующее:
acl ru url_regex "/etc/squid/ru.acl"
acl com url_regex "/etc/squid/com.acl"
acl org url_regex "/etc/squid/org.acl"
acl net url_regex "/etc/squid/net.acl"
http_access deny ru
http_access deny com
http_access deny org
http_access deny net
Для тех кто использует файлы из архива, их достаточно скопировать в /etc/squid/.
Чтобы заблокировать сайт достаточно добавить его в один из файлов и перезагрузить squid.
Перезапускаем Squid:
sudo /etc/init.d/squid stop
sudo /etc/init.d/squid start
Пробуем перейти с клиентского ПК по первому попавшемуся адресу из списка, должны получить сообщение что доступ заблокирован-значит все сделано правильно.
! |
Squid ›Вики› ubuntuusers.de
Ausbaufähige Anleitung
Dieser Anleitung fehlen noch einige Informationen.Венн Дуэтвас
verbessern kannst, dann editiere den Beitrag, um die Qualität
des Wikis noch weiter zu verbessern.
Название: Bis auf die Authentifizierung funktioniert alles mit squid 3. Dies kann mittels htpasswd gelöst werden. (Weiter unten unter Authentifikation)
Dieser Artikel wurde für die folgenden
Ubuntu-Versionen getestet:
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Squid находится на прокси-сервере с открытым исходным кодом. Das heißt Daten, die aus dem Internet angefordert werden, speichert Squid local in einem Cache und lädt diese bei Bedarf aus dem Zwischenspeicher nach. Dadurch ist der Datentransfer effizienter, weil weniger Netzbelastung durch große Datenmengen erzeugt wird. Aber man kann durch den Einsatz von Filtern auch die Sicherheit des Netzes erhöhen.
Aus der Wikipedia: «Squid zeichnet sich vor allm durch seine gute Skalierbarkeit aus. Squid unterstützt die Netzwerkprotokolle HTTP / HTTPS, FTP через HTTP и Gopher.Er kann sowohl für sehr kleine Netze (5-10 пользователей), als auch für sehr große Proxyverbünde in Weitverkehrsnetzen mit mehreren hunderttausend Benutzern eingesetzt werden. . Dies betrifft zum einen die Cache-Strategie 🇩🇪 und zum anderen die Behandlung von heute überall im Internet verfügbaren Streaming-Angeboten (Музыка, видео, ТВ) (rechtliche Dinge, die das Mitschneiden von Streams betreffen).
Установка
В частности, Ubuntu представляет собой Squid версии 3. 0 / 3.1 vertreten.
Paketliste zum Kopieren:
sudo apt-get install squid
Oder mit apturl installieren, Link: apt: // squid
Nach der Installation ist Squid noch nicht lauffähig. Hat man Squid über ein Terminal [2] installiert, so werden beim Versuch, Squid zu starten, gleich Fehlermeldungen wie
* Перезапуск Squid HTTP прокси Squid * Создание структуры каталогов спула кальмара FATAL: не удалось определить полное имя хоста.Установите "visible_hostname"
ausgegeben. Das ist normal, denn Squid muss erst konfiguriert werden.
Dienst Steuern
Squid wird beim Systemstart automatisch gestartet und kann wie folgt gesteuert werden:
# Allgemein sudo service squid BEFEHL
wobei BEFEHL
start
, stop
oder --full-restart
sein kann.
Конфигурация
Wie schon in der Einleitung geschrieben, ist Squid nicht nur ein Programm für kleine Netze Zuhause oder in der Firma. Кальмар канн так кишки со всеми Einsatzzwecke abdecken. Dies hat leider zur Folge, dass die Konfiguration nicht sehr einfach ist. Allerdings sind die Grundfunktionen leicht zu konfigurieren, wenn man weiß, wo man ansetzen muss.
Sämtliche Konfigurationen werden in der Datei /etc/squid/squid.conf vorgenommen. Die Datei Kann Mit Einem Bellebigen Editor [3] bearbeitet werden. Allerdings benötigt man dazu wie bei allen Systemdateien Root-Rechte. Auch hier zeigt sich wieder die Bandbreite von Squid.Die Datei ist über 7959 Zeilen lang. Allerdings besteht der größte Teil aus Kommentaren.
Hinweis:
Die meisten der nachfolgenden Werte sind aus der Konfiguration von Squid 2.7 entnommen. Bei Squid 3.0 / 3.1 sind wesentlich höhere Werte voreingestellt. Das trägt der Tatsache Rechnung, dass die Hardware auch wesentlich leistungsfähiger geworden ist. Um Probleme zu vermeiden, sollte vor allem die Größe des Cache im Arbeitsspeicher geprüft und evtl. an die eigene Maschine angepasst werden.
Netzwerkport
Üblicherweise wartet Squid auf dem Port 3128
auf Anfragen. Bei Bedarf lässt sich der Port über die Option
# TAG: http_port http_port 3128
frei setzen. Wenn man Squid auf einem Router laufen hat, möchte man ihn vielleicht an die interne Schnittstelle binden, so dass er von außen nicht zu erreichen ist. Dafür setzt man der Port-Angabe einfach die IP-Adresse und einen Doppelpunkt voran:
http_port 192.168.0.1: 3128
Größe des Caches im Arbeitsspeicher
Je nachdem, wie viel RAM der Rechner zur Verfügung hat, kann man den Wert für das System anpassen. Zu beachten ist, dass Squid bei hoher Auslastung auch über diesen Wert hinaus geht. Dient der Rechner также использует HTTP-Proxy, поэтому он может быть на 20% меньше, чем Speichers angeben.
# TAG: cache_mem (байты) cache_mem 32 МБ
Макс. Größe gecachter Dateien
Ein relativ kleiner Wert führt zu höheren Objekt-Hitraten und damit in der Regel zu etwas besserer Geschwindigkeit. Ein höherer Wert führt zu einer höheren Byte-Hitrate und reduziert die nötige Bandbreite. Der Standardwert sind 20480 КБ. Je nach Bedarf kann dieser Wert variiert werden.
# TAG: maximum_object_size (байты) maximum_object_size 10000 КБ
Макс. Größe gecachter Dateien im RAM
Da RAM meistens die begehrteste Ressource ist, gibt man an, bis zu welcher Größe Dateien im RAM gehalten werden dürfen. Ein größerer Wert verbessert natürlich die Performance des Cache, wenn immer wieder die selben Daten angefordert werden.Gleichzeitig wird jedoch die Menge an Dateien, die im RAM vorgehalten werden können, reduziert.
# TAG: maximum_object_size_in_memory (байты) maximum_object_size_in_memory 32 КБ
Verfahren um Speicherplatz freizugeben
Wenn der Cache voll ist, muss entschieden werden, welche Daten gelöscht werden sollen und welche nicht. Dafür gibt es drei Strategien:
LRU
behält die zuletzt angefragten Objekte im Cache, unabhängig von Größe und Alter der Objekte (wird als Standard verwendet, angibt man nichts).heap GDSF
optimiert die Objekt-Hitrate. Kleine, häufig angefragte Objekte werden auf Kosten Großer, weniger häufig angefragter Objekte im Cache gehalten. Damit wird die Wahrscheinlichkeit eines Objekt-Hit gesteigert.heap LFUDA
optimiert die Byte-Hitrate. Häufig angefragte Objekte werden im Cache gehalten, selten angefragte werden freigegeben, unabhängig von deren Größe. Damit wird ein häufiger angefragtes, großes Objekt ggf.auf Kosten vieler kleiner Objekte im Cache gehalten. Damit steigt die Byte-Hitrate на Kosten der Objekt-Hitrate.
Man kann Strategien auch mischen. Es bietet sich an, für Objekte im Ram heap GDSF
zu verwenden und für Objekte im Festplatten-Cache heap LFUDA
. So wird ein ausgewogener Kompromiss zwischen schnellen Reaktionszeiten und Traffic-Sparen erreicht:
# TAG: cache_replacement_policy cache_replacement_policy куча LFUDA # ТЕГ: memory_replacement_policy memory_replacement_policy heap GDSF
Genereller Speicherort von Cache-Dateien
Bei Bedarf kann man noch Definieren, wo Squid die gecachten Datenablegen soll. Стандартный ist das Verzeichnis / var / spool / squid . Falls man hier anderes Verzeichnis benutzen will, so muss man darauf achten, dass der Benutzer proxy
, unter dem Squid läuft, auf dieses Verzeichnis Schreib- und Leserechte hat. Das Verzeichnis lässt sich über die Option
# TAG: cache_dir cache_dir ufs / var / spool / squid3 2000 16 256
бестиммен.
ufs
— ist das Standard Speichersystem von Squid. Unter Linux sollteaufs
verwendet werden, da es hier Schreibzugriffe beschleunigt./ var / spool / squid
— ist das gewählte Verzeichnis für den Squidcache2000
— gibt die Cache-Größe in MB an. Default-Wert sind 100 МБ. Dabei sollte man beachten, dass man diesen Eintrag nicht Believebig hoch setzen darf. Um so größer der Cache ist, um so mehr RAM braucht Squid. Кроме того, кэш-память объемом 40 ГБ, кроме того, вы можете использовать шляпу Festplattenplatz. Auch sollte man auf einer Перегородка mindestens 20% Platz frei lassen.16
— gibt an, wie viele Unterordner für Level1-Domains erstellt werden sollen. Wenn man diesen Wert verändert, muss der Cache gelöscht werden.256
— gibt an, wie viele Unterordner für Level2-Domains erstellt werden sollen. Auch bei diesem Wert muss der Cache gelöscht werden.
Hinweis:
Squid benutzt zusätzlich zur cache_mem
-Variable noch ca. 10-20 МБ на сайте Arbeitsspeicher pro GB belegtem Festplattenplatz.D.h. bei einer Cachegröße von 20 GB werden ca. 200 — 400 МБ zusätzlicher Arbeitsspeicher belegt. Hat man bei der Variable cache_mem
bereits 512 MB angegeben, so erhöht sich der gesamte Arbeitsspeicherbedarf bereits auf 712 — 912 MB. Es kann daher sehr schnell passieren, dass Squid Daten auf die SWAP-Partition auslagern muss. Somit wird der Proxy dementsprechend langsam, da er die Daten nicht mehr aus dem schnellen Arbeitsspeicher liet, sondern von der sehr langsamen Festplatte!
Angabe eines Expiziten Speicherorts für Log-Dateien
Man kann den Speicherort der Logs auch Expizit angeben.
Für die access.log sieht dann wie folgt aus, unter Angabe des Standardverzeichnisses.
# TAG: cache_access_log cache_access_log /var/log/squid/access.log
Für die cache.log так:
# TAG: cache_log cache_log /var/log/squid3/cache.log
Кэш löschen
Sollte aus irgendeinem Grund der Cache von Squid gelöscht werden, muss dafür Squid angehalten, der Löschbefehl abgesetzt und anschließend wieder gestartet werden.Bei der Verwendung von Squid 3.0 / 3.1 ist der Aufruf squid
durch squid3
zu ersetzen:
sudo /etc/init.d/squid stop sudo squid -z sudo /etc/init.d/squid start
Die ersten Seitenaufrufe gehen dann langsam, da der Cache erst wieder aufgebaut wird. Wenn man das vermeiden möchte, ruft man lokal oft benutzte Seiten ab. Dazu kann wget benutzt werden:
wget --cache = off -r http://meineSeite.de
Anschließend können die lokal übertragenen Dateien wieder gelöscht werden.
Datenschutz
Wenn die Privatsphäre der Clients bewahrt werden soll oder muss (z.B. Datenschutz в Unternehmen), kann hier eine Netzwerk-Maske Definiert werden, die dazu führt, dass die einzelnen Logfile-Einträgemordneter werden. Eine Netzwerk-Maske von 255.255.255.0 würde dazu führen, dass bei allen IP-Adressen in den Logfiles und der cachemgr-Ausgabe die letzte Stelle als «0» dargestellt wird. Beim Standardwert 255.255.255.255 wird die komplette Adresse angezeigt.
# TAG: client_netmask client_netmask 255.255.255.0
IP-адрес verbergen
В заданном месте Squid хранится собственный IP-адрес, содержащий прокси-сервер в заданной дате заголовка. Dieses kann man unterdrücken, wenn man folgende Einstellung vornimmt:
# ТЕГ: forwarded_for forwarded_for выкл
Selbstverständlich kann Squid seine eigene IP-Adresse nicht vor dem Ziel verbergen, so dass man nicht komplett anonym im Netz ist.Просмотрите, как человек из Squid в своей собственной сети Netz имеет шляпу, указывает на локальный IP-адрес, подключаемый к NAT-Router nicht mehr mitgesendet.
Нормальный отправитель Squid im Header HTTP_VIA seinen Versions-String mit, wie es in RFC2616 vorgeschrieben ist. Dies kann man mit folgenden Eintrag unterdrücken:
# ТЕГ: через via off
Authentifizierung
Hinweis:
Die Authentifizierung funktioniert nur mit einem Proxy, der normal angesprochen wird.Richtet man Squid als transparent Proxy ein, so ist eine Authentifizierung nicht möglich, da der Proxy ja nicht direkt vom Client aus angesprochen wird.
Eventuell möchte man, dass sich Benutzer am Squid-Proxy anmelden müssen, bevor sie über den Proxy auf das Internet zugreifen können. Dies ist sinnvoll, wenn z.B. unterschiedliche Nutzer verschiedene Rechte bekommen sollen. Так ist es z.B. möglich, dass einzelne Benutzer über Blacklist Definierte Webseiten nicht aufrufen können. Am einfachsten ist es, die vorhandenen Benutzer im System zur Authentifizierung am Squid-Proxy heranzuziehen.Dazu müssen die Zeilen
# TAG: auth_param auth_param основная программа / usr / lib / squid / pam_auth auth_param основные дети 5 auth_param basic realm Squid прокси-кеширующий веб-сервер auth_param basic credentialsttl 2 часа auth_param basic casesensitive off
aktiviert und / usr / lib / squid / pam_auth als Programme eingetragen werden. Als Zugriffsregel (s.u.) wäre dann
# TAG: http_access acl checkpw proxy_auth ТРЕБУЕТСЯ http_access разрешить проверку всех
nötig.Danach können Benutzer sich mit ihren Daten einloggen, die sie nutzen um sich lokal am Rechner anzumelden.
Рукавицы аутентификации htpasswd
Zuerst muss htpasswd über das Paket apache2-utils installiert werden.
Dann kann mit
sudo htpasswd -c /etc/squid/squid.passwd <имя_бенутцера>
Die Passwortdatei erstellt werden.
Weitere Benutzer hinzufügen bzw. Kennwort eines vorhandenen ändern:
sudo htpasswd / etc / squid / squid.passwd <(neuer) Benutzer>
Zusätzlich muss folgendes in der squid.conf stehen:
auth_param basic program / usr / lib / squid3 / basic_ncsa_auth /etc/squid/squid.passwd auth_param основные дети 5 auth_param базовая область Mein-Proxy auth_param basic credentialsttl 3 часа auth_param basic casesensitive off acl пользователи proxy_auth ТРЕБУЕТСЯ acl sectionx proxy_auth ТРЕБУЕТСЯ http_access разрешить пользователям
Zugriffslisten und -regeln (ACL)
Aus Sicherheitsgründen ist die Voreinstellung von Squid so, dass niemand Anfragen über den Proxy in das Internet schicken darf. Deshalb muss jeder Rechner bzw. jedes Netz Expizit freigegeben werden (siehe Beispiele), indem man Zugriffsrechte erteilt.
Für die Rechtevergabe muss zunächst die Zugriffs-Kontroll-Liste (Access Control List, ACL) Definiert werden. Anschließend wird über den Namen dieser ACL das Recht mit dem Schlüsselwort http_access
zugewiesen. Die Syntax einer ACL sieht allgemein so aus.
acl
Hinweis:
Die Reihenfolge der Freigaben ist entscheidend! Wurde zuerst ein http_access deny all
gesetzt, kann man darunter keinen Zugriff mehr einrichten.Daher sollten Freigaben möglichst am Anfang der squid.conf stehen.
In den Beispielen müssen die verwendeten IP-Adressen an die eigenen Verhältnisse angepasst werden.
Beispiele
Как и прежде, 1 wird die ACL-Regel freigegeben1
Definiert, die allen Benutzern und Rechnern aus dem Netz 192. 168.10. *
Zugang zum Internet erlauben würde.
# Beispiel 1: acl freigegeben1 SRC 192.168.10.0/255.255.255.0 http_access allow freigegeben1
Möglich ist auch die Angabe einer Teilmenge von Rechnern aus einem Netz: Hier als Beispiel 2 die ACL freigegeben2
, die allen Rechner mit den IPs 192.168.20.1 bis 192.168.20.99 den Zugriff gestatten würde.
# Beispiel 2: acl freigegeben2 SRC 192.168.20.1-192.168.20.99 http_access allow freigegeben2
Пример 3: Lediglich einzelne Rechner freigeben: Eine einfache Erlaubnis-Regel für die IP 192.168.30.1 (Имя ist hier testpc
).
# Beispiel 3: acl testpc SRC 192.168.30.1 http_access разрешить testpc
Имя хоста
Besitzt der Rechner, auf dem man Squid aufsetzt, keinen ordentlichen Namen inklusive Domäne (также z.б. rechner.foo.bar
; FQDN), так что kann man hier
# TAG: visible_hostname visible_hostname meinproxy
einen Namen einsetzen. Diese Option ist besonders wichtig, wenn wie oben genannt, Squid aufgrund eines не полностью квалифицированное имя хоста
nicht starten möchte.
Traffic über weiteren Proxy leiten
Um den gesamten Traffic von Squid zu einem anderen Proxy, beispielsweise Privoxy или Tor zu leiten, reicht folgender Eintrag:
# TAG: cache_peer cache_peer localhost родительский 8118 7 без запроса по умолчанию
Hierbei ist localhost
durch den Hostnamen des Proxyservers zu ersetzen, 8118
durch den entsprechenden Port.Zusätzlich muss noch dieser Eintrag gemacht werden:
# TAG: never_direct never_direct разрешить все
um wirklich den gesamten Traffic weiterzuleiten.
Somit könnte folgendes Szenario entstehen: Browser des Benutzers → Squid (Cache) → Privoxy (Werbefilter) → Tor (Anonymisierer) → WWW. Aber dies bleibt natürlich jedem selber überlassen.
Transparenter Proxy
Информация для экспертов:
Diese Konfiguration ist optional. Sie ist nur nötig, wenn der gesamte HTTP-Netzwerkverkehr über den Proxy geleitet werden soll, selbst wenn die Clients keinen Proxy eintragen.Aufgrund der nötigen Kenntnisse bezüglich iptables-Regeln ist dies nicht für Anfänger geeignet.
Прозрачный прокси-сервер является прокси-сервером, автономным сервером и автоматическим доступом к интернет-таблицам, через порт 80
(также http
) и удаленный интернет-фильтр. Das bedeutet, dass Benutzer im lokalen Netzwerk auf ihren Rechnern die Benutzung des Proxyserver nicht erst aktivieren müssen. Jeder Browser, Jedes Programm работает с прокси-сервером.Dazu müssen noch folgende Einstellungen in der squid.conf vorgenommen werden.
Конфигурация
Um Squid als transparent Proxy zu konfigurieren, muss nur ein zusätzlicher Параметр и матрица Option http_port
angehängt werden. Hier muss der Wert прозрачный
hinzugefügt werden.
# Squid обычно слушает порт 3128 http_port 3128 transparent
Iptable
Ubuntu: централизованный кеш пакетов apt с использованием squid-deb-proxy — Фабиан Ли: Software Architect
Обычно в защищенных производственных центрах обработки данных внутренние узлы вынуждены проходить через обратный прокси-сервер (например,грамм. Squid) для публичного доступа в Интернет. Та же концепция может быть применена к управлению пакетами apt, где настройка централизованного прокси-сервера пакетов обеспечивает кэширование, а также средства контроля безопасности.
В центре обработки данных, где у вас могут быть сотни экземпляров хоста, которым нужен один и тот же пакет / ядро / исправление безопасности, наличие кеша пакетов внутри вашей сети может значительно сэкономить пропускную способность сети и время оператора.
И точно так же, как интернет-прокси, который заносит в белый список только определенные домены, прокси-сервер пакета может иметь белый список подходящих репозиториев, а также черный список определенных пакетов.
В этой статье мы рассмотрим установку и настройку squid-deb-proxy, который представляет собой просто упаковку Squid3 с определенными настройками для кэширования пакетов. Поскольку большинство групп безопасности и эксплуатации уже знакомы с Squid, это упрощает получение утверждения развертывания по сравнению с другими решениями для кэширования пакетов.
Установить squid-deb-proxy
Этот пакет доступен из репозиториев Ubuntu, поэтому установка так же проста, как запуск apt-get, убедившись, что мы открыли брандмауэр для порта 8000, где будет работать служба.
$ sudo apt-get update -q $ sudo ufw allow 8000 / tcp $ sudo apt-get install squid-deb-proxy -y
Это устанавливает службу для squid на порт 3128, а также squid-deb-proxy на порт 8000, но нам действительно не нужна дополнительная служба squid, поэтому давайте отключим ее.
$ остановка кальмаров службы sudo # отключить службу от /etc/rc.* $ sudo update-rc.d -f squid удалить
Если вы используете Ubuntu 16.04 с Systemd, то помимо отключения с помощью update-rc.d выше, также отключите службу.
$ sudo systemctl disable -f squid.service
Теперь мы можем проверить, что только squid-deb-proxy работает на порту 8000, с помощью следующих команд:
$ ps -ef | grep squid-deb-прокси $ netstat -an | grep "LISTEN"
Кэшированные файлы хранятся в иерархии в «/ var / cache / squid-deb-proxy», что подтверждается следующим:
$ grep каталог_кэша /etc/squid-deb-proxy/squid-deb-proxy.conf каталог-кеша aufs / var / cache / squid-deb-proxy 40000 16 256
И служебные журналы находятся в «/ var / log / squid-deb-proxy».
Проверка клиента
С хоста squid-deb-proxy сначала проследите журналы, чтобы вы могли видеть действия клиента, которые будут происходить:
$ sudo chmod go + r + x / var / log / squid-deb-прокси -R $ cd / var / log / squid-deb-прокси $ tail -f access.log cache.log store.log
Из отдельного экземпляра ОС или даже того же хоста, если хотите, настройте apt так, чтобы он проходил через squid-deb-proxy на порту 8000, если он хочет загружать пакеты.
$ echo "Acquire :: http :: Proxy \" http: // 192.168.2.125: 8000 \ ";" | sudo tee /etc/apt/apt.conf.d/00proxy $ sudo apt-get update -q
На стороне клиента (при запуске «apt-get update») все должно быть прозрачным, и вы получите стандартный вывод, показывающий доступ к основным репозиториям Ubuntu.
Но со стороны сервера squid-deb-proxy вы должны увидеть вывод из access.log и store.log, показывающий извлечение из репозиториев, таких как «archive.ubutu.com».
Проверка кеша
Теперь давайте проверим, что squid-deb-proxy кэширует пакеты.Мы будем работать с пакетом curl с сайта .ubuntu.com. Вот как вы проверяете его источник в репозитории.
$ sudo apt-cache policy curl
Теперь удалите пакет, очистите локальный кеш .deb пакета, а затем переустановите его, что заставит squid-deb-proxy извлечь и кэшировать его.
$ sudo apt-get purge curl -y && sudo apt-get clean; sudo apt-get install curl -y
В консоли, где вы все еще отслеживаете три журнала, вы должны увидеть что-то вроде:
==> магазин.журнал <== 1518045482.21 деб ==> access.log <== 1518045482.218 115 192.168.2.125TCP_MISS
/200 138900 GET http: //archive.ubuntu.com
/ ubuntu / pool /main
/c/curl/curl_7.47.0-1ubuntu2 .6_amd64.deb - HIER_DIRECT / 91.189.88.152 приложение / x-debian-пакет
access.log показывает TCP_MISS «curl_7.47.0-1ubuntu2.6_amd64.deb» из основного репозитория archive.ubuntu.com, что означает, что его нет ни в памяти, ни в кеш-памяти диска.
store.log указывает SWAPOUT пакета, что означает сохранение на диск пакета curl, извлеченного из основного репозитория.
Давайте посмотрим, действительно ли он хранится на диске, как указывает SWAPOUT, просмотрев все файлы в иерархии папок «/ var / cache / squid-deb-proxy».
$ sudo find / var / cache / squid-deb-proxy / -type f | sudo xargs ls -l
Это вернет все файлы из кеша и покажет их подробные размеры. Должен быть такой, что почти соответствует размеру, указанному в журнале доступа (138900). Причина, по которой это не точное совпадение, заключается в том, что файл локального кеша содержит все заголовки HTTP-ответа, а также двоичные данные, которые вы можете проверить, открыв его с помощью vi или emacs.
Теперь давайте проверим, что кеширование активировано, повторно установив curl.
$ sudo apt-get purge curl -y && sudo apt-get clean; sudo apt-get install curl -y
И теперь access.log будет указывать TCP_MEM_HIT, означающий, что контент был доставлен непосредственно из памяти.
1518046777.909 0 192.168.2.125TCP_MEM_HIT
/200 138909 GET http://archive.ubuntu.com/ubuntu/pool/main/c/curl/curl_7.47.0-1ubuntu2.6_amd64.deb
- HIER_NONE / - application / x-debian-пакет
Добавление репозиториев в белый список
По умолчанию только официальные репозитории Ubuntu занесены в белый список в «/ etc / squid-deb-proxy /».Если вы добавите репозиторий OpenJDK ppa, а затем выполните обновление, вы получите сообщение «Не удалось получить http://ppa.launchpad.net/openjdk-r/…»
$ sudo add-apt-репозиторий ppa: openjdk-r / ppa -y $ sudo apt-get update Политика $ sudo apt-cache openjdk
Это не работает, потому что ppa.launchpad.net еще не внесен в белый список как целевой репозиторий. Добавьте эту запись в «/etc/squid-deb-proxy/mirror-dstdomain.acl.d/10-default» и перезагрузите конфигурацию.
$ echo "ppa.launchpad.net" | sudo tee -a / etc / squid-deb-proxy / зеркало-dstdomain.acl.d / 10-по умолчанию $ sudo service squid-deb-proxy принудительная перезагрузка $ sudo apt-get update
Теперь «sudo apt-get update» завершится правильно. В зависимости от того, используете ли вы Ubuntu 14.04 или 16.04, исходный код OpenJDK будет поступать с сайта ppa, и его установка приведет к кешированию пакетов.
# в ppa для Ubuntu 16.04 Политика $ sudo apt-cache openjdk-7-jdk # в ppa для Ubuntu 14.04 Политика $ sudo apt-cache openjdk-8-jdk
Внесение пакетов в черный список
Пакеты также могут быть внесены в черный список.В качестве примера остановим загрузку пакета curl.
$ эхо "завиток" | sudo tee -a /etc/squid-deb-proxy/pkg-blacklist.d/10-default $ sudo service squid-deb-proxy принудительная перезагрузка
Затем удалите и попробуйте снова установить пакет «curl».
$ sudo apt-get purge curl -y && sudo apt-get clean; sudo apt-get install curl -y
Вы увидите ошибку 403 запрещенной выборки из консоли, а в access.log на стороне сервера вы увидите ту же ошибку.
==> access.log <==
1518050370.122 0 192.168.2.125 TCP_DENIED / 403
4089 GET http://archive.ubuntu.com/ubuntu/pool/main/c/curl/curl_7.47.0-1ubuntu2.6_amd64.deb - HIER_NONE / - text / html
Репозитории SSL и кеширование
Squid-deb-proxy не имеет проблем с загрузкой пакетов из репозиториев с включенным HTTPS, но он не может кэшировать эти пакеты, потому что он не может прочитать содержимое сообщения.
Итак, если вы получаете пакеты из репозитория с поддержкой HTTPS, у него не будет преимущества кэширования.
Если вам абсолютно необходимо решение для кэширования HTTPS, вы можете изучить Apt-Cacher-NG, который использует переназначение, где URL-адрес выглядит как HTTP с клиентского хоста, но затем сервер связывается через TLS с репозиторием.