Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite купить дешевый 
компьютер родом из Dhgate.com Продажа латодержателей.

Lines Club

Ищем достойных соперников.

Библиотека сайта или "Мой Linux Documentation Project"

Серверы Linux. Часть I. Серверы Apache и Squid

Оригинал: Introduction to squid
Автор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: А.Панин
Дата перевода: 11 июля 2015 г.

Глава 2. Знакомство с прокси-сервером Squid

2.1. Информация о прокси-серверах

2.1.1. Область применения

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

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

Небольшие организации иногда размещают прокси-сервер на физическом компьютере, который уже используется в качестве сервера преобразования сетевых адресов (NAT) для доступа к ресурсам сети Интернет. В больших организациях прокси-сервер является одним из серверов, размещенных в демилитаризованной зоне сети (DMZ).

При использовании прокси-сервера для обработки всего веб-трафика обычной практикой является дополнительная настройка этого сервера для управления доступом к определенным ресурсам. Под управлением доступом в случае прокси-сервера могут подразумеваться ограничения доступа, которые могут распространяться как на учетные записи пользователей, так и на отдельные веб-сайты (идентифицируемые в помощью строк URL), IP-адреса ресурсов или механизм разрешения доменных имен.

2.1.2. Общедоступные прокси-серверы

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

2.1.3. Прокси-сервер Squid

