Установка прокси-сервера "Squid"

Последнее изменение: 16/03/2016 12:13:11

Для установки прокси-сервера, вначале необходимо установить собственно Linux-сервер. В качестве основного дистрибутива, в данном случае, используется Ubuntu Linux Server 6.06 (Dapper Drake). Ниже подробно описаны все необходимые шаги для установки и конфигурирования сервера в качестве прокси.

Перед тем как приступать к установке сервера, необходимо узнать следующую информацию:

  1. Имя прокси-сервера: proxy
  2. IP-адрес прокси-сервера: 10.1.1.6
  3. Маска подсети: 255.255.0.0
  4. Основной шлюз: 10.1.1.253
  5. DNS-сервер: 10.1.1.253

Для того, чтобы объяснение было более понятным, в примерах я буду использовать вышеприведенные значения. У Вас в реальности, могут быть другие параметры установки.

Установка системы

Проще всего устанавливать систему с CD-ROM. Перед установкой необходимо в BIOS сконфигурировать компьютер на загрузку с CD-диска. Если компьютер поддерживает какой-либо аппаратный RAID-адаптер, то его необходимо отключить, т.к. RAID под Linux, в случае необходимости, конфигурируется в процессе установки.

После старта компьютера с CD-диска, загрузится стартовое меню, в котором необходимо выбрать первый пункт "Install to the hard disk". И после того, система стартует и предложит Вам выбрать язык установки, выберите

 English

В качестве местоположения можно указать Россию:

 other -> Europe / Russian Federation

На запрос о выборе клавиатуры, оставьте значение по умолчанию

 American English

Сетевые настройки

Когда установка подойдет к конфигурированию сетевых настроек и скажет, что не может автоматически определить настройки, выберите настройку вручную:

 Configure network manually

После запроса IP-адреса (IP address), введите его:

 10.1.1.6

А также маску вашей подсети (Netmask):

 255.255.0.0

Укажите IP-адрес основного шлюза Вашей сети (Gateway):

 10.1.1.253

И введите IP-адрес DNS-сервера (Name server addresses):

 10.1.1.253

После установки основных сетевых параметров, будет запрошено сетевое имя компьютера. Укажите его:

 proxy

Разбиение диска

Для прокси-сервера критично важно наличие большого количества памяти и пространства на жестком диске. При разбиении диска следует спланировать место как под кэшируемые объекты, так и под лог-файлы. В ряде случаев, имеет смысл выделить под эти данные отдельный раздел на диске.

В рамках этой статьи, мы не будем касаться вопросов разбиения дисков, а воспользуемся автоматическим разбиением. Если Ваш диск ранее использовался и не был после этого отформатирован, то выберите команду:

 Erase entire disk: IDE1 master (hda) ...

Подразумевается, что жесткий диск подключен как мастер к первому контроллеру. И система устанавливается именно на этот диск. После выбора данной команды, установщик запросит подтверждение на форматирование диска и его автоматическое разбиение:

 Yes

Конфигурирование временной зоны

После того, как форматирование успешно пройдет, система попросит выбрать временную зону. Т.к. ранее мы уже указали наше местоположение как "Россия", то при выборе временной зоны, она отсчитывается как смещение от московского времени. Предполагая, что мы находимся в Питере, выбираем следующее:

 Moscow+00 - west Russia

Затем инсталлятор спросит установить ли системные часы как универсальное время? Мы будем использовать локальное время, поэтому отвечаем:

 No

Создание пользователя

После окончания установки, Вам будет необходимо придумать пользовательское имя и пароль. В Ubuntu Linux по умолчанию отсутствует суперпользователь (root).Все команды уровня root выполняются при помощи команды sudo с запросом вашего пароля после запуска команды на выполнение.

Поэтому придумываем и создаем себе пользовательское имя. Вначале будет запрос реального имени пользователя:

 Mike Melnikov

А затем уже будет запрошено имя пользователя (он же login):

 cherry

и пароль для этого пользователя (он же password):

 ********

Его нужно будет ввести еще раз для подтверждения, что не было допущено ошибок при вводе:

 ********

Linux не хранит пароли пользователей в открытом виде, а шифрует их. Поэтому никто кроме Вас этого пароля не знает. Вы можете сменить пароль после входа в систему, используя команду "passwd".

Окончание установки

После того, как базовая установка системы будет произведена, инсталлятор попросит Вас вытащить диск и перезагрузит машину. После перезагрузки Вы сможете войти в систему через консоль, используя выбранные ранее логин и пароль.

Если Вам понадобится вручную выключить компьютер через консоль, то для используйте для этого следующую команду:

 sudo shutdown -h now

Она вызывает немедленную остановку всех сервисов и выключение компьютера. Если вместо ключа -h (halt), Вы укажете ключ -r (reset), то система вместо выключения компьютера, произведет его перезагрузку.

После перезагрузки системы, вставьте установочный диск обратно, если Вы его извлекли и войдите в систему.

Установка дополнительных сервисов

После того, как основная система установлена, необходимо дополнительно установить и сконфигурировать следующие пакеты:

Для установки OpenSSH-сервера, необходимо после входа в систему выполнить следующую команду:

 sudo apt-get install openssh-server

Так как, команда выполняется с привилегиями суперпользователя (команда sudo), то после ее запуска необходимо будет ввести свой пароль, придуманный в процессе базовой установки. А также нужно будет подтвердить установку запрошенного пакета, нажав клавишу "Y".

