Установка и настройка прокси-сервера squid на ubuntu + apt-cacher на ubuntu
Была наращена оперативка до 8 ГБ и установлена ubuntu 14.04 LTS. Ниже описаны шаги, которые потребовались для настройки этого компьютера в качестве раздающего интернет.
1. Устанавливаем ubuntu 14.04 LTS desktop
2. Проверяем настройки сетевых интерфейсов командой ifconfig
Видим, что в локалку смотрит интерфейс eth1, а наружу - eth2
root@seven:~# ifconfig
eth1 Link encap:Ethernet
inet addr:172.18.4.7 Bcast:172.18.4.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6594461 errors:0 dropped:379 overruns:0 frame:0
TX packets:5722443 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:772481303 (772.4 MB) TX bytes:3620715145 (3.6 GB)
Interrupt:23 Base address:0x6000
eth2 Link encap:Ethernet
inet addr:176.192.35.xxx Bcast:176.192.35.xxx Mask:255.255.255.252
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2838916 errors:0 dropped:0 overruns:0 frame:0
TX packets:2003563 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2761775399 (2.7 GB) TX bytes:383081200 (383.0 MB)
Interrupt:16 Base address:0xb800
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:220678 errors:0 dropped:0 overruns:0 frame:0
TX packets:220678 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:74028571 (74.0 MB) TX bytes:74028571 (74.0 MB)
В Ubuntu 12.04, в отличие от предыдущих версий, удалось настроить сеть при помощи Network Manager, без ручного редактирования файла /etc/network/interfaces (как настраивать сеть через этот файл написано много где, например, здесь)
После настройки сетевых интерфейсов будет доступ в интернет с машины, где будет прокси.
3. Поднимаем NAT с помощью iptables
Сброс правил в IPTABLES. Обязательный первый шаг. Просто iptables -F не помогает.
Процесс раздачи интернета через iptables простой и описан здесь. Коротко шаги:
Раздача Интернета в локальную сеть (ICS: Internet Connection Sharing)
Для организации совместного доступа в Интернет с помощью общего доступа к подключению Интернета на сервере должна быть одна сетевая карта для подключения к внутренней сети и еще одна карта или модем для подключения к Интернету.
На сервере
Для настройки общего доступа к подключению Интернета необходимо выполнить на сервере указанные ниже действия.
Исходные данные: Оба компьютера соединены по сети. На сервере установлено две сетевые карты:
-
eth0 - к ней подключен интернет;
-
eth1 - к ней подключена локальная сеть.
Настройте вторую карту (eth1) так:
-
IP: 192.168.0.1
-
Netmask: 255.255.255.0
Это можно сделать вручную или используя терминал:
sudo ifconfig eth1 192.168.0.1 netmask 255.255.255.0 sudo ifconfig eth1 up
Разрешите направление пакетов. Чтобы сделать это, отредактируйте /etc/sysctl.conf
. Откройте сам файл командой:
sudo gedit /etc/sysctl.conf
А затем вставьте следующую строчку:
net.ipv4.ip_forward=1
Для того, чтобы применить это правило до перезагрузки выполните:
sysctl -w net.ipv4.ip_forward="1"
Затем добавляем правило для NAT:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Где eth0 название вашего интерфейса через который выходите в интернет. Измените его если используете другой интерфейс (напрмер ppp0) тогда команда будет выглядит иначе:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Этот шаг не обяателен, т.к. в новых дистрибутивах уже есть dnsmasq-base, и dnsmasq будет ругаться, что 53 порт занят.
Установите и запустите пакет для раздачи пакетов по сети:
sudo apt-get install dnsmasq
Или, вы можете использовать DNS провайдера.
Чтобы NAT работал после перезагрузки сохраняем настройки iptables
в файл:
iptables-save > /etc/iptables.up.rules
И добавляем в конец файла:
sudo gedit /etc/network/interfaces
Эту строчку, для автоматической подгрузки правил:
pre-up iptables-restore < /etc/iptables.up.rules
Также в этот файл добавляем правила роутинга:
up route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1 up route add -net 0.0.0.0 netmask 255.255.255.255 dev eth0
На клиентском компьютере
Установите на втором компьютере:
-
IP: 192.168.0.2
-
Netmask/Маска: 255.255.255.0
-
Gateway/Шлюз: 192.168.0.1
-
DNS: 192.168.0.1
Второй компьютер теперь должен быть подключён к интернету.
Способ ниже использовал раньше, сейчас сделал как выше написано.
Для открытия NAT под рутом даем команды:
iptables-save >/etc/iptables.sav
Добавляем в rc.local перед exit 0
iptables-restore
4. Установка squid3
Тут все хорошо документировано. Вкратце так
apt-get install squid
после установки открываем файл /etc/squid/squid.conf и приступаем к настройке
1
|
nano /etc/squid/squid.conf |
Так как мы будем настраивать прозрачный прокси (на клиентских машинах нам не нужно будет указывать в настройках прокси сервер), в строке http_port 3128, допишем transparent
http_port 3128 transparent
раскоментируем строку, указывающую путь к кэшу и настроим как показано ниже
cache_dir ufs /var/spool/squid 4096 32 256
указываем настройки сети в которой будет работать прокси, для этого раскоментируем строку в которой указана ваша подсеть
acl localnet src 172.18.4.0/24 # RFC1918 possible internal network
разрешаем доступ к прокси из внутренней сети
http_access allow localnet
указываем лимит использования памяти
memory_pools on
memory_pools_limit 50 MB
50 мб. вполне достаточно
в случае возникновения ошибок, чтобы видеть их на русском языке, указываете следующее
error_directory /usr/share/squid/errors/Russian-koi8-r
сохраняем файл, закрываем, перестраиваем кэш
/usr/sbin/squid -z
перезапускаем squid
service squid3 restart
Готово! Чтобы проверить, нужно указать в настройках браузера клиентского компьютера, прокси 172.18.4.7 и порт 3128. Если все работает нормально, движемся далее…
Squid3 (Очистка кеша)
/etc/init.d/squid3 stop rm -r /var/spool/squid3/* /usr/sbin/squid3 -z /etc/init.d/squid3 start
Нашел еще один совет по очистке кеша командой
Проверка версии и конфигурации squid
$ /usr/sbin/squid3 -v
С фильтром вывода примерно так
1
|
squid3 -v | grep ssl |
По умолчанию в ubuntu squid3 собран без поддержки ssl
http://www.opennet.ru/openforum/vsluhforumID12/5890.html
http://thelinuxforce.org/article/13
Сборка Squid3 с поддержкой ssl в Ubuntu server
и еще http://thejimmahknows.com/squid-3-1-caching-proxy-with-ssl/
А вот здесь можно брать готовую сборку сквид3 с ssl через спец. репозиторий, что не приводит к необходимости пересобирать сквид после каждого обновления.
http://www.mydlp.com/now-squid3-ssl-packages-in-mydlp-repository/
Анализируем логи при помощи lightsquid
Как установить lightsquid описано много где в интернете.
Здесь напишу "узелки на память"
Так как апач у меня установлен на сервере, а свид на прокси, то нужно давать права доступа на чтение логов для скрипта lightparser.pl
По умолчанию squid создает логи с правами 640. Пока не разобрался, как сделать правильно доступ к логам с сервера, тупо сделал записи в crontab
30 11 * * * root chmod 0644 /var/log/squid3/access.log
31 11 * * * root chmod 0644 /var/log/squid3/access.log.1
Это, конечно, неправильно, но как включить сервер в группу прокси пока не разобрался.
Установка apt-cacher-ng
apt-get install apt-cacher-ng
В /etc/apt-cacher-ng/acng.conf
интересны следующие строчки:
ExTreshold: 4
- устаревание кеша, в днях. Если файл ни разу не запрашивался дольше указанного времени, он будет удален. Я увеличил до 30 днейPassThroughPattern: .*:443
- нужно указать это, чтобы не было проблем с HTTPS репозиториями (об этом ниже).
В остальном стандартный конфиг делает следующее:
- запускает веб-сервер для всего мира на
0.0.0.0:3142
- хостит страничку и информацией о сервисе и статистикой на http://myserver.ru:3142
- хранит кеши в
/var/cache/apt-cacher-ng
Также нужно отредактировать файл /etc/apt-cacher-ng/backends_ubuntu
, удалив из него лишние зеркала и поставив главное зеркало в начало, иначе рискуете однажды получить 403 ошибку при установке одного из пакетов (об этом чуть ниже). У меня файл такой:
http://mirror.yandex.ru/ubuntu/
http://archive.ubuntu.com/ubuntu/
Подробности ремапинга можно почитать в документации. В 2 словах: когда клиент запрашивает пакет, apt-cacher-ng скачивает его не с репозитория, который прописан на клиенте, а с первого зеркала, указанного в файле ремапинга. Второй репозиторий по факту никогда не выбирается.
После этого можно перезапустить сервис:
service apt-cacher-ng restart
Проверяем, что он поднялся, должен открыться урл http://myserver.ru:3142
.
Настройка клиентов
Для проверки доступности Apt-cacher-ng в локальной сети осуществляем подключение к нему в браузере со стороны клиента по URL
http://<имя сервера>:3142/ - страница с указаниями по настройке клиентов http://<имя сервера>:3142/acng-report.html - страница со отчетом о работе демона где <имя сервера> - имя или IP рабочей станции на которой работает apt-cacher-ng
Для подключения клиентов к хранилищам через прокси-сервер Apt-cacher-ng
- изменяем настройки доступа клиентов к хранилищам пакетов
вариант №1 с изменением файла /etc/apt/sources.list добавляем в файл /etc/apt/sources.list строки вида deb http://<имя сервера>:3142/ftp.debian.org/debian stable main contrib non-free
вариант №2 без изменения файла /etc/apt/sources.list создаем например файл /etc/apt/apt.conf.d/01proxy со строкой Acquire::http { Proxy "http://<имя сервера>:3142"; };
- обновляем индексы базы пакетов
Остальное подробно тут и тут
Чтобы удалить - см. команды тут
Какие файлы скопировать со старой установки
Для ускорения настройки желательно перед переустановкой (или при замене компьютера) скопировать следующие файлы
Опубликовано