В данной главе будет обсуждаться прокси-сервер Squid (http://www.squid-cache.org). В первую очередь будет описан процесс настройки Squid для работы в режиме обычного прокси-сервера.

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

В примере ниже показана методика установки прокси-сервера Squid с помощью утилиты aptitude в дистрибутиве Debian. Используйте утилиту yum для установки одноименного пакета программного обеспечения в том случае, если вы работаете с дистрибутивом Red Hat/CentOS.

root@debian7:~# aptitude install squid
НОВЫЕ пакеты, которые будут установлены:
  squid squid-common{a} squid-langpack{a}
обновлено 0, установлено 3 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 1,513 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 4,540 kБ.
Хотите продолжить [Д/н]?
...вывод сокращен...
Setting up squid-langpack (20120616-1) ...
Setting up squid-common (2.7.STABLE9-4.1) ...
Setting up squid (2.7.STABLE9-4.1) ...
Creating squid spool directory structure
2014/08/01 15:19:31| Creating Swap Directories
Restarting Squid HTTP proxy: squid.

Главным конфигурационным файлом прокси-сервера Squid является файл /etc/squid/squid.conf. В данном файле имеются подробные описания каждого из параметров.

root@debian7:~# wc -l /etc/squid/squid.conf
4948 /etc/squid/squid.conf

2.3. Порт 3128

По умолчанию прокси-сервер Squid будет принимать соединения на порту 3128.

root@debian7:~# grep ^http_port /etc/squid/squid.conf
http_port 3128

root@debian7:~#

2.4. Запуск и остановка службы прокси-сервера

Вы можете изменять состояние службы squid с помощью стандартной утилиты service таким же образом, как показано в данном примере.

root@debian7:~# service squid start
Starting Squid HTTP proxy: squid.
root@debian7:~# service squid restart
Restarting Squid HTTP proxy: squid.
root@debian7:~# service squid status
squid is running.
root@debian7:~# service squid stop
Stopping Squid HTTP proxy: squid.
root@debian7:~#

2.5. Ввод параметров доступа к прокси-серверу на стороне клиента

Для активации режима доступа к сети посредством прокси-сервера в веб-браузере Firefox или Iceweasel следует выбрать пункты меню окна "Правка - Настройки" и ввести параметры доступа к прокси-серверу таким же образом, как показано на рисунке ниже (замените IP-адрес 192.168.1.60 на IP-адрес машины с прокси-сервером).

Ввод параметров доступа к прокси-серверу на стороне клиента

Проверьте работоспособность соединения с сетью Интернет при использовании прокси-сервера. Также проведите повторную проверку работоспособности соединения после исполнения команды service squid stop на машине с установленным прокси-сервером, в результате чего веб-браузер должен вывести сообщение, аналогичное представленному на рисунке ниже.

Ввод параметров доступа к прокси-серверу на стороне клиента

Для активации режима доступа к сети посредством прокси-сервера в веб-браузере Google Chrome (или Chromium в дистрибутиве Debian) запустите веб-браузер из терминала с помощью аналогичной команды:

paul@debian7:~$ chromium --proxy-server='192.168.1.60:3128'

Остановка службы прокси-сервера с помощью команды service squid stop должна привести к выводу сообщения об ошибке, аналогичного представленному на рисунке ниже.

Ввод параметров доступа к прокси-серверу на стороне клиента

2.6. Переворот изображений

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

Например, на уровне прокси-сервера вы можете заменить рекламные баннеры на веб-странице (а также удалить некоторые из них) или же, как в примере ниже, модифицировать все изображения на веб-странице, перевернув их.

Для модификации изображений серверу потребуются утилиты с интерфейсом командной строки, а также сценарий на языке Perl, который использует эти утилиты (кроме того, понадобится утилита wget для загрузки изображений на сервер и предоставления доступа к ним посредством веб-сервера Apache 2). В данном примере мы будем использовать инструменты из пакета imagemagic (такие, как утилиты convert и mogrify).

root@debian7:~# aptitude install imagemagick wget perl apache2
...вывод сокращен...
root@debian7:~# dpkg -S $(readlink -f $(which mogrify))
imagemagick: /usr/bin/mogrify.im6
root@debian7:~#

Приведенный в примере ниже сценарий на языке Perl размещен на множестве веб-сайтов, но мне так и не удалось найти информацию о его авторе. Данный сценарий является достаточно простым и использует утилиты wget и mogrify для загрузки изображений (с расширениями .jpg, .gif и .png), их переворота и сохранения результирующих изображений в директории /var/www/images.

root@debian7:~# cat /usr/local/bin/flip.pl
#!/usr/bin/perl
$|=1;
$count = 0;
$pid = $$;
while (<>) {
 chomp $_;
 if ($_ =~ /(.*\.jpg)/i) {
  $url = $1;
  system("/usr/bin/wget", "-q", "-O","/var/www/images/$pid-$count.jpg", "$url");
  system("/usr/bin/mogrify", "-flip","/var/www/images/$pid-$count.jpg");
  print "http://127.0.0.1/images/$pid-$count.jpg\n";
 }
 elsif ($_ =~ /(.*\.gif)/i) {
  $url = $1;
  system("/usr/bin/wget", "-q", "-O","/var/www/images/$pid-$count.gif", "$url");
  system("/usr/bin/mogrify", "-flip","/var/www/images/$pid-$count.gif");
  print "http://127.0.0.1/images/$pid-$count.gif\n";
 }
 elsif ($_ =~ /(.*\.png)/i) {
  $url = $1;
  system("/usr/bin/wget", "-q", "-O","/var/www/images/$pid-$count.png", "$url");
  system("/usr/bin/mogrify", "-flip","/var/www/images/$pid-$count.png");
  print "http://127.0.0.1/images/$pid-$count.png\n";
 }
 else {
         print "$_\n";;
 }
 $count++;
}

Также следует изменить (или раскомментировать) следующую строку в файле конфигурации прокси-сервера /etc/squid/squid.conf.

http_access allow localnet
http_port 3128 transparent
url_rwwrite_program /usr/local/bin/flip.pl

Данный сценарий использует директорию /var/www/images, которая должна быть доступна для записи как для прокси-сервера Squid (который использует учетную запись пользователя proxy), так и для веб-сервера Apache 2 (который использует учетную запись пользователя www-data). В примере ниже показаны команды, предназначенные для создания данной директории, установки прав доступа к ее содержимому и добавления используемых упомянутыми серверами учетных записей пользователей в соответствующие группы пользователей.

root@debian7:~# mkdir /var/www/images
root@debian7:~# chown www-data:www-data /var/www/images
root@debian7:~# chmod 755 /var/www/images
root@debian7:~# usermod -aG www-data proxy
root@debian7:~# usermod -aG proxy www-data

Проверьте работоспособность сценария для поворота изображений после перезапуска службы прокси-сервера под названием squid и службы веб-сервера под названием apache2.

Переворот изображений

2.7. Директория для хранения файлов журналов /var/log/squid

По умолчанию файлы журнала прокси-сервера Squid хранятся в директории /var/log/squid.

[root@RHEL4 ~]# grep "/var/log" /etc/squid/squid.conf
# cache_access_log /var/log/squid/access.log
# cache_log /var/log/squid/cache.log
# cache_store_log /var/log/squid/store.log

2.8. Управление доступом

При использовании стандартных настроек прокси-сервер Squid принимает соединения исключительно с локального узла. Для разрешения доступа с машин, имеющих IP-адреса из диапазона адресов частной сети следует найти в файле конфигурации squid.conf предложение "INSERT YOUR OWN RULE(S) HERE..." и добавить после него две строки, аналогичные приведенным в примере ниже.

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

acl company_network src 192.168.1.0/24
http_access allow company_network

2.9. Тестирование прокси-сервера Squid

В первую очередь следует убедиться в том, что прокси-сервер функционирует и имеет доступ к сети Интернет.

[root@RHEL4 ~]# wget -q http://linux-training.be/index.html
[root@RHEL4 ~]# ls -l index.html 
-rw-r--r--  1 root root 2269 сен 18 13:18 index.html
[root@RHEL4 ~]#

После этого следует настроить веб-браузер на клиентской машине для работы с сетью посредством прокси-сервера или установить в качестве значения переменной окружения HTTP_PROXY (иногда вместо этой переменной окружения используется переменная http_proxy) адрес прокси-сервера для передачи этого адреса программам с интерфейсом командной строки.

[root@fedora ~]# export HTTP_PROXY=http://192.168.1.39:8080
[root@ubuntu ~]# export http_proxy=http://192.168.1.39:8080

Тестирование работоспособности прокси-сервера со стороны клиентской машины может осуществляться с помощью утилиты wget (команда wget -q используется для упрощения примера).

[root@RHEL5 ~]# > /etc/resolv.conf
[root@RHEL5 ~]# wget -q http://www.linux-training.be/index.html
[root@RHEL5 ~]# ls -l index.html 
-rw-r--r-- 1 root root 2269 сен 18  2008 index.html
[root@RHEL5 ~]#

2.10. Разрешение доменных имен

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

[paul@RHEL5 ~]$ wget http://grep.be
--14:35:44--  http://grep.be
Распознаётся grep.be... ошибка: Temporary failure in name resolution.
[paul@RHEL5 ~]$ export http_proxy=http://192.168.1.39:8080
[paul@RHEL5 ~]$ wget http://grep.be
--14:35:49--  http://grep.be/
Подключение к 192.168.1.39:8080... соединение установлено.
Proxy-запрос отправлен. Ожидание ответа... 200 OK
Длина: 5390 (5.3K) [text/html]
Сохранение в: `index.html.1'

100%[================================>] 5,390       --.-K/s   за 0.1s

14:38:29 (54.8 KB/s) - `index.html' сохранён [5390/5390]

[paul@RHEL5 ~]$

Предыдущий раздел: Оглавление Следующий раздел:
1.8. Диагностика веб-сервера Apache   Глава 3. Вводная информация о структурированном языке запросов SQL и сервере базы данных MySQL

Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют