- PVSM.RU - https://www.pvsm.ru -
По работе столкнулся с такой проблемой: есть десяток прокси серверов (squid) в разных странах и не один десяток пользователей. Каждый из них сам решает через какой сервер работать — есть chrome extension в котором они могут сделать выбор.
Но все сервера находятся на разном удалении от пользователя и пользователь из России, пользуясь сервером в Канаде сталкивается с хорошими тормозами. С другой стороны все сервера подключены в дата центрах к магистралям и между ними задержки много меньше.
Было принято решение направлять каждого пользователя к ближайшему к нему серверу, а от туда к выбранному.
Первым пунктом необходимо настроить прокси для работы друг с другом. Самым простым путем было указать:
acl localnet srcdomain мой домен.com
Но оказалось, что не все позволяют обратное преобразование в указанный тобой домен. Пришлось прописывать все ip серверов:
acl localnet srcdomain IP серверa 1 acl localnet srcdomain IP серверa 2 acl localnet srcdomain IP серверa 3
Если кто подскажет другое решение, я буду рад поправить. Пока сервера не часто меняются и в случае изменения быстро правятся с помощью puppet-ов.
Следующий шаг настроить acl для перенаправления по серверам:
cache_peer {сервер 1} parent 3128 3130 name=peer1 cache_peer {сервер 2} parent 3128 3130 name=peer2 cache_peer {сервер 3} parent 3128 3130 name=peer3 cache_peer_access peer1 allow user1 cache_peer_access peer2 allow user2 cache_peer_access peer3 allow user3
При этом user1, user2 и user3 это acl пользователей.
В компании был уже настроен для этих случаев radius сервер. В centos 5 я шел путем настройки через pam, так как сам squid не собирал, но потом пришлось пойти по пути самостоятельной сборки (в стандартную не включен ssl) и я воспользовался ключом --enable-basic-auth-helpers=squid_radius_auth. Также, тем кто не хочет заморачиваться с pam я бы посоветовал отдельную библиотеку:
wget http://www.squid-cache.org/contrib/squid_radius_auth/squid_radius_auth-1.10.tar.gz
tar xvzf squid_radius_auth-1.10.tar.gz
cd squid_radius_auth-1.10
cp Makefile.default Makefile
make
make install
В любом варианте установки конфигурация squid не меняется, только пути к файлу в первой строчке:
auth_param basic program /usr/local/squid/libexec/basic_radius_auth -f /usr/local/squid/etc/radius_config auth_param basic children 5 auth_param basic realm {мой сервер} // будет отображаться в окошке авторизации auth_param basic credentialsttl 2 hours auth_param basic casesensitive off acl radius proxy_auth REQUIRED
Пример файла radius_config:
server {адрес radius сервера} password {секретная фраза для подключения к radius}
Правила оказались достаточно просты. Сначала указываем какой пользователь будет управляться каким правилом:
acl user1 proxy_auth "/usr/local/squid/userlist/user1" no_cache acl user2 proxy_auth "/usr/local/squid/userlist/user2" no_cache acl user3 proxy_auth "/usr/local/squid/userlist/user3" no_cache
И, естественно разрешаем им пользоваться прокси:
http_access allow localnet // для proxy-proxy http_access allow radius // для тех, кто не выбрал прокси - пользуется ближайшим http_access allow user1 http_access allow user2 http_access allow user3 http_access deny all // не забываем запретить остальным
Вот и все. Когда пользователь выбирает сервер, отдельная программа удаляет пользователя из файлов в userlist и добавляет в выбранный. Но это уже другая история.
Основная информация была взята из wiki squid, но там не хватает примеров:
В статье описан не весь сервис, а только настройка squid. Но не написанное относится только к динамике, а у всех она может быть своя. Я отметил только нужные моменты. Не пытайтесь все настроить методом копипаста — пропущены строки, отношения не имеющие к теме статьи.
Автор: nixson
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/75437
Ссылки в тексте:
[1] wiki.squid-cache.org: http://wiki.squid-cache.org/
[2] Setup Squid and FreeRADIUS on CentOS 5 and CentOS 6: http://safesrv.net/setup-squid-and-freeradius-on-centos-5/
[3] элементы ACL: http://rus-linux.net/MyLDP/FAQ/SQUID-FAQ/FAQ-10.html
[4] Источник: http://habrahabr.ru/post/244133/
Нажмите здесь для печати.