Показаны сообщения с ярлыком настройка. Показать все сообщения
Показаны сообщения с ярлыком настройка. Показать все сообщения

среда, 12 марта 2014 г.

Простая настройка прозрачного прокси-сервера на SQUID.

Есть масса задач, для решения которых применяют прокси-серверы. Чаще всего это организация доступа в Интернет и кэширование трафика. Для этой цели выполним простую настройку прозрачного прокси-сервера на SQUID.

Для установки SQUID выполним в терминале:

sudo apt-get install squid


Перейдём в каталог /etc/squid3


Переименуем оригинальный конфигурационный файл squid.conf в squid.conf.original выполнив команду в терминале:

sudo mv squid.conf squid.conf.original


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

sudo grep -v '^#' squid.conf.original | sed '/^$/d' > /tmp/squid.tmp


Затем переместим полученный файл /tmp/squid.tmp в /etc/squid3/squid.conf командой в терминале:

sudo mv /tmp/squid.tmp /etc/squid3/squid.conf


Внесём изменения в файл настроек прокси-сервера, открыв его в редакторе nano командой в терминале:

sudo nano /etc/squid3/squid.conf


Разрешаем доступ только из своей сети добавив строку в файл (укажите IP-адреса своей сети):

acl localnet src 172.16.8.0/21


Разрешаем http-доступ для localnet добавив в файл строку:

http_access allow localnet


Указываем порт прокси-сервера - 3128, IP-адрес интерфейса на котором будет работать прокси-сервер (в моём случае - 172.16.15.1) и режим "прозрачный прокси" исправив строку в файле на:

http_port 172.16.15.1:3128 transparent


Вписываем в файл директорию кэша и его параметры:  

cache_dir ufs /var/spool/squid3 4096 32 256


Указываем минимальный размер кэшируемого файла (кэширование слишком мелких файлов сильно нагружает дисковую подсистему прокси-сервера):

minimum_object_size 2 KB


Указываем максимальный размер кэшируемого файла (кэширование очень больших файлов требует много места малоэффективно):

maximum_object_size 65536 KB


Для того, чтобы сделать наш прокси анонимным (прятать внутренние IP-адреса) - добавляем строки в файл:

via off
forwarded_for delete


Сохраняем изменения в файле нажав <Ctrl> + <o> и выходим нажав <Ctrl> + <x>.
Остановим прокси-сервер командой в терминале:

sudo service squid3 stop


Подготовим директорию кэша выполнив в терминале:

sudo squid3 -z


Теперь запустим прокси-сервер командой:

sudo service squid3 start


Описываемая в этой статье схема подразумевает работу прокси-сервера в "прозрачном" режиме. Для этого сервер на котором устанавливается прокси-сервер SQUID должен быть шлюзом по-умолчанию для компьютеров локальной сети, а настройки прокси у пользователей указывать не требуется. Такая простота развёртывания обеспечивается перехватом обращений на порт 80 (http) и принудительным перенаправлением их на порт прокси-сервера - 3128. Делается это средствами IPTABLES командой в терминале:

sudo iptables -t nat -A PREROUTING ! -d 172.16.8.0/21 -i eth1 -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128


Данное правило для таблицы NAT обеспечивает перенаправление пакетов TCP, пришедших на порт 80 сетевого интерфейса ETH1 (но не в сторону сети 172.16.8.0/21 - не будем кэшировать трафик в локальной сети) на порт 3128.

Настройки IPTABLES в данной статье подробно не рассматриваются, поэтому способ включения приведённого выше правила при загрузке сервера необходимо выбрать самостоятельно (это может быть команда в /etc/rc.local или отдельный скрипт на bash, либо правило прописанное средствами webmin).

ВНИМАНИЕ! ЕСТЬ ОГРАНИЧЕНИЯ!
Схема работы SQUID в режиме прозрачного прокси удобна скоростью развёртывания и отсутствием необходимости настройки у всех потребителей (например, при подключении к сети оборудования, где не предусмотрена настройка работы через прокси - это может быть хорошим решением).

Но есть и ряд ограничений:
- нет возможности применять какую-либо авторизацию (ни по логину/паролю, ни по учётным данным домена Windows);
- работает только HTTP (порт 80), а для работы других протоколов (https, ftp и т.д.) необходимо использовать NAT;
- учёт трафика возможен только для HTTP (порт 80) и только по IP-адресам потребителей.

Если Вам необходим классический непрозрачный прокси-сервер - не прописывайте привило в IPTABLES, а в файле настроек строка с IP и портом прокси должна быть указана без transparent:

http_port 172.16.15.1:3128 

При такой схеме настройки прокси нужно указывать у всех потребителей.

понедельник, 24 февраля 2014 г.

Ускоряем Интернет с помощью локального кэширующего DNS-сервера - PDNSD

Не секрет, что скорость открытия web-страниц в браузере зависит от ширины Вашего Интернет-канала.
Однако не меньшее влияние на этот процесс имеет работа DNS-серверов. Если предоставляемый Вам провайдером DNS-сервер сбоит или отвечает с большой задержкой - то никакой сверхширокий канал не улучшит ситуацию. Решить проблему можно установив свой локальный кэширующий DNS-сервер.

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