После установки SSH-сервера, вы можете заходить на машину через используя любой telnet-клиент, с поддержкой SSH-протокола. Для удаленного доступа к системе из под Windows очень удобно использовать Telnet-клиент PuTTY.

Установка прокси-сервера

В качестве прокси-сервера мы будем использовать пакет "Squid". Для его установки необходимо в консоли напечатать следующую строчку:

 sudo apt-get install squid squid-common

После установки пакета, прокси-сервер необходимо сконфигурировать. Все настройки Squid находятся в файле "/etc/squid/squid.conf". Перед тем как редактировать конфигурационный файл, сделайте его копию, используя следующую команду:

 sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original

Теперь необходимо отредактировать конфигурационный файл. Для этого нужно вызвать текстовый редактор, передав ему имя конфигурационного файла:

 sudo nano /etc/squid/squid.conf

Запустится текстовый редактор "nano", используя который Вы сможете внести нужные изменения. Для начала найдите переменную visible_hostname и укажите в качестве значения сетевое имя прокси-сервера:

 visible_hostname proxy

Если Вы хотите запустить прокси-сервер на порту отличном от того, который принят по умолчанию (3128), то найдите переменную http_port и установите нужное значение:

 http_port 3128

Теперь мы должны определить правила для работы прокси. Правил может быть несколько, в зависимости от тех задач, которые мы хотим решить. Более подробно правила описаны ниже.

А пока запомните, что после редактирования конфигурационного файла, Squid необходимо перезапустить, чтобы отразить внесенные изменения. Это можно сделать, выполнив следующую команду:

 sudo /etc/init.d/squid restart

Настройка правил

После того, как прокси-сервер установлен, необходимо прописать для него правила. Все правила задаются в основном конфигурационном файле squid.conf. Команды контролирующие доступ к тому или иному ресурсу, задаются в форматах:

 acl aclname string
 acl aclname "filename"

где

После того, как правила определены, для них необходимо задать разрешения. Это делается при помощи отдельной команды, вида:

 http_access allow aclname
 http_access deny aclname

После внесения изменений в конфигурационный файл или в файл, на который ссылается правило, необходимо перезапустить Squid.

Примеры правил

Ниже приведены некоторые примеры правил, для достижения того или иного эффекта от применения прокси-сервера.

Для добавления правил, найдите в конфигурационном файле раздел "ACCESS CONTROL" и пишите все команды только после строки

 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

Для тестирования работоспособности прокси-сервера, сконфигурируйте браузер на использование прокси на любом из клиентских компьютеров внутри сети. В качестве адреса прокси укажите IP-адрес сервера и порт на котором он принимает запросы.

 Proxy 10.1.1.6:3128

Теперь можно писать правила и тут же тестировать их на клиентском компьютере.

Свободный доступ к прокси всем пользователям сети

Начнем с простого случая, когда мы хотим разрешить всем пользователя использовать прокси-сервер для доступа в интернет и кэширования запросов к web-сайтам.

Для определения диапазона клиентских IP-адресов сети, мы используем команду "src". Добавьте следующие правило в конфигурационный файл:

 acl our_network src 10.1.0.0/255.255.0.0
 http_access allow our_network

В данном случае, доступ через прокси разрешен всем компьютерам находящимся в локальной подсети 10.1.0.0/255.255.0.0.

Доступ пользователей только к определенным web-серверам

Для того, чтобы ограничить доступ в интернет только определенными серверами, необходимо использовать правило сравнивающее запрашиваемый адрес со списком разрешенных. Для этого можно использовать либо команду "dstdom_regex", "url_regex". Первая команда сравнивает только имя домена, в то время как вторая может использоваться для проверки запрашиваемого URL целиком.

Для ограничения на уровне доменов, можно использовать следующее правило:

 acl allowed_domains dstdom_regex -i "/etc/squid/allowed_domains.acl"
 http_access allow allowed_domains

Заметьте, что список доменов вынесен в отдельный файл, определяющий регулярные выражения для сопоставления доменом. Этот файл может выглядеть следующим образом:

 ^www\.yandex\.ru$
 google\.com$

Первая строка определяет правило, которое разрешает доступ только к серверу "www.yandex.ru". А вторая строка разрешает доступ ко всем серверам, входящим в доменную зону "google.com". К примеру "mail.google.com" или "code.google.com".

Ограничение трафика для конкретного хоста

Используя Squid можно также ограничивать трафик определенными значениями. Вначале требуется, как обычно, определить хосты к которым применяется правило. Для одиночного хоста, т.е. клиентского компьютера с IP-адресом "10.1.4.175", оно будет выглядеть следующим образом:

 acl traffic_limit src 10.1.4.175/255.255.255.255
 http_access allow traffic_limit

И далее необходимо сформировать пул доступа для данного хоста, который определяет ширину канала. Для единственного пула 1 класса это будет выглядеть следующим образом.

 delay_pools 1
 delay_class 1 1
 delay_access 1 allow traffic_limit
 delay_access 1 deny all
 delay_parameters 1 800/64000 

Вышеупомянутые правила задают ограничение канала в 800 байт/сек для всех файлов, размер которых превышает 64Кб.

Рабочие каталоги и лог-файлы

Squid хранит рабочий кэш в каталоге, определенной переменной cache_dir и по умолчанию она имеет значение:

 /var/spool/squid/

В процессе работы, прокси-сервер создает ряд лог-файлов, по умолчанию расположенных в каталоге:

 /var/log/squid/

Имена лог-файлов и их краткое описание приведены ниже.

Полезные ссылки