| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028 |
- 3APA3A 3proxy tiny proxy server HowTo
- <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
- <br>В стадии разработки
- <ul>
- <li><a href="#COMPILE">Компиляция</a>
- <ul>
- <li><a href="#MSVC">Как скомпилировать 3proxy Visual C++</a>
- <li><a href="#INTL">Как скомпилировать 3proxy Intel C Compiler под Windows</a>
- <li><a href="#GCCWIN">Как скомпилировать 3proxy GCC под Windows</a>
- <li><a href="#GCCUNIX">Как скомпилировать 3proxy GCC под Unix/Linux</a>
- <li><a href="#CCCUNIX">Как скомпилировать 3proxy Compaq C Compiler под Unix/Linux</a>
- </ul>
- <li><a href="#INSTALL">Установка и удаление 3proxy</a>
- <ul>
- <li><a href="#INSTNT">Как установить/удалить 3proxy под Windows 95/98/ME/NT/2000/XP как службу</a>
- <li><a href="#INST95">Как установить/удалить 3proxy под Windows 95/98/ME</a>
- <li><a href="#INSTUNIX">Как установить/удалить 3proxy под Unix/Linux</a>
- </ul>
- <li><a href="#SERVER">Конфигурация сервера</a>
- <ul>
- <li><a href="#SAMPLE">Как посмотреть пример файла конфигурации</a>
- <li><a href="#LOGGING">Как настроить ведение журнала</a>
- <li><a href="#LOGFORMAT">Как настроить формат журнала</a>
- <li><a href="#LOGANALIZERS">Как использовать лог-анализаторы с 3proxy</a>
- <li><a href="#LAUNCH">Как запустить конкретную службу (HTTP, SOCKS и т.д)</a>
- <li><a href="#BIND">Как повесить службу на определенный интерфейс или порт</a>
- <li><a href="#AUTH">Как ограничить доступ к службе</a>
- <li><a href="#USERS">Как создать список пользователей</a>
- <li><a href="#ACL">Как ограничить доступ пользователей к ресурсам</a>
- <li><a href="#REDIR">Как управлять перенаправлениями</a>
- <li><a href="#ROUNDROBIN">Как организовать балансировку между несколькими каналами</a>
- <li><a href="#CHAIN">Как составлять цепочки прокси</a>
- <li><a href="#BANDLIM">Как ограничивать скорости приема</a>
- <li><a href="#TRAFLIM">Как ограничивать объем принимаемого трафика</a>
- <li><a href="#NETLIST">Как строить списки сетей</a>
- <li><a href="#NSCACHING">Как управлять разрешением имен и кэшированием DNS</a>
- <li><a href="#DEMANDDIAL">Как устанавливать соединение по требованию</a>
- </ul>
- <li><a href="#CLIENT">Конфигурация и настройка клиентов</a>
- <ul>
- <li><a href="#IE">Как использовать 3proxy с Internet Explorer или другим браузером</a>
- <li><a href="#FTP">Как настраивать FTP клиент</a>
- <li><a href="#SMTP">Как использовать SMTP через 3proxy</a>
- <li><a href="#POP3">Как использовать службу POP3 Proxy</a>
- <li><a href="#CAP">Как использовать 3proxy с программой, не поддерживающей работу с прокси-сервером</a>
- <li><a href="#GAMES">Как использовать 3proxy с играми</a>
- </ul>
- <li><a href="#ADMIN">Администрирование и анализ информации</a>
- <ul>
- <li><a href="#NEWVERSION">Где взять свежую версию</a>
- <li><a href="#NTSERVICE">Как управлять службой 3proxy в Windows NT/2000/XP</a>
- <li><a href="#ERRORS">Коды ошибок в журнале</a>
- </ul>
- <li><a href="#QUEST">Как задать вопрос, которого нет в HowTo</a>
- </ul>
- <br>
- <hr>
- <li><a name="COMPILE"><b>Компиляция</b></a>
- <p>
- <ul>
- <li><a name="MSVC"><i>Как скомпилировать 3proxy Visual C++</i></a>
- <p>
- Извлеките файлы из архива 3proxy.tgz (например, с помощью WinZip).
- Используйте команду nmake /f Makefile.msvc.
- </p>
- <li><a name="INTL"><i>Как скомпилировать 3proxy Intel C Compiler под Windows</i></a>
- <p>
- См. <a href="#MSVC">Как скомпилировать 3proxy Visual C++</a>.
- Используйте Makefile.intl вместо Makefile.msvc
- </p>
- <li><a name="GCCWIN"><i>Как скомпилировать 3proxy GCC под Windows</i></a></li>
- <p>
- Извлеките файлы из архива 3proxy.tgz (например, с помощью WinZip или, при наличии
- Cygwin, tar -xzf 3proxy.tgz).
- Используйте команду make -f Makefile.win. Если по каким-то причинам вы хотите использовать
- библиотеку POSIX-эмуляции CygWin - используйте make -f Makefile.unix.
- При использовании CygWin, функции, специфичные для Windows (такие, как запуск в
- качестве службы) будут недоступны.
- </p>
- <li><a name="GCCUNIX"><i>Как скомпилировать 3proxy GCC под Unix/Linux</i></a></li>
- <p>
- Используйте make -f Makefile.unix. Должен использоваться GNU make, на
- некоторых системах необходимо использовать gmake вместо make. Под Linux
- необходимо использовать Makefile.Linux, под Solaris - Makefile.Solaris-* (в
- зависимости от используемого компилятора). Компиляция проверена в FreeBSD/i386,
- OpenBSD/i386, NetBSD/i386, RH Linux/Alpha, Debian/i386, Gentoo/i386, Gentoo/PPC,
- Solaris 10, но должно собираться в любых версиях *BSD/Linux/Solaris.
- В других системах может потребоваться модификация make-файла и/или исходных текстов.
- Для компиляции с поддержкой ODBC необходимо убрать -DNOODBC из флагов
- компиляции и добавить -lodbc (или другую ODBC-библиотеку) к флагам линковщика.
- </p>
- <li><a name="CCCUNIX"><i>Как скомпилировать 3proxy Compaq C Compiler под Unix/Linux</i></a></li>
- <p>
- Используйте make -f Makefile.ccc. Компиляция проверена в RH Linux 7.1/Alpha.
- В других системах может потребоваться модификация файла и/или исходных текстов.
- </p>
- </ul>
- <hr>
- <li><a name="INSTALL"><b>Установка и удаление 3proxy</b></a>
- <p>
- <ul>
- <li><a name="INSTNT"><i>Как установить/удалить 3proxy под Windows 95/98/ME/NT/2000/XP/2003 как службу</i></a>
- <p>
- Извлеките файлы из архива 3proxy.zip в любой каталог
- (например, c:\Program Files\3proxy). Если необходимо, создайте каталог для
- хранения файлов журналов. Создайте файл конфигурации 3proxy.cfg в
- каталоге 3proxy (см. раздел <a href="#SERVER">Конфигурация сервера</a>).
- Если используется версия более ранняя, чем 0.6, добавьте строку
- <pre>
- service</pre>
- в файл 3proxy.cfg. Откройте командную строку (cmd.exe).
- Перейдите в каталог с 3proxy и дайте команду 3proxy.exe --install:
- <pre>
- D:\>C:
- C:\>cd C:\Program Files\3proxy
- C:\Program Files\3proxy>3proxy.exe --install</pre>
- Сервис должен быть установлен и запущен. Если сервис не запускается,
- проверьте содержимое файла журнала,
- попробуйте удалить строку service из 3proxy.cfg, запустить 3proxy.exe вручную
- и проанализировать сообщения об ошибках.
- </p><p>
- Для удаления 3proxy необходимо остановить сервис и дать
- команду 3proxy.exe --remove:
- <pre>
- D:\>C:
- C:\>cd C:\Program Files\3proxy
- C:\Program Files\3proxy>net stop 3proxy
- C:\Program Files\3proxy>3proxy.exe --remove</pre>
- после чего каталог 3proxy можно удалить.
- <p>
- Установка в качестве системной службы под Windows 9x поддерживается с версии 0.5
- </p>
- <li><a name="INST95"><i>Как установить/удалить 3proxy под Windows 95/98/ME</i></a>
- <p>
- Извлеките файлы из архива 3proxy.zip в любой каталог
- (например, c:\Program Files\3proxy). Если необходимо, создайте каталог для
- хранения файлов журналов. Создайте файл конфигурации 3proxy.cfg в
- каталоге 3proxy (См. раздел <a href="#SERVER">Конфигурация сервера</a>).
- В файле конфигурации удалите строку
- <pre>
- service</pre>
- и добавьте строку
- <pre>
- daemon</pre>
- Создайте ярлык для 3proxy.exe и поместите его в автозагрузку либо с помощью
- редактора реестра regedit.exe добавьте в разделе
- <br>HKLM\Software\Microsoft\Windows\CurrentVersion\Run</br>
- строковый параметр
- <br>3proxy = "c:\Program Files\3proxy.exe" "C:\Program Files\3proxy.cfg"<br>
- Использование кавычек при наличии в пути пробела обязательно.
- Перезагрузитесь.
- Если сервер не запускается,
- проверьте содержимое файла журнала,
- попробуйте удалить строку daemon из 3proxy.cfg, запустить 3proxy.exe вручную
- и проанализировать сообщения об ошибках.
- </p>
- <li><a name="INSTUNIX"><i>Как установить/удалить 3proxy под Unix/Linux</i></a>
- <p>
- Скомпилируйте 3proxy (см. раздел <a href="#COMPILE">Компиляция</a>). Скопируйте
- исполняемые файлы в подходящий каталог (например, /usr/local/3proxy/sbin для
- серверных приложений или /usr/local/3proxy/bin для клиентских утилит).
- Создайте файл /usr/local/etc/3proxy.cfg.
- (См. раздел <a href="#SERVER">Конфигурация сервера</a>).
- Изменить расположение файла конфигурации можно, задав параметр при вызове
- 3proxy или изменив путь в файле 3proxy.c до компиляции.
- Добавьте вызов 3proxy в скрипты начальной инициализации.
- </p>
- </ul>
- <hr>
- <li><a name="SERVER"><b>Конфигурация сервера</b></a>
- <p>
- <ul>
- <li><a name="SAMPLE"><i>Как посмотреть пример файла конфигурации</i></a>
- <p>
- Пример файла конфигурации 3proxy.cfg.sample поставляется с любым дистрибутивом
- программы.
- </p>
- <li><a name="LOGGING"><i>Как настроить ведение журнала</i></a>
- <p>
- 3proxy поддерживает ведение журнала на экран (stdout), в файл, через ODBC и через службу
- syslog (только для Unix/Linux/CygWin). Можно управлять либо общим файлом
- журнала, задаваемым в файле конфигурации 3proxy.cfg и единым для всех служб,
- либо индивидуальными файлами для отдельных служб (например, команда
- socks -l/var/log/socks.log запускает SOCKS прокси
- и задает для него индивидуальный журнал). Для общего файла журнала
- поддерживается ротация (т.е. периодическое создание новых файлов журнала
- с предопределенными именами и удаление файлов старше определенного срока)
- и архивация файлов журнала.
- Тип журнала определяется параметром log в файле конфигурации либо ключом
- -l при вызове конкретной службы (например, socks прокси). log или -l без
- параметров соответствуют ведению журнала на экран (stdout).
- <pre>
- log filename</pre>
- и
- <pre>
- -lfilename</pre>
- соответствуют записи журнала в файл filename. Если при указании имени файла
- в log в нем содержится символ %, то имя рассматривается как форматный
- спецификатор (см. logformat). Например,
- log c:\3proxy\logs\%y%m%d.log D создаст файл типа c:\3proxy\logs\060725.log,
- для образования даты будет использовано местное время.
- <pre>
- log @ident</pre>
- и
- <pre>
- -l@ident</pre>
- соответствуют ведению журнала через syslog с идентификатором ident.
- <pre>
- log &connstring</pre>
- соответствует ведению журнала через ODBC, connstring задается в формате
- datasource,username,password (последние два параметра опциональны, если
- datasource не требует или уже содержит сведения для авторизации). При этом
- команда logformat должна задавать SQL запрос, который необходимо выполнить
- для добавления записи в журнал, см <a href="#LOGFORMAT">Как настроить формат журнала</a>.
- </p><p>
- Управление ротацией общего файла журнала происходит с помощью команд файла
- конфигурации log, rotate и archiver.
- <pre>
- log filename LOGTYPE</pre>
- задает тип ротации. LOGTYPE может принимать значения:
- <ul>
- <li>M, ежемесячная ротация
- <li>W, еженедельная ротация
- <li>D, ежедневная ротация
- <li>H, ежечасная ротация
- <li>С, ежеминутная ротация
- </ul>
- <pre>
- rotate NUMBER</pre>
- указывает на число файлов, участвующих в ротации (т.е. сколько последних
- журналов хранить).
- <pre>
- archiver EXT COMMAND PARAMETERS</pre>
- задает параметры архивации журнала. EXT указывает на расширение
- архива (например, zip, gz, Z, rar и т.д.) COMMAND указывает на
- программу и PARAMETERS - на параметры командной строки. Архиватор
- должен сам удалять исходный файл, также ему можно передать имя файла
- с помощью макроса %F и ожидаемое имя архива с помощью макроса %A.
- В качестве архиватора вполне можно задать пакетный файл, который,
- например, будет загружать данные из журнала в базу данных.
- Примеры команды archiver для популярных архиваторов можно найти в
- 3proxy.cfg.sample
- <pre>
- logdump OFFSET_BYTES_FROM_SERVER OFFSET_BYTES_FROM_CLIENT</pre>
- Задает смещение в байтах на входящий и исходящий трафик, при достижении
- которого необходимо создавать запись в журнале даже в том случае, если
- соединение еще не завершено. Если logdump не указан или значения
- OFFSET_BYTES_FROM_SERVER OFFSET_BYTES_FROM_CLIENT нулевые - в журнале
- будет создана единственная запись по окончании обработки запроса клиента
- (при разрыве соединения). Пример:
- <pre>
- logdump 1048576 1048576</pre>
- создает в журнале запись на каждый мегабайт входящего или исходящего
- трафика.
- </p>
- <li><a name="LOGFORMAT"><i>Как настроить формат журнала</i></a>
- <p>
- Начиная с версии 0.3, формат журнала может быть настроен с помощью
- команды logformat со строкой формата. Первый символ строки должен
- быть L или G, что указывает на формат, в котором будет указываться
- время и даты, L - текущее локальное время, G - абсолютное время по
- Гринвичу. Строка формата может содержать следующие модификаторы:
- <ul>
- <li> %y - Год (последние две цифры)
- <li> %Y - Год (четырехзначный)
- <li> %m - Номер месяца (01-12)
- <li> %o - Трехбуквенная аббревиатура месяца
- <li> %d - День (01-31)
- <li> %H - Час (00-23)
- <li> %M - Минута (00-59)
- <li> %S - Секунда (00-59)
- <li> %t - Временная метка (число секунд с 00:00:00 1 января 1970 г. по Гринвичу)
- <li> %. - Миллисекунды
- <li> %z - Временная зона в почтовом формате (от Гринвича, '+' восток, '-' запад ЧЧММ), например, Московское зимнее время +0300.
- <li> %U - Имя пользователя ('-', если отсутствует).
- <li> %N - Название прокси сервиса (PROXY, SOCKS, POP3P, и т.д.)
- <li> %p - Порт прокси сервиса
- <li> %E - Код ошибки (см. <a href="#ERRORS">Коды ошибок в журнале</a>)
- <li> %C - IP клиента
- <li> %c - Порт клиента
- <li> %R - IP сервера (исходящего соединения по запросу клиента)
- <li> %r - Порт сервера (исходящего соединения по запросу клиента)
- <li> %Q – IP, запрошенный клиентом
- <li> %q – Порт, запрошенный клиентом
- <li> %I - Принято байт от сервера
- <li> %O - Отправлено байт на сервер
- <li> %n - Имя хоста из запроса
- <li> %h - Число звеньев до конечного сервера (при использовании перенаправлений или чейнинга
- см. <a href="#CHAIN">Как составлять цепочки прокси</a>)
- <li> %T – Текст, специфичный для прокси сервиса (например, запрошенный URL).
- Можно использовать %X-YT, где X и Y положительные числа, тогда
- отображаются только поля с X по Y текста. Поля считаются разделенными
- пробельным символом.
- </ul>
- Пример:
- <pre>
- logformat "L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"</pre>
- будет генерировать в журнале записи типа
- <pre>
- 1042454727.0296 SOCK4.1080 000 3APA3A 127.0.0.1:4739 195.122.226.28:4739 505 18735 1 GET http://3proxy.ru/ HTTP/1.1</pre>
- (без переноса строк)
- При использовании ODBC, logformat должен задавать формат SQL команды,
- которую необходимо дать для внесения записи в журнал, например:
- <pre>
- logformat "GINSERT INTO proxystat VALUES (%t, '%c', '%U', %I)"</pre>
- </p>
- <li><a name="LOGANALIZERS"><i>Как использовать лог-анализаторы с 3proxy</i></a>
- <p>
- Просто сделайте формат ведения журнала совместимым с одним из форматов,
- поддерживаемых анализатором. Это позволяет использовать практически любые
- анализаторы. Примеры совместимых форматов:
- <br>
- Формат Squid access.log:
- <pre>
- "- +_G%t.%. %D %C TCP_MISS/200 %I %1-1T %2-2T %U DIRECT/%R application/unknown"</pre>
- Более совместимый формат, но без %D
- <pre>
- "- +_G%t.%. 1 %C TCP_MISS/200 %I %1-1T %2-2T %U
- DIRECT/%R application/unknown"</pre>
- Формат ISA 2000 proxy WEBEXTD.LOG (поля разделены табуляцией):
- <pre>
- "- + L%C %U Unknown Y %Y-%m-%d %H:%M:%S
- w3proxy 3PROXY - %n %R %r %D
- %O %I http TCP %1-1T %2-2T - -
- %E - - -"</pre>
- Формат ISA 2004 proxy WEB.w3c (поля разделены табуляцией):
- <pre>
- "- + L%C %U Unknown %Y-%m-%d %H:%M:%S
- 3PROXY - %n %R %r %D %O
- %I http %1-1T %2-2T - %E -
- - Internal External 0x0 Allowed"</pre>
- Формат ISA 2000/2004 firewall FWSEXTD.log (поля разделены табуляцией):
- <pre>
- "- + L%C %U unnknown:0:0.0 N %Y-%m-%d
- %H:%M:%S fwsrv 3PROXY - %n %R %r
- %D %O %I %r TCP Connect - -
- - %E - - - - -"</pre>
- Стандартный лог HTTPD (Apache и другие):
- <pre>
- "-""+_L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I"</pre>
- Более совместимый, но без кода ошибки:
- <pre>
- "-""+_L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" 200 %I"</pre>
- <li><a name="LAUNCH"><i>Как запустить конкретную службу (HTTP, SOCKS и т.д)</i></a>
- <p>
- 3proxy поставляется в двух вариантах: как набор отдельных модулей (proxy,
- socks, pop3p, tcppm, udppm) и как универсальный прокси-сервер (3proxy).
- Универсальный прокси сервер - это законченная программа, которой не требуются
- отдельные модули.
- <br>Отдельный модуль управляется только из командной строки. Поэтому для
- отдельного модуля не поддерживаются многие функции, такие как управление
- доступом и ротация журнала. Запуск модуля осуществляется из командной строки.
- Например,
- <pre>
- $/sbin/socks -l/var/log/socks.log -i127.0.0.1</pre>
- запускает SOCKS на порту 127.0.0.1:1080 с ведением журнала /var/log/socks.log
- Справку по опциям командной строки можно получить запустив модуль с ключом -?.
- </p><p>
- Если используется 3proxy, то запускаемые службы указываются в файле 3proxy.cfg.
- Файл 3proxy.cfg просматривается 3proxy построчно, каждая строка рассматривается
- как управляющая команда. Синтаксис команд описан в 3proxy.cfg.sample. Например,
- <pre>
- log /var/log/3proxy.log D
- rotate 30
- internal 127.0.0.1
- external 192.168.1.1
- proxy
- socks
- pop3p -l/var/log/pop3proxy</pre>
- запускает 3 службы - PROXY, SOCKS и POP3 Proxy. Каждая слушает на интерфейсе
- 127.0.0.1 порт по-умолчанию (3128 для proxy, 1080 для socks и 110 для
- pop3p). Журналы всех служб кроме pop3p ведутся в файле /var/log/3proxy.log,
- который ежедневно меняется. Хранятся 30 последних файлов. Для pop3p ведется
- отдельный журнал /var/log/pop3proxy (см. <a href="#LOGGING">Как настроить ведение журнала</a>).
- </p>
- <li><a name="BIND"><i>Как повесить службу на определенный интерфейс или порт</i></a>
- <p>
- Опция -i позволяет указать внутренний интерфейс, -p - порт (пробелы в
- опциях не допускаются). Например, чтобы служба proxy висела на порту
- 8080 интерфейсов 192.168.1.1 и 192.168.2.1 необходимо дать команды
- </p>
- <pre>
- proxy -p8080 -i192.168.1.1
- proxy -p8080 -i192.168.2.1</pre>
- <li><a name="AUTH"><i>Как ограничить доступ к службе</i></a>
- <p>
- Во-первых, для ограничения доступа необходимо указать внутренний интерфейс,
- на котором прокси-сервер будет принимать соединения. Внутренний интерфейс
- указывается с помощью команды internal в файле конфигурации или с помощью
- ключа -i конкретного модуля.
- (см. <a href="#LAUNCH">Как запустить конкретную службу (HTTP, SOCKS и т.д)</a>).
- Отсутствие указания внутреннего интерфейса может привести к тому, что ваш
- прокси будет открытым.
- <p> Указание внешнего интерфейса (т.е. IP, с которого сервер будет устанавливать
- внешние соединения) так же является полезным. Для этого служит команда external
- и ключ -e соответственно.
- Для универсального прокси возможна дополнительная авторизация доступа с помощью
- имени/пароля, NetBIOS имени пользователя и по спискам доступа (по IP клиента,
- IP и порту назначения, см. <a href="#ACL">Как ограничить доступ пользователей к ресурсам</a>).
- Тип авторизации устанавливается командой auth в файле конфигурации.
- <pre>
- auth none</pre>
- Отсутствие какой-либо авторизации. Списки доступа не проверяются.
- <pre>
- auth iponly</pre>
- Будет идти проверка по списку доступа с использованием IP клиента, IP и номера
- порта назначения.
- <pre>
- auth nbname</pre>
- Перед проверкой по списком доступа будет произведена попытка получить NetBIOS
- имя клиента. Для этого используется NetBIOS код службы messager (0x03). Если
- имя определить не удалось (служба messager для Windows NT/2000/XP или WinPopUP
- для 95/98/ME не запущена), то имя будет считаться пустым. Далее следует
- проверка по спискам доступа. Данный тип авторизации не зависит от платформы
- сервера (т.е. прокси сервер, запущенный под Unix, сможет определять NetBIOS
- имена). Его рекомендуется использовать в однородных сетях, где у всех клиентов
- установлена Windows NT/2000/XP и пользователи не имеют доступа к
- привелегированным учетным записям. Этот вид авторизации не является надежным.
- <pre>
- auth strong</pre>
- Проверяется имя и пароль, переданные пользователем при подключении к прокси.
- Данный вид авторизации работает только с proxy и socks. Необходимо задание
- списка пользователей (см <a href="#USERS">Как создать список пользователей</a>).
- Соединения от неизвестных пользователей не принимаются. После проверки имени
- пользвоателя и пароля происходит проверка списков доступа.
- </p><p>
- Для разных служб можно установить различные типы авторизации, например,
- <pre>
- auth none
- pop3p
- auth iponly
- proxy
- auth strong
- socks</pre>
- не накладывает ограничений на использование POP3 Proxy, производит проверку
- по спискам доступа для пользователей HTTP Proxy и требует авторизации с именем
- и паролем для SOCKS.
- </p><p>С версии 0.6 возможно использвоать двойную авторизацию, например,
- <pre>
- auth iponly strong
- allow * * 192.168.0.0/16
- allow user1,user2
- proxy</pre>
- будет использовать авторизацию только в том случае, если не удалось пропустить
- пользователя с авторизаций iponly, т.е. для доступа к ресурсам 192.168.0.0/16
- авторизация не требуется.
- </p><p>С версии 0.6 так же можно использвоать кэширование авторизации (имени
- пользователя) с целью повышения производительности. Использовать кэширование
- для strong практически не имеет смысла, она полезно для nbname и авторизации
- через внешние плагины, типа WindowsAuthentication. Кэширование настраивается
- командой authcache с двумя параметрами - типом кэширования и временем, на
- которое кэшируется пароль. Возможные типы: ip - после успешной авторизации в
- течение времени кэширования все запросы пришедшие с того же адреса считаются
- запросами от того же пользователя, name - после успешной авторизации от
- пользователя с тем же именем требуют указания имени, но реально аутентификации
- не производится, ip,name - запрос должен придти от того же IP и с тем же
- именем. user,password - имя и пароль пользователя сверяются с кэшированными.
- Возможны и другие сочетания. Для авторизации должен использоваться специальный
- метод авторизации - cache. Пример:
- <pre>
- authcache ip 60
- auth cache strong windows
- proxy -n</pre>
- Кэширование влияет на безопасность доступа. Ни в коем случае не следует
- использовать кэширование для доступа к критичным ресурсам, в частности к
- интерфейсу администрирования.
- </p>
- <li><a name="USERS"><i>Как создать список пользователей</i></a>
- <p>
- Список пользователей задается с помощью команды users.
- <pre>
- users USERDESC ...</pre>
- С помощью одной команды можно задать несколько пользователей, можно
- давать несколько команд users. USERDESC - описание пользователя. Описание
- пользователя состоит из трех полей разделенных : (двоеточием) - имени (login)
- типа пароля и пароля. Например:
- <pre>
- users admin:CL:bigsecret test:CL:password test1:CL:password1
- users "test2:CR:$1$lFDGlder$pLRb4cU2D7GAT58YQvY49."
- users test3:NT:BD7DFBF29A93F93C63CB84790DA00E63</pre>
- Обратите внимание на двойные кавычки - они необходимы для второго пользователя,
- т.к. в его пароле встречается знак $, который для файла 3proxy.cfg означает
- включение другого файла. Поддеживается следующие типы паролей:
- <ul>
- <li>тип не указан - использовать системную авторизацию для
- данного пользователя (пока не реализовано).
- <li>CL - пароль в открытом тексте
- <li>CR - пароль в формате crypt() (только MD5)
- <li>NT - пароль в формате NT в шестнадцатеричной кодировке
- </ul>
- NT и crypt пароли могут быть использованы для импорта учетных записей из
- Windows/Samba и Unix соответственно (для Windows можно использовать утилиты
- семейства pwdump).
- Учетные записи удобно хранить в отдельном файле (в таком случае можно хранить
- их построчно в формате, типичном для файлов паролей). Включить файл можно с
- помощью макроса $:
- <pre>
- users $/etc/.3proxypasswd</pre>
- или
- <pre>
- users $"c:\Program Files\3proxy\passwords"</pre>
- Шифрованные NT и crypt пароли можно создавать с помощью утилиты mycrypt.
- <br>Список пользователей един для всех служб. Разграничение доступа по службам
- необходимо производить с помощью списков доступа.
- </p>
- <li><a name="ACL"><i>Как ограничить доступ пользователей к ресурсам</i></a>
- <p>
- Для построения списков доступа используются команды allow, deny и
- flush. Команды имеют следующую структуру:
- <pre>
- allow <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>
- deny <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>
- flush</pre>
- Команда flush используется для сброса существующего списка доступа (это
- необходимо для того, чтобы можно было задать различные списки доступа для
- различных служб). allow служит для разрешения соединения, deny - для запрета
- соединения. Команда parent используется в качестве расширения команды
- allow для управления перенаправлениями соединений (о перенаправлении см. <a href="#REDIR">Как управлять перенаправлениями</a>).
- В момент установки исходящего соединения просматривается список доступа и
- находится первая запись, соответствующая запрошенному клиентом соединению.
- Если запись соттветствует allow - соединение разрешается, deny - запрещается.
- Если список пуст, то соединение разрешается. Если список не пуст, но подходящей
- записи нет, то соединение запрещается. При этом:
- <ul>
- <li><userlist> - список логинов пользователей через запятую
- <li><sourcelist> - список сетей клиентов через запятую. Сеть
- задается в формате xxx.yyy.zzz.mmm/l, где l - длина маски
- сети (количество ненулевых байт). Например, 192.168.1.0/24
- соответствует сети с маской 255.255.255.0.
- <li><targetlist> - список сетей назначения через запятую
- <li><targetportlist> - список портов назначения через запятую.
- можно задать диапазон портов через -, например, 80,1024-65535
- <li><commandlist> - список команд, через запятую, для которых применяется правило:
- <br> CONNECT - установить исходящее TCP соединение (например, SOCKSv4/5, POP3 proxy, и т.д.)
- <br> BIND - разрешить входящее TCP соединение (SOCKSv5)
- <br> UDPASSOC - создать UDP-ассоциацию (SOCKSv5)
- <br> ICMPASSOC - создать ICMP-ассоциацию (не реализовано)
- <br> HTTP_GET - HTTP GET запрос (HTTP proxy)
- <br> HTTP_PUT - HTTP PUT запрос (HTTP proxy)
- <br> HTTP_POST - HTTP POST запрос (HTTP proxy)
- <br> HTTP_HEAD - HTTP HEAD запрос (HTTP proxy)
- <br> HTTP_CONNECT - HTTP CONNECT запрос (HTTP proxy)
- <br> HTTP_OTHER - другой HTTP запрос (HTTP proxy)
- <br> HTTP - соответствует любому HTTP запросу кроме HTTP_CONNECT (HTTP proxy)
- <br> HTTPS - тоже, что HTTP_CONNECT (HTTP proxy)
- <br> FTP_GET - FTP get запрос
- <br> FTP_PUT - FTP put запрос
- <br> FTP_LIST - FTP list запрос
- <br> FTP - соответствует любому FTP запросу
- <br> ADMIN - доступ к интерфейсу администрирования
- <li><weekdays> задает список дней недели, 1 соответствует
- понедельнику, 0 или 7 - воскресенье. 1-5 означает с понедельника
- по пятницу (включительно). 1,3,5 задает нечетные дни недели.
- <li><timeperiodslist> список интервалов дня в формате
- ЧЧ:ММ:СС-ЧЧ:ММ:СС, например, 00:00:00-08:00:00,17:00:00-24:00:00
- задает нерабочее время.
- </ul>
- Примеры использования листов доступа можно найти в файле 3proxy.cfg.sample.
- </p>
- <li><a name="REDIR"><i>Как управлять перенаправлениями</i></a>
- <p>
- Перенаправления имеет смысл использовать, например, чтобы перенаправить
- обращения определенных клиентов или на определнные сервера на другой сервер
- (например, при попытке доступа на Web сервер с недозволенным материалом
- перенаправить на собственный Web сервер, или для того, чтобы в зависимости
- от IP клиента перенаправлять его соединения на разные сервера (особенно при
- отображении портов через tcppm). Кроме того, перенаправление может быть
- использовано, например, для перенаправления все исходящих HTTP запросов,
- посланных через SOCKS, на HTTP прокси. Поскольку формат запроса к Web серверу
- и Proxy различается, не любой Proxy сервер способен корректно обработать
- перенаправленный запрос (HTTP proxy в комплекте 3proxy нормально обрабатывает
- перенаправленные запросы, что делает возможным его использования в качестве
- "прозрачного" прокси. Кроме того, HTTP прокси обнаруживает перенаправления
- на родительский прокси и генерирует нормальные заголовки. Пример простейшего
- перенаправления:
- <pre>
- auth iponly
- allow *
- parent 1000 http 192.168.1.1 3128
- proxy</pre>
- перенаправляет весь трафик службы proxy на родительский HTTP-прокси сервер
- 192.168.1.1 порт 3128.
- <br>
- Если в качестве номера порта указан порт 0, то указанный IP адрес используется
- в качестве внешнего адреса для установки соединения (аналог -eIP, но только
- для запросов попадающих под allow).
- <br>
- Специальным случаем перенаправлений являются локальные перенаправления,
- которые, как правило, используются совместно со службой socks. В локальных
- перенаправлениях IP адрес 0.0.0.0 порт 0. Например,
- <pre>
- auth iponly
- allow * * * 80
- parent 1000 http 0.0.0.0 0
- allow * * * 21
- parent 1000 ftp 0.0.0.0 0
- allow * * * 110
- parent 1000 pop3 0.0.0.0 0
- socks</pre>
- перенаправляет все содеинения, проходящие через SOCKS-сервер по 80 порту, в
- локальный HTTP прокси, 21-му - в FTP, и 110 - в POP3 прокси. При этом службы
- proxy, ftppr или pop3pr запускать не требуется. Это может быть полезно для
- того, чтобы видеть в логах записи о посещаемых пользвоателем ресурсах и
- загружаемых файлах даже в том случае, если он подключается через SOCKS.
- </p>
- <li><a name="ROUNDROBIN"><i>Как организовать балансировку между несоклькими каналами</i></a>
- <p>
- Сам по себе прокси не может управлять маршрутизацией пакетов сетевого уровня.
- Единственная возможность для управления внешними соединениями - это выбор
- внешнего интерфейса. Сделать выбор внешнего интерфейса случайным начиная
- с версии 0.6 можно с использованием локальных перенаправлений (с номером
- порта равным нулю):
- <pre>
- auth iponly
- allow *
- parent 500 http 10.1.1.101 0
- parent 500 http 10.2.1.102 0</pre>
- будет использовать внешний интерфейс 10.1.1.1 или 10.2.1.1 с вероятностью 0.5.
- Внешний интерфейс это то же, что задается командой external или опцией -e.
- Чтобы это работало как ожидается, необходимо, чтобы локальным интерфейсам
- 10.1.1.1 и 10.2.1.1 соответствовали разные маршруты по-умолчанию.
- <p>
- Если оба адреса принадлежат одной сети, например, 10.1.1.101 и 10.1.1.102 и
- нужно случайным образом выбирать один из шлюзов 10.1.1.1 и 10.1.1.2, то нужно
- управлять роутингом примерно так (при условии что маршрут по-умолчанию не
- задан):
- <pre>
- route add -p 10.1.1.1 10.1.1.101
- route add -p 10.1.1.2 10.1.1.102
- route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.1
- route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.2</pre>
- Если второго адреса на прокси сервере нет - его надо добавить. Под Linux/Unix
- лучше использовать source routing.
- </p>
- <li><a name="CHAIN"><i>Как составлять цепочки прокси</i></a>
- <p>
- Для составления цепочек прокси так же можно использовать команду parent, которая
- является расширением команды allow (т.е. команде parent должна предшествовать
- команда allow). С помощью этой команды можно строить цепочки из HTTPS
- (HTTP CONNECT), SOCKS4 и SOCKS5 прокси (т.е. последовательно подключаться
- через несколько прокси), при этом возможна авторизация на родительском прокси,
- звено цепочки может выбираться случайным образом из несольких значений
- с вероятностью согласно их весу. Вес (от 1 до 1000) задается для каждого
- прокси. Сумма весов по всем перенаправлениям должна быть кратна 1000.
- Прокси с весами до 1000 группируются, и при построении цепочки один из них
- выбирается случайно согласно весу. Длина цепочки определяется из суммарного
- веса. Например, если суммарный вес цепочки 3000, в цепочке будет 3 звена (хопа).
- Синтаксис команды:
- <pre>
- parent <weight> <type> <ip> <port> <username> <password></pre>
- weight - вес прокси, type - тип прокси (tcp - перенаправление соединения,
- может быть только последним в цепочке, http - синоним tcp, connect - HTTP
- CONNECT/HTTPS прокси, socks4 - SOCKSv4 прокси, socks5 - SOCKSv5 прокси),
- ip - IP адрес прокси, port - порт прокси, username - имя для авторизации
- на прокси (опционально), password - пароль для авторизации на прокси
- (опционально).
- <br>Пример:
- <pre>
- allow *
- parent 500 socks5 192.168.1.1 1080
- parent 500 connect 192.168.10.1 3128</pre>
- Создает цепочку из одного звена (суммарный вес 1000), в котором один из двух
- прокси выбирается случайно с равной вероятностью (веса равны). В цепочку
- перенаправляются все исходящие соединения (определяется командой allow).
- <pre>
- allow * * * 80
- parent 1000 socks5 192.168.10.1 1080
- parent 1000 connect 192.168.20.1 3128
- parent 300 socks4 192.168.30.1 1080
- parent 700 socks5 192.168.40.1 1080</pre>
- Создает цепочку из трех звеньев (суммарный вес 3000). Первое звено -
- 192.168.10.1, второе - 192.168.20.1, а третье - либо 192.168.30.1 с
- вероятностью 0.3 либо 192.168.40.1 с вероятностью 0.7
- </p>
- <li><a name="BANDLIM"><i>Как ограничивать скорости приема</i></a>
- <p>
- 3proxy позволяет устанавливать фильтры ширины потребляемого канала. Для этого
- служат команды bandlimin/bandlimout и nobandlimin/nobandlimout
- (in в команде означает, что правило применяется к входящему трафику,
- out - к исходящему).
- <pre>
- bandlimin <bitrate> <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>
- nobandlimin <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist></pre>
- <p>
- bitrate указывает ширину потока в битах в секунду (именно в битах). В остальном
- команды аналогичны командам allow/deny с тем отличием, что команды bandlim
- не имеют привязки к конкретному сервису, такому как HTTP прокси или SOCKS
- и действуют на все сервисы, трафик по всем соединениям, попавшим под действие
- правила суммируется независимо от того, через какой сервис это соединение
- установлено.
- <pre>
- bandlimin 57600 * 192.168.10.16
- bandlimin 57600 * 192.168.10.17
- bandlimin 57600 * 192.168.10.18
- bandlimin 57600 * 192.168.10.19</pre>
- устанавалиет канал 57600 для каждого из четырех клиентов,
- <pre>
- bandlimin 57600 * 192.168.10.16/30</pre>
- устанавалиает суммарный канал 57600 на 4-х клиентов. Если необходимо, чтобы на
- какой-то сервис не было ограничения ширины канала, следует указать nobandlim
- для этого сервиса, например:
- <pre>
- nobandlimin * * * 110
- bandlimin 57600 * 192.168.10.16/32</pre>
- разрешает клиентам неограниченный по скорости доступ по протоколу POP3.
- </p>
- <li><a name="TRAFLIM"><i>Как ограничивать объем принимаемого трафика</i></a>
- <p>
- <pre>
- counter <filename> <type> <reportpath>
- countin <number> <type> <amount> <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>
- nocountin <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist></pre>
- countout <number> <type> <amount> <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>
- nocountout <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist></pre>
- <p>
- Команды позволяют установить лимит трафика на день, неделю или месяц.
- Сведения о трафике постоянно сохраняются в двоичном файле, указываемом
- командой counter, что делает подсчет трафика независимым от
- перезагрузки прокси. Можно управлять двоичным файлом, используя утилиту
- countersutil.
- Действие команд countin/nocountin аналогично действию bandlimin/nobandlimin,
- number - задает последовательный номер счетчика, номер должен быть
- уникальным положительным числом. Значение 0 указывает, что сведения
- для данного счетчика не надо сохранять в файле.
- <br>
- reportpath - путь, по которому будут создаваться текстовые отчеты по
- потребленному трафику.
- <br>
- type - тип ограничения или частота создания файлов отчета.
- D (На день), W (на неделю) или M (на месяц).
- <br>
- amount - объем трафика на указанный период в мегабайтах.
- </p>
- <li><a name="NETLIST"><i>Как строить списки сетей</i></a>
- <p>
- Очень часто списки сетей и пользователей бывают достаточно громоздкими.
- 3proxy не поддерживает создание групп, но позволяет включение файлов. Это
- означает, что для удобства администрирования выгодно хранить списки
- пользователей и списки сетей в отдельных файлах и при необходимости дать
- пользователю доступ к тому или иному ресурсу, править файл со списком
- пользователей или сетей вместо того, чтобы править сам файл 3proxy.cfg. В файле
- 3proxy.cfg файл со списком можно включить с помощью макроса $.
- Поскольку в 3proxy есть ограничения на максимальный размер элемента
- конфигурации, большие списки следует разбивать на несколько файлов и
- использовать несколько записей списка контроля доступом.
- В комплекте с 3proxy поставляется утилита dighosts, которая позволяет построить
- список сетей по странице Web. Утилита осуществляет поиск адресов на Web-странице
- в формате АДРЕС МАСКА или АДРЕС/ДЛИНА. Утилиту dighosts можно вызвать во время
- старта 3proxy, используя команду system. Например:
- <pre>
- system "dighosts http://provider/network.html local.networks"
- allow * * $local.networks
- allow *
- parent 1000 proxy.provider 3128 *
- proxy
- flush</pre>
- В данном случае в файле local.networks генерируется список локальных сетей по
- странице networklist.html. Далее используется список контроля доступа для того,
- чтобы разрешить локальному прокси-серверу доступ к локальным сетям напрямую,
- а все остальные запросы перенаправить на прокси-сервер провайдера.
- </p>
- <li><a name="NSCACHING"><i>Как управлять разрешением имен и кэшированием DNS</i></a>
- <p>
- Для разрешения имен и кэширования применяются команды nserver,
- nscache и nsrecord.
- <pre>
- nserver 192.168.1.2
- nserver 192.168.1.3</pre>
- указывает 3proxy какие машины следует использвоать в качестве серверов
- DNS. Сервер 192.168.1.3 будет использоваться толкьо при недостижимости
- 192.168.1.2. Можно указать до 5 серверов. Если nserver не указан, будут
- использованы системные функции разрешения имен.
- <pre>
- nscache 65535</pre>
- указывает размер кэша для разрешения имен (обычно достаточно большой).
- Кэш исопльзуется только при явном указании nserver.
- <pre>
- nsrecord server.mycompany.example.com 192.168.1.1
- nsrecord www.porno.com 127.0.0.2
- ...
- deny * * 127.0.0.2</pre>
- добавляет статическую запись в кэш.</p>
- <li><a name="DEMANDDIAL"><i>Как устанавливать соединение по требованию</i></a>
- <p>
- Команда dialer задает программу, которая будет запускаться при
- невозможности разрешить имя компьютера, например:
- <pre>
- dialer "rasdial PROVIDER"</pre>
- (описание rasdial можно найти на сервере поддержки Microsoft).
- Есть два аспекта: невозможность разрешения имени еще не свидетельствует
- об отсутствии соединения (это должна учитывать вызываемая программа),
- при использовании nscache имя может разрешиться при отсутствии
- соединения. В таких случаях полезно запрашивать заведомо несуществующий
- ресурс, например, http://dial.right.now/.
- </p>
- </ul>
- <hr>
- <li><a name="CLIENT"><b>Конфигурация клиентов</b></a>
- <p>
- <ul>
- <li><a name="IE"><i>Как использовать 3proxy с Internet Explorer или другим браузером</i></a>
- <p>Мы будем рассматривать Interenet Explorer, т.к. у него больше особенностей
- настройки, с другими браузерами должно возникать меньше вопросов.
- <p>Есть два основных способа работы с 3proxy - использовать HTTP прокси (сервис
- proxy) или SOCKS прокси (сервис socks). Обычно используется HTTP прокси. Для
- SOCKS прокси можно использовать встроенную поддержку браузера или
- программу-соксификатор (см.
- <a href="#CAP">Как использовать 3proxy с программой, не поддерживающей работу с прокси-сервером</a>),
- если встроенная поддержка SOCKS чем-то не устраивает или так удобнее. Не все
- соксификаторы поддерживают входящие соединения, поэтому чтобы не было проблем с
- протоколом FTP лучше использовать пассивный режим (в Internet Explorer 5.5SP2
- и выше "Использовать пассивный FTP-протокол").
- <p>Для конфигурации HTTP прокси необходимо указать внутренний адрес и порт,
- установленые для службы proxy в конфигурации 3proxy (либо как "Один
- прокси-сервер для всех протоколов" либо для HTTP, Secure, FTP). Поддержка
- Gopher в 3proxy в настоящий момент не реализована, но этот устаревший протокол
- в Internet практически не используется. Для нормальной работы FTP через HTTP
- прокси необходимо отключить представление для папок FTP (FTP folder view),
- он включен по-умолчанию, т.к. иначе FTP будет работать без использвания HTTP
- прокси. HTTP прокси использует пассивный режим для протокола FTP. В настройках
- 3proxy рекомендуется разрешть метод HTTP_CONNECT только для порта назначения 443.
- Если метод HTTP_CONNECT не разрешен, то не будет работать протокол HTTPS, если
- он разрешен для всех портов, то можно обойти журналирование запросов для
- протокола HTTP).
- Для работы с HTTP прокси может использоваться авторизация по паролю (strong).
- <p>Для использования SOCKS необходимо настроить только SOCKS прокси (иначе для
- протоколов, для которых указан прокси сервер, он будет использоваться как HTTP
- прокси). Internet Explorer (включая IE 6.0SP1)
- поддерживает только SOCKSv4. В качестве имени пользователя передается имя
- пользователя, использованное для входа в систему. Передача пароля в SOCKSv4 не
- поддерживается, поэтому авторизация по паролю (strong) не доступна. Можно
- использовать имя пользователя, переданное браузером в ACL для iponly-авторизации,
- но при этом необходимо иметь ввиду ненадежность такого способа. При работе через
- SOCKS Internet Explorer (и большая часть других браузеров) используют пассивный
- режим работы для FTP. При использовании SOCKS можно получить в журнале (логах)
- URL запрашиваемых страниц, для этого необходимо создать внутреннее
- перенаправление в HTTP прокси для порта 80 (и других портов, используемых для
- HTTP) в локальный HTTP прокси (proxy), порт 21 (и другие порты, используемые
- FTP) в FTP прокси. При перенаправлении соединений в FTP прокси, нужно иметь
- ввиду, что FTP создает вторичные соединения для передачи данных. Для этого,
- во-первых, необходимо разрешить доступ к внутреннему интерфейсу прокси сервера
- через SOCKS (что не очень безопасно), во-вторых, принять меры, чтобы в SOCKS
- такие соединения на внутренний интерфейс не тарифицировались (т.к. иначе они
- будут тарифицироваться дважды - SOCKS и FTP прокси).
- <p>Internet Explorer и другие продвинутые браузеры поддерживают автоматическую
- конфигурацию прокси-сервера в полностью автоматическом или полуавтоматическом
- режимах. Автоматическая конфигурация позволяет задать достаточно сложные
- правила, позволяющие клиентам использовать (или не использвоать) разные
- прокси-серверы для доступа к разным ресурсам. Эта возможность разбирается в
- статьях
- <br>Microsoft: Q296591 A Description of the Automatic Discovery Feature
- <br><a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;296591">http://support.microsoft.com/default.aspx?scid=kb;EN-US;296591</a>
- <br>Netscape: Navigator Proxy Auto-Config File Format
- <br><a href="http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html">http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html</a>
- <li><a name="FTP"><i>Как настраивать FTP клиент</i></a>
- <p>
- Настройка FTP клиента для работы через SOCKS прокси не отличается от настройки
- <a href="#IE">браузера</a>.
- <p>
- Для работы с FTP клиентом через FTP прокси (ftppr) есть несколько возможностей.
- Допустим, нам необходимо подключиться ко внешнему FTP серверу со следующими
- параметрами:
- <pre>
- Адрес: ftp.security.nnov.ru
- Username: ftpuser
- Password: ********</pre>
- <p>Работа с клиентом, не поддерживающим FTP прокси - в качестве адреса FTP
- сервера указывается адрес прокси (например, proxy.security.nnov.ru), в качестве
- имени пользователя ftpuser@ftp.security.nnov.ru. Если для доступа к службе
- ftppr требуется авторизация по имени и паролю с именем pruser и паролем prpass,
- то в качестве имени пользователя необходимо указать
- pruser:prpass:ftpuser@ftp.security.nnov.ru. Если FTP клиент требует указания
- полной URL для подключения к серверу, то она должна выглядеть как
- <p>
- pruser:prpass:ftpuser@ftp.security.nnov.ru:********@proxy.security.nnov.ru
- <p>
- Не все клиенты обработают это корректно, но в большинстве случаев этого не
- требуется.
- <p>Работа с клиентом, поддерживающим FTP прокси - если 3proxy
- не требует авторизации по паролю, то настройки стандартны для клиента. Если
- требуется доступ по паролю, то в качестве имени пользователя указывается
- pruser:prpass:ftpuser.
- <li><a name="SMTP"><i>Как использовать SMTP через 3proxy</i></a>
- <p>
- В большинстве случаев достаточно установить отображение (tcppm) TCP порта 25 на
- аналогичный порт SMTP сервера провайдера. В конфигурации клиента указать
- внутренний адрес прокси в качестве адреса SMTP-сервера.
- <li><a name="POP3"><i>Как использовать POP3 proxy</i></a>
- <p>
- Предположим, у вас есть следующие настройки для получения почты:
- <pre>
- POP3 server: pop3.security.nnov.ru
- Login: user
- Password: ********</pre>
- В настройках почтовой программы следует указать:
- <pre>
- POP3 server: (адрес прокси-сервера)
- Login: user@pop3.security.nnov.ru
- Password: ********</pre>
- <p>
- Имя пользователя может само по себе содержать знак '@'. Если в примере выше
- имя пользователя user@security.nnov.ru, то имя пользвоателя для доступа к
- прокси-серверу должно быть user@security.nnov.ru@pop3.security.nnov.ru. Если
- pop3pr требует авторизации по имени/паролю (например, pruser и prpass), то их
- необходимо указать в начале имени пользователя, отделив знаком ':', т.е для
- самого тяжелого случая pruser:prpass:user@security.nnov.ru@pop3.security.nnov.ru
- </p>
- <li><a name="CAP"><i>Как использовать 3proxy с программой, не поддерживающей работу с прокси-сервером</i></a>
- <p>
- Можно использовать любую программу-редиректор, например,
- <a href="http://www.socks.permeo.com">SocksCAP</a> или
- <a href="http://www.freecap.ru">FreeCAP</a>. 3proxy поддерживает исходящие
- и обратные TCP и UDP соединения, но редиректоры могут иметь свои ограничения,
- кроме того, некоторые плохо написаные приложения не поддаются "соксификации".
- Если программе требуется обращаться к небольшому набору серверов
- (например, игровых), то проблему можно решить с помощью портмаппинга.
- <li><a name="GAMES"><i>Как использовать 3proxy с играми</i></a>
- <p>
- Оптимальный варинт - использовать соксификатор (<a href="#CAP">Как использовать
- 3proxy с программой, не поддерживающей работу с прокси-сервером</a>).
- <a href="http://www.freecap.ru/">FreeCap 3.13 </a> проверен с играми на движке
- Unreal (включая Unreal Tournament), Half-Life (включая Counter-Strike) и
- другими. Если по каким-то причинам соксификатор не работает или недоступен,
- то необходимо использовать отображения портов (обычно игры,
- кроме mood-подобных, работают по протоколу UDP, надо использовать udppm).
- Нужно иметь ввиду, что для udppm требуется отдельный маппинг для каждого
- серверного порта и каждого клиента. Например, если есть один сервер с портами
- 2115 и 2116 и три клиента, то нужно создать 6 разных маппингов, например
- <pre>
- udppm 12115 server 2115
- udppm 12115 server 2115
- udppm 22115 server 2115
- udppm 32115 server 2115
- udppm 12116 server 2116
- udppm 22116 server 2116
- udppm 32116 server 2116</pre>
- В игровом клиенте адрес и порт с маппингом следует указывать вместо адреса
- и порта сервера.
- </p>
- </ul>
- <hr>
- <li><a name="ADMIN"><b>Администрирование и анализ информации</b></a>
- <p>
- <ul>
- <li><a name="NEWVERSION"><i>Где взять свежую версию</i></a>
- <p>
- Свежую версию всегда можно взять
- <a href="http://3proxy.ru/">здесь</a>. Обратите внимание,
- что в новой версии может измениться порядок лицензирования или команды
- конфигурации, поэтому прежде чем устанавливать новую версии программы
- обязательно ознакомьтесь с документацией.
- </p>
- <li><a name="NTSERVICE"><i>Как управлять службой 3proxy в Windows NT/2000/XP</i></a>
- <p>
- При установке 3proxy в качестве системной службы сервером поддерживаются
- команды запуска, остановки, временной приостановки и продолжения.
- При временной приостановке сервер перестает принимать новые запросы от
- клиентов, но обработка ранее поступивших запросов продолжается. Сервер не
- подерживает динамическое изменение конфигурации, т.е. после изменения
- конфигурации 3proxy необходимо перезапустить.
- Управлять запуском, остановкой, приостановкой и продолжением можно либо
- через служебную программу "Службы" (Services) либо через команду net:
- <pre>
- net start 3proxy
- net stop 3proxy
- net pause 3proxy
- net continue 3proxy</pre>
- </p>
- <li><a name="ERRORS"><i>Коды ошибок в журнале</i></a>
- <p>
- <ul>
- <li>0 - операция завершена успешно (в случае установленного
- соединения - соединение закрыто корректно одной из
- сторон).
- <li>1-9 - ошибки авторизации
- <li>1 - доступ закрыт ACL (deny)
- <li>2 - перенаправление (не должно быть в журнале)
- <li>3 - нет записи ACL для данного соединения
- <li>4 - не определено имя пользователя для auth strong
- <li>5 - не найдено имя пользователя для auth strong
- <li>6 - неверный пароль (открытый текст)
- <li>7 - неверный пароль (crypt)
- <li>8 - неверный пароль (NT)
- <li>9 - недостаточно данных для перенаправления (не должно быть в журнале)
- <li>10 - превышен лимит трафика
- <li>11-19 - ошибки соединения
- <li>11 - невозможно создать сокет socket()
- <li>12 - невозможно выбрать интерфейс bind()
- <li>13 - сбой подключения connect()
- <li>14 - сбой getpeername()
- <li>20-29 - общие ошибки
- <li>21 - ошибка выделения памяти
- <li>30-39 - ошибки перенаправления CONNECT
- <li>31 - невозможно послать запрос к CONNECT прокси
- <li>32 - превышено ожидание или некорректный ответ CONNECT прокси
- <li>33 - CONNECT прокси не может установить соединение
- <li>34 - превышено ожидание или обрыв соединения при согласовании CONNECT соединения
- <li>40-49 - ошибки перенаправления SOCKS4
- <li>50-69 - ошибки перенаправления SOCKS5
- <li>70-79 ошибки установки родительского соединения, аналогичны 1x
- <li>90-99 - ошибки разрыва соединения
- <li>90 - ошибка сокета или соединение неожиданно прервано
- <li>91 - общий сбой стека TCP/IP
- <li>92 - соединение прервано по таймауту
- <li>93 - ошибка получения данных от сервера
- <li>94 - ошибка получения данных от клиента
- <li>95 - таймаут из-за ограничения bandlimin/bandlimout
- <li>96 - ошибка отправки данных клиенту
- <li>97 - ошибка отправки данных серверу
- <li>98 - исчерпан лимит данных сервера (не должно быть в журнале)
- <li>99 - исчерпан лимит данных клиента (не должно быть в журнале)
- <li>100 - не найден IP адрес по запросу клиента
- <li>200-299 - ошибки UDP portmapper
- <li>300-399 - ошибки TCP portmapper
- <li>400-499 - ошибки SOCKS proxy
- <li>500-599 - ошибки HTTP proxy
- <li>600-699 - ошибки POP3 proxy
- <li>999 - функция не реализована
- </ul>
- </p>
- </ul>
- <hr>
- <li><a name="QUEST"><b>Как задать вопрос, которого нет в HowTo</b></a>
- <p>
- Задайте его на <a href="http://3proxy.ru/board3.html">форуме</a>.
- Только не пытайтесь задавать какие-либо вопросы, если вы просто не поняли этот
- HowTo.
- </ul>
|