sudo apt-get install pdnsd
 

Перед Вами должно появиться окно с запросом о способе настройки pdnsd. Если такое окно не появилось - то скорее всего Вы уже устанавливали пакет pdnsd и удалили его через sudo apt-get remove pdnsd (при этом конфигурационные файлы пакета остались). В таком случае необходимо запустить перенастройку пакета командой в терминале:

sudo dpkg-reconfigure pdnsd


Итак, перед нами окно с запросом о способе настройки pdnsd.
  

 Т.к. мы хотим получить быстрое, стабильное и независящее от DNS-провайдеров решение - нам нужно использование корневых серверов. Перемещаемся клавишей <Tab> на пункт <Ok> и жмём <Enter>.


На следующем окне выбираем выбираем пункт "использовать корневые серверы" и затем клавишей <Tab> перемещаемся на пункт <Ok> и жмём <Enter>.

Проверим настройки запуска pdnsd. Набираем в терминале:

cat /etc/default/pdnsd
  

Проверяем наличие опций START_DAEMON=yes и AUTO_MODE=recurse.
  

В данном режиме пакет pdnsd будет брать настройки не из файла /etc/pdnsd.conf, а из файла /usr/share/pdnsd/pdnsd-recurse.conf
Откроем файл настроек pdnsd командой в терминале:

sudo nano /usr/share/pdnsd/pdnsd-recurse.conf



Мы увидим следующее:


Параметр perm_cache определяет сколько памяти в килобайтах будет отводиться под кеш (по умолчанию 2048).
Если Ваша система обслуживает целую сеть - рекомендуется увеличить это значение, например до 65536.
Ещё один важный для нас параметр server_ip (по умолчанию 127.0.0.1) - он определяет интерфейс на котором pdnsd будет принимать запросы. Для одиночного ПК можно оставить 127.0.0.1, но если Вы планируете быть быстрым DNS-сервером для своей сети - нужно указать Ваш сетевой интерфейс, например eth0.


Сохраняем настройки нажав <Ctrl> + <o> и выходим нажав <Ctrl> + <x>.

По-умолчанию в Ubuntu применяется DNS-сервер dnsmasq. Его отличия от pdnsd в том, что он использует dns-сервера из файла /etc/resolv.conf и кэш держит только в оперативной памяти (при перезагрузке кэш теряется). Перед запуском pdnsd нам необходимо удалить dnsmasq, т.к. они оба по-умолчанию используют порт 53. Для удаления dnsmasq выполним в терминале:

sudo apt-get remove dnsmasq
 
 
Теперь нам нужно указать пакету resolvconf (именно он формирует файл /etc/resolv.conf) наш новый быстрый DNS-сервер. Для этого выполним в терминале:

sudo nano /etc/resolvconf/resolv.conf.d/base
 
 
Вписываем nameserver и IP-адрес (если Вы указываели server_ip=eth0 в файле /usr/share/pdnsd/pdnsd-recurse.conf) или 127.0.0.1 (если Вы указываели server_ip=127.0.0.1 в файле /usr/share/pdnsd/pdnsd-recurse.conf).
  
 
Сохраняем настройки нажав <Ctrl> + <o> и выходим нажав <Ctrl> + <x>.

Обратите внимание:
- в файле настроек сетевых интерфейсов /etc/network/interfaces не должно быть строк с параметром dns-nameservers;
- в описываемой статье подразумевается использование статического IP-адреса на Вашем ПК.

Для чистоты эксперимента рекомендуется полностью перезагрузить ПК.

После перезагрузки убеждаемся, что в /etc/resolv.conf указан именно наш новый DNS-сервер. Выполним в терминале:

cat /etc/resolv.conf
 
 
Должен быть только наш DNS-сервер:
 
 
С помощью команды dig проанализируем ускорение dns-запросов. Выполним в терминале:

dig mail.ru
 
 
Получим вывод:
  

Затем ещё раз выполним тот же запрос:

dig mail.ru
 
 
И увидим другой результат:
 
 
Время запроса значительно сократилось. Аналогично можно попробовать потестировать обращения к другим доменам. После попадания запроса в кэш - ответ получается гораздо быстрее.

Текущее состояние и заполненность кэша pdnsd можно узнать выполнив в терминале:

sudo pdnsd-ctl status
 
 
Поднявшись в начало вывода можно увидеть данные о заполненности кэша: 
 
  
В приведённом примере это всего 62 записи, занявшие 0.0246% от выделенных нами под кэш 65536Кб.

Содержимое кэша pdnsd можно увидеть выполнив в терминале:

sudo pdnsd-ctl dump
 
 
Получим что-то вида:
 
 
Сбросить (очистить) кэш можно командой в терминале:

sudo pdnsd-ctl empty-cache
 
 
Но делать это просто так не стоит, т.к. именно накопленный кэш - ускоряет наши dns-запросы.