KOI8-R Kirill Lopuchov, lopuchov at mail ru <3proxy> Довольно часто перед системным администратором встает задача предоставить доступ к Internet ресурсам группе пользователей (небольшой офис,Internet кафе). Данную задачу можно решить несколькими способами, это настройка на Internet шлюзе: а) proxy сервера b) службы NAT (трансляция сетевых адресов) c) раздать каждому пользователю реальный IP адрес Давайте рассмотрим первый самый простой способ подключения, это proxy сервер традиционно для таких целей применяется популярный proxy Squid, но не всегда бывает необходимость в столь тяжеловатой программе :), да и в squid отсутствует такие иногда необходимые вещи как SOCKS4/5 сервер, TCP/UP порт маппинг. Поэтому вторым номером хочется представить вашему вниманию PROXY сервер, по названием "3proxy" адрес сайта http://www.security.nnov.ru/soft/3proxy/ разработанный нашим программистом из г. Нижний Новгород. Одним из главных его достоинств мне кажется это компактность и высокая переносимость. Код сервера написан так, что легко компилируется как для Win9x/2000/XP так и для Linux и FreeBSD. Сервер поддерживает следующие возможности: HTTP(S) proxy FTP over HTTP proxy SOCKS4/5 proxy POP3 proxy TCP & UDP маппинг портов листы доступа к различным службам и адресам ограничение пропускной способности канала каждого пользователя (чтобы пользователь не съел весь канал качая кучу файлов в несколько потоков :) ) ограничение трафика пользователя на день, неделю и месяц ведение журналов через ODBC (по моему такого нет ни в одном proxy) и syslog и т.д авторизацию пользователей ко всем proxy службам по имени и паролю или по ip адресам К недостаткам можно отнести это отсутствие кэширования информации :-|. Но в с последнее время Inernet контент становится все более динамическим (то есть не поддающийся кэшированию) и может быть для кого то экономия в 25% трафика за счет его кэширования не будет столь критична. Для тех кому же критична, автор предлагает пока использовать цепочку из 2х серверов и в качестве кэша такие сервера как wwwoffle или им подобные, либо ждать появления поддержки кеша в 3proxy :) Установка # wget http://www.security.nnov.ru/soft/3proxy/current/3proxy.tgz # tar -xvzf 3proxy.tgz # cd 3proxy # make -f Makefile.unix # mkdir /usr/local/3proxy # mkdir /usr/local/3proxy/logs # mkdir /usr/local/3proxy/stat # copy 3proxy /usr/local/3proxy # copy 3proxy.cfg.sample /usr/local/3proxy/3proxy.cfg # chown -R nobody:nogroup /usr/local/3proxy Далее приведу небольшой пример конфигурационного файла 3proxy.cfg с комментариями, более подробную информацию по конфигурированию можно найти файле 3proxy.cfg.sample или в HowTo http://www.security.nnov.ru/soft/3proxy/howtor.asp и FAQ http://www.security.nnov.ru/soft/3proxy/faqr.asp -------------3proxy.cfg------------- # ВНИМАНИЕ !! не должны быть пробелов # перед любыми опциями конфигурации !! # ip адрес DNS сервера провайдера или локального nserver 127.0.0.1 timeouts 1 5 30 60 180 1800 15 60 # создаем двух пользователей vasia и petia # и назначаем им пароли 24555 , 14656 и 45455 соответственно users vasia:CL:24555 users petia:CL:14656 users vova:CL:45455 # лог файл со списком запросов пользователей # будет создаваться каждый день новый log /usr/local/3proxy/logs/3proxy.log D logformat "%d-%m-%Y %H:%M:%S %U %C:%c %R:%r %O %I %T" # внешний интерфейс # (через который будут уходить запросы от сервера) external 0.0.0.0 # ip адрес интерфейса на котором будут приниматься # запросы от клиентов internal 172.16.0.1 # устанавливаем тип авторизации по имени и паролю auth strong # разрешаем доступ к портам 80,8080-8088 allow * * * 80,8080-8088 # расскоментировать секцию parent если у вас есть прокси верхнего # уровня и заменить ip,порт,имя пользователя и пароль на свои занчения # parent 1000 http 192.168.0.1 8080 username passwd # allow * # запускаем службу HTTP proxy на порту (3128 и # -n c отключенной NTLM авторизацией) proxy -p3128 -n # ограничиваем толшину канала для каждого # пользователя vasia и petia в 20000 bps # а для vova 10000 bps bandlimin 20000 vasia,petia bandlimin 10000 vova # запускаем сервер от пользователя nobody # (возможно в вашей ОС uid и gid пользователя nobody # будут другими для их определения воспользуйтесь коммандой id nobody) setgid 65534 setuid 65534 ------------------------------------ После того как мы создали конфигурационный файл сервера , запускаем 3proxy командой: /usr/local/3proxy/3proxy /usr/local/3proxy/3proxy.cfg