example1.txt 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. KOI8-R
  2. Kirill Lopuchov, lopuchov at mail ru
  3. <3proxy>
  4. Довольно часто перед системным администратором встает задача предоставить доступ к Internet-ресурсам группе пользователей (небольшой офис, Internet-кафе). Данную задачу можно решить, настроив на Internet-шлюзе proxy-сервер, службу NAT (трансляция сетевых адресов) или раздать каждому пользователю реальный IP адрес.
  5. Давайте рассмотрим самый простой способ подключения - установку proxy-сервера. Традиционно для этих целей применяется популярный proxy Squid, но не всегда бывает необходимость в столь тяжеловатой программе :), да и в squid отсутствуют такие иногда необходимые вещи как SOCKS4/5-сервер, TCP/UP порт-маппинг. Поэтому вторым номером хочется представить вашему вниманию PROXY-сервер, под названием "3proxy" (http://3proxy.ru/), разработанный нашим программистом из г. Нижний Новгород. Одним из главных его достоинств является компактность и высокая переносимость. Код сервера написан так, что легко компилируется как для Win9x/2000/XP так и для Linux и FreeBSD.
  6. Сервер поддерживает следующие возможности:
  7. HTTP(S) proxy;
  8. FTP over HTTP proxy;
  9. SOCKS4/5 proxy;
  10. POP3 proxy;
  11. TCP & UDP маппинг портов;
  12. листы доступа к различным службам и адресам;
  13. ограничение пропускной способности канала каждого пользователя (чтобы пользователь не съел весь канал, качая кучу файлов в несколько потоков :) );
  14. ограничение трафика пользователя на день, неделю и месяц;
  15. авторизацию пользователей ко всем proxy-службам по имени и паролю или по ip адресам;
  16. ведение журналов через ODBC (по-моему, такого нет ни в одном proxy) и syslog и т. д.
  17. К недостаткам можно отнести отсутствие кэширования информации :-|. Но в последнее время Inernet-контент становится все более динамичным (то есть не поддающийся кэшированию) и может быть для кого-то экономия в 25% трафика за счет его кэширования не будет столь критична. Для тех пользователей, кому она может оказаться критичной, автор предлагает использовать цепочку из 2-х серверов и в качестве кэша такие сервера как wwwoffle или им подобные, либо ждать появления поддержки кеша в 3proxy :)
  18. Установка
  19. # wget http://3proxy.ru/current/3proxy.tgz
  20. # tar -xvzf 3proxy.tgz
  21. # cd 3proxy
  22. # make -f Makefile.unix
  23. # mkdir /usr/local/3proxy
  24. # mkdir /usr/local/3proxy/logs
  25. # mkdir /usr/local/3proxy/stat
  26. # cp src/3proxy /usr/local/3proxy
  27. # touch /usr/local/3proxy/3proxy.cfg
  28. # chown -R nobody:nogroup /usr/local/3proxy
  29. Далее приведу небольшой пример конфигурационного файла 3proxy.cfg с
  30. комментариями, более подробную информацию по конфигурированию можно
  31. найти файле 3proxy.cfg.sample или в
  32. HowTo http://3proxy.ru/howtor.asp
  33. и FAQ http://3proxy.ru/faqr.asp
  34. -------------3proxy.cfg-------------
  35. # ВНИМАНИЕ !! не должны быть пробелов
  36. # перед любыми опциями конфигурации !!
  37. # ip-адрес DNS-сервера провайдера или локального
  38. nserver 127.0.0.1
  39. timeouts 1 5 30 60 180 1800 15 60
  40. # Создаем двух пользователей vasia, petia и vova
  41. # и назначаем им пароли 24555, 14656 и 45455 соответственно
  42. users vasia:CL:24555
  43. users petia:CL:14656
  44. users vova:CL:45455
  45. # Лог-файл со списком запросов пользователей
  46. # будет создаваться каждый день новый
  47. log /usr/local/3proxy/logs/3proxy.log D
  48. logformat "%d-%m-%Y %H:%M:%S %U %C:%c %R:%r %O %I %T"
  49. # Внешний интерфейс,
  50. # через который будут уходить запросы от сервера
  51. external 10.1.1.1
  52. # ip-адрес интерфейса, на котором будут приниматься
  53. # запросы от клиентов
  54. internal 192.168.1.1
  55. # Устанавливаем тип авторизации по имени и паролю
  56. auth strong
  57. # Разрешаем доступ к портам 80,8080-8088
  58. allow * * * 80,8080-8088
  59. # Расскоментировать секцию parent, если у вас есть прокси верхнего
  60. # уровня и заменить ip, порт, имя пользователя и пароль на свои значения
  61. # parent 1000 http 192.168.0.1 8080 username passwd
  62. # allow *
  63. # Запускаем службу HTTP-proxy на порту (3128) и
  64. # (-n) c отключенной NTLM-авторизацией)
  65. proxy -p3128 -n
  66. # Ограничиваем толшину канала для пользователей
  67. # vasia и petia в 20000 bps,
  68. # а для vova 10000 bps
  69. bandlimin 20000 vasia,petia
  70. bandlimin 10000 vova
  71. # Запускаем сервер от пользователя nobody
  72. # (возможно в вашей ОС uid и gid пользователя nobody
  73. # будут другими. Для их определения воспользуйтесь коммандой id nobody)
  74. setgid 65534
  75. setuid 65534
  76. ------------------------------------
  77. После того как мы создали конфигурационный файл сервера, запускаем 3proxy командой:
  78. /usr/local/3proxy/3proxy /usr/local/3proxy/3proxy.cfg