KOI8-R Kirill Lopuchov, lopuchov at mail ru <3proxy> Довольно часто перед системным администратором встает задача предоставить доступ к Internet-ресурсам группе пользователей (небольшой офис, Internet-кафе). Данную задачу можно решить, настроив на Internet-шлюзе proxy-сервер, службу NAT (трансляция сетевых адресов) или раздать каждому пользователю реальный IP адрес. Давайте рассмотрим самый простой способ подключения - установку proxy-сервера. Традиционно для этих целей применяется популярный proxy Squid, но не всегда бывает необходимость в столь тяжеловатой программе :), да и в squid отсутствуют такие иногда необходимые вещи как SOCKS4/5-сервер, TCP/UP порт-маппинг. Поэтому вторым номером хочется представить вашему вниманию PROXY-сервер, под названием "3proxy" (http://3proxy.ru/), разработанный нашим программистом из г. Нижний Новгород. Одним из главных его достоинств является компактность и высокая переносимость. Код сервера написан так, что легко компилируется как для Win9x/2000/XP так и для Linux и FreeBSD. Сервер поддерживает следующие возможности: HTTP(S) proxy; FTP over HTTP proxy; SOCKS4/5 proxy; POP3 proxy; TCP & UDP маппинг портов; листы доступа к различным службам и адресам; ограничение пропускной способности канала каждого пользователя (чтобы пользователь не съел весь канал, качая кучу файлов в несколько потоков :) ); ограничение трафика пользователя на день, неделю и месяц; авторизацию пользователей ко всем proxy-службам по имени и паролю или по ip адресам; ведение журналов через ODBC (по-моему, такого нет ни в одном proxy) и syslog и т. д. К недостаткам можно отнести отсутствие кэширования информации :-|. Но в последнее время Inernet-контент становится все более динамичным (то есть не поддающийся кэшированию) и может быть для кого-то экономия в 25% трафика за счет его кэширования не будет столь критична. Для тех пользователей, кому она может оказаться критичной, автор предлагает использовать цепочку из 2-х серверов и в качестве кэша такие сервера как wwwoffle или им подобные, либо ждать появления поддержки кеша в 3proxy :) Установка # wget http://3proxy.ru/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 # cp src/3proxy /usr/local/3proxy # touch /usr/local/3proxy/3proxy.cfg # chown -R nobody:nogroup /usr/local/3proxy Далее приведу небольшой пример конфигурационного файла 3proxy.cfg с комментариями, более подробную информацию по конфигурированию можно найти файле 3proxy.cfg.sample или в HowTo http://3proxy.ru/howtor.asp и FAQ http://3proxy.ru/faqr.asp -------------3proxy.cfg------------- # ВНИМАНИЕ !! не должны быть пробелов # перед любыми опциями конфигурации !! # ip-адрес DNS-сервера провайдера или локального nserver 127.0.0.1 timeouts 1 5 30 60 180 1800 15 60 # Создаем двух пользователей vasia, petia и vova # и назначаем им пароли 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 10.1.1.1 # ip-адрес интерфейса, на котором будут приниматься # запросы от клиентов internal 192.168.1.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