howtor.html 51 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031
  1. 3APA3A 3proxy tiny proxy server HowTo
  2. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  3. <br>В стадии разработки
  4. <ul>
  5. <li><a href="#COMPILE">Компиляция</a>
  6. <ul>
  7. <li><a href="#MSVC">Как скомпилировать 3proxy Visual C++</a>
  8. <li><a href="#INTL">Как скомпилировать 3proxy Intel C Compiler под Windows</a>
  9. <li><a href="#GCCWIN">Как скомпилировать 3proxy GCC под Windows</a>
  10. <li><a href="#GCCUNIX">Как скомпилировать 3proxy GCC под Unix/Linux</a>
  11. <li><a href="#CCCUNIX">Как скомпилировать 3proxy Compaq C Compiler под Unix/Linux</a>
  12. </ul>
  13. <li><a href="#INSTALL">Установка и удаление 3proxy</a>
  14. <ul>
  15. <li><a href="#INSTNT">Как установить/удалить 3proxy под Windows 95/98/ME/NT/2000/XP как службу</a>
  16. <li><a href="#INST95">Как установить/удалить 3proxy под Windows 95/98/ME</a>
  17. <li><a href="#INSTUNIX">Как установить/удалить 3proxy под Unix/Linux</a>
  18. </ul>
  19. <li><a href="#SERVER">Конфигурация сервера</a>
  20. <ul>
  21. <li><a href="#SAMPLE">Как посмотреть пример файла конфигурации</a>
  22. <li><a href="#LOGGING">Как настроить ведение журнала</a>
  23. <li><a href="#LOGFORMAT">Как настроить формат журнала</a>
  24. <li><a href="#LOGANALIZERS">Как использовать лог-анализаторы с 3proxy</a>
  25. <li><a href="#LAUNCH">Как запустить конкретную службу (HTTP, SOCKS и т.д)</a>
  26. <li><a href="#BIND">Как повесить службу на определенный интерфейс или порт</a>
  27. <li><a href="#AUTH">Как ограничить доступ к службе</a>
  28. <li><a href="#USERS">Как создать список пользователей</a>
  29. <li><a href="#ACL">Как ограничить доступ пользователей к ресурсам</a>
  30. <li><a href="#REDIR">Как управлять перенаправлениями</a>
  31. <li><a href="#ROUNDROBIN">Как организовать балансировку между несколькими каналами</a>
  32. <li><a href="#CHAIN">Как составлять цепочки прокси</a>
  33. <li><a href="#BANDLIM">Как ограничивать скорости приема</a>
  34. <li><a href="#TRAFLIM">Как ограничивать объем принимаемого трафика</a>
  35. <li><a href="#NETLIST">Как строить списки сетей</a>
  36. <li><a href="#NSCACHING">Как управлять разрешением имен и кэшированием DNS</a>
  37. <li><a href="#DEMANDDIAL">Как устанавливать соединение по требованию</a>
  38. </ul>
  39. <li><a href="#CLIENT">Конфигурация и настройка клиентов</a>
  40. <ul>
  41. <li><a href="#IE">Как использовать 3proxy с Internet Explorer или другим браузером</a>
  42. <li><a href="#FTP">Как настраивать FTP клиент</a>
  43. <li><a href="#SMTP">Как использовать SMTP через 3proxy</a>
  44. <li><a href="#POP3">Как использовать службу POP3 Proxy</a>
  45. <li><a href="#CAP">Как использовать 3proxy с программой, не поддерживающей работу с прокси-сервером</a>
  46. <li><a href="#GAMES">Как использовать 3proxy с играми</a>
  47. </ul>
  48. <li><a href="#ADMIN">Администрирование и анализ информации</a>
  49. <ul>
  50. <li><a href="#NEWVERSION">Где взять свежую версию</a>
  51. <li><a href="#NTSERVICE">Как управлять службой 3proxy в Windows NT/2000/XP</a>
  52. <li><a href="#ERRORS">Коды ошибок в журнале</a>
  53. </ul>
  54. <li><a href="#QUEST">Как задать вопрос, которого нет в HowTo</a>
  55. </ul>
  56. <br>
  57. <hr>
  58. <li><a name="COMPILE"><b>Компиляция</b></a>
  59. <p>
  60. <ul>
  61. <li><a name="MSVC"><i>Как скомпилировать 3proxy Visual C++</i></a>
  62. <p>
  63. Извлеките файлы из архива 3proxy.tgz (например, с помощью WinZip).
  64. Используйте команду nmake /f Makefile.msvc.
  65. </p>
  66. <li><a name="INTL"><i>Как скомпилировать 3proxy Intel C Compiler под Windows</i></a>
  67. <p>
  68. См. <a href="#MSVC">Как скомпилировать 3proxy Visual C++</a>.
  69. Используйте Makefile.intl вместо Makefile.msvc
  70. </p>
  71. <li><a name="GCCWIN"><i>Как скомпилировать 3proxy GCC под Windows</i></a></li>
  72. <p>
  73. Извлеките файлы из архива 3proxy.tgz (например, с помощью WinZip или, при наличии
  74. Cygwin, tar -xzf 3proxy.tgz).
  75. Используйте команду make -f Makefile.win. Если по каким-то причинам вы хотите использовать
  76. библиотеку POSIX-эмуляции CygWin - используйте make -f Makefile.unix.
  77. При использовании CygWin, функции, специфичные для Windows (такие, как запуск в
  78. качестве службы) будут недоступны.
  79. </p>
  80. <li><a name="GCCUNIX"><i>Как скомпилировать 3proxy GCC под Unix/Linux</i></a></li>
  81. <p>
  82. Используйте make -f Makefile.unix. Должен использоваться GNU make, на
  83. некоторых системах необходимо использовать gmake вместо make. Под Linux
  84. необходимо использовать Makefile.Linux, под Solaris - Makefile.Solaris-* (в
  85. зависимости от используемого компилятора). Компиляция проверена в FreeBSD/i386,
  86. OpenBSD/i386, NetBSD/i386, RH Linux/Alpha, Debian/i386, Gentoo/i386, Gentoo/PPC,
  87. Solaris 10, но должно собираться в любых версиях *BSD/Linux/Solaris.
  88. В других системах может потребоваться модификация make-файла и/или исходных текстов.
  89. Для компиляции с поддержкой ODBC необходимо убрать -DNOODBC из флагов
  90. компиляции и добавить -lodbc (или другую ODBC-библиотеку) к флагам линковщика.
  91. </p>
  92. <li><a name="CCCUNIX"><i>Как скомпилировать 3proxy Compaq C Compiler под Unix/Linux</i></a></li>
  93. <p>
  94. Используйте make -f Makefile.ccc. Компиляция проверена в RH Linux 7.1/Alpha.
  95. В других системах может потребоваться модификация файла и/или исходных текстов.
  96. </p>
  97. </ul>
  98. <hr>
  99. <li><a name="INSTALL"><b>Установка и удаление 3proxy</b></a>
  100. <p>
  101. <ul>
  102. <li><a name="INSTNT"><i>Как установить/удалить 3proxy под Windows 95/98/ME/NT/2000/XP/2003 как службу</i></a>
  103. <p>
  104. Извлеките файлы из архива 3proxy.zip в любой каталог
  105. (например, c:\Program Files\3proxy). Если необходимо, создайте каталог для
  106. хранения файлов журналов. Создайте файл конфигурации 3proxy.cfg в
  107. каталоге 3proxy (см. раздел <a href="#SERVER">Конфигурация сервера</a>).
  108. Если используется версия более ранняя, чем 0.6, добавьте строку
  109. <pre>
  110. service</pre>
  111. в файл 3proxy.cfg. Откройте командную строку (cmd.exe).
  112. Перейдите в каталог с 3proxy и дайте команду 3proxy.exe --install:
  113. <pre>
  114. D:\>C:
  115. C:\>cd C:\Program Files\3proxy
  116. C:\Program Files\3proxy>3proxy.exe --install</pre>
  117. Сервис должен быть установлен и запущен. Если сервис не запускается,
  118. проверьте содержимое файла журнала,
  119. попробуйте удалить строку service из 3proxy.cfg, запустить 3proxy.exe вручную
  120. и проанализировать сообщения об ошибках.
  121. </p><p>
  122. Для удаления 3proxy необходимо остановить сервис и дать
  123. команду 3proxy.exe --remove:
  124. <pre>
  125. D:\>C:
  126. C:\>cd C:\Program Files\3proxy
  127. C:\Program Files\3proxy>net stop 3proxy
  128. C:\Program Files\3proxy>3proxy.exe --remove</pre>
  129. после чего каталог 3proxy можно удалить.
  130. <p>
  131. Установка в качестве системной службы под Windows 9x поддерживается с версии 0.5
  132. </p>
  133. <li><a name="INST95"><i>Как установить/удалить 3proxy под Windows 95/98/ME</i></a>
  134. <p>
  135. Извлеките файлы из архива 3proxy.zip в любой каталог
  136. (например, c:\Program Files\3proxy). Если необходимо, создайте каталог для
  137. хранения файлов журналов. Создайте файл конфигурации 3proxy.cfg в
  138. каталоге 3proxy (См. раздел <a href="#SERVER">Конфигурация сервера</a>).
  139. В файле конфигурации удалите строку
  140. <pre>
  141. service</pre>
  142. и добавьте строку
  143. <pre>
  144. daemon</pre>
  145. Создайте ярлык для 3proxy.exe и поместите его в автозагрузку либо с помощью
  146. редактора реестра regedit.exe добавьте в разделе
  147. <br>HKLM\Software\Microsoft\Windows\CurrentVersion\Run</br>
  148. строковый параметр
  149. <br>3proxy = "c:\Program Files\3proxy.exe" "C:\Program Files\3proxy.cfg"<br>
  150. Использование кавычек при наличии в пути пробела обязательно.
  151. Перезагрузитесь.
  152. Если сервер не запускается,
  153. проверьте содержимое файла журнала,
  154. попробуйте удалить строку daemon из 3proxy.cfg, запустить 3proxy.exe вручную
  155. и проанализировать сообщения об ошибках.
  156. </p>
  157. <li><a name="INSTUNIX"><i>Как установить/удалить 3proxy под Unix/Linux</i></a>
  158. <p>
  159. Скомпилируйте 3proxy (см. раздел <a href="#COMPILE">Компиляция</a>). Скопируйте
  160. исполняемые файлы в подходящий каталог (например, /usr/local/3proxy/sbin для
  161. серверных приложений или /usr/local/3proxy/bin для клиентских утилит).
  162. Создайте файл /usr/local/etc/3proxy.cfg.
  163. (См. раздел <a href="#SERVER">Конфигурация сервера</a>).
  164. Изменить расположение файла конфигурации можно, задав параметр при вызове
  165. 3proxy или изменив путь в файле 3proxy.c до компиляции.
  166. Добавьте вызов 3proxy в скрипты начальной инициализации.
  167. </p>
  168. </ul>
  169. <hr>
  170. <li><a name="SERVER"><b>Конфигурация сервера</b></a>
  171. <p>
  172. <ul>
  173. <li><a name="SAMPLE"><i>Как посмотреть пример файла конфигурации</i></a>
  174. <p>
  175. Пример файла конфигурации 3proxy.cfg.sample поставляется с любым дистрибутивом
  176. программы.
  177. </p>
  178. <li><a name="LOGGING"><i>Как настроить ведение журнала</i></a>
  179. <p>
  180. 3proxy поддерживает ведение журнала на экран (stdout), в файл, через ODBC и через службу
  181. syslog (только для Unix/Linux/CygWin). Можно управлять либо общим файлом
  182. журнала, задаваемым в файле конфигурации 3proxy.cfg и единым для всех служб,
  183. либо индивидуальными файлами для отдельных служб (например, команда
  184. socks -l/var/log/socks.log запускает SOCKS прокси
  185. и задает для него индивидуальный журнал). Для общего файла журнала
  186. поддерживается ротация (т.е. периодическое создание новых файлов журнала
  187. с предопределенными именами и удаление файлов старше определенного срока)
  188. и архивация файлов журнала.
  189. Тип журнала определяется параметром log в файле конфигурации либо ключом
  190. -l при вызове конкретной службы (например, socks прокси). log или -l без
  191. параметров соответствуют ведению журнала на экран (stdout).
  192. <pre>
  193. log filename</pre>
  194. и
  195. <pre>
  196. -lfilename</pre>
  197. соответствуют записи журнала в файл filename. Если при указании имени файла
  198. в log в нем содержится символ %, то имя рассматривается как форматный
  199. спецификатор (см. logformat). Например,
  200. log c:\3proxy\logs\%y%m%d.log D создаст файл типа c:\3proxy\logs\060725.log,
  201. для образования даты будет использовано местное время.
  202. <pre>
  203. log @ident</pre>
  204. и
  205. <pre>
  206. -l@ident</pre>
  207. соответствуют ведению журнала через syslog с идентификатором ident.
  208. <pre>
  209. log &connstring</pre>
  210. соответствует ведению журнала через ODBC, connstring задается в формате
  211. datasource,username,password (последние два параметра опциональны, если
  212. datasource не требует или уже содержит сведения для авторизации). При этом
  213. команда logformat должна задавать SQL запрос, который необходимо выполнить
  214. для добавления записи в журнал, см <a href="#LOGFORMAT">Как настроить формат журнала</a>.
  215. </p><p>
  216. Управление ротацией общего файла журнала происходит с помощью команд файла
  217. конфигурации log, rotate и archiver.
  218. <pre>
  219. log filename LOGTYPE</pre>
  220. задает тип ротации. LOGTYPE может принимать значения:
  221. <ul>
  222. <li>M, ежемесячная ротация
  223. <li>W, еженедельная ротация
  224. <li>D, ежедневная ротация
  225. <li>H, ежечасная ротация
  226. <li>С, ежеминутная ротация
  227. </ul>
  228. <pre>
  229. rotate NUMBER</pre>
  230. указывает на число файлов, участвующих в ротации (т.е. сколько последних
  231. журналов хранить).
  232. <pre>
  233. archiver EXT COMMAND PARAMETERS</pre>
  234. задает параметры архивации журнала. EXT указывает на расширение
  235. архива (например, zip, gz, Z, rar и т.д.) COMMAND указывает на
  236. программу и PARAMETERS - на параметры командной строки. Архиватор
  237. должен сам удалять исходный файл, также ему можно передать имя файла
  238. с помощью макроса %F и ожидаемое имя архива с помощью макроса %A.
  239. В качестве архиватора вполне можно задать пакетный файл, который,
  240. например, будет загружать данные из журнала в базу данных.
  241. Примеры команды archiver для популярных архиваторов можно найти в
  242. 3proxy.cfg.sample
  243. <pre>
  244. logdump OFFSET_BYTES_FROM_SERVER OFFSET_BYTES_FROM_CLIENT</pre>
  245. Задает смещение в байтах на входящий и исходящий трафик, при достижении
  246. которого необходимо создавать запись в журнале даже в том случае, если
  247. соединение еще не завершено. Если logdump не указан или значения
  248. OFFSET_BYTES_FROM_SERVER OFFSET_BYTES_FROM_CLIENT нулевые - в журнале
  249. будет создана единственная запись по окончании обработки запроса клиента
  250. (при разрыве соединения). Пример:
  251. <pre>
  252. logdump 1048576 1048576</pre>
  253. создает в журнале запись на каждый мегабайт входящего или исходящего
  254. трафика.
  255. </p>
  256. <li><a name="LOGFORMAT"><i>Как настроить формат журнала</i></a>
  257. <p>
  258. Начиная с версии 0.3, формат журнала может быть настроен с помощью
  259. команды logformat со строкой формата. Первый символ строки должен
  260. быть L или G, что указывает на формат, в котором будет указываться
  261. время и даты, L - текущее локальное время, G - абсолютное время по
  262. Гринвичу. Строка формата может содержать следующие модификаторы:
  263. <ul>
  264. <li> %y - Год (последние две цифры)
  265. <li> %Y - Год (четырехзначный)
  266. <li> %m - Номер месяца (01-12)
  267. <li> %o - Трехбуквенная аббревиатура месяца
  268. <li> %d - День (01-31)
  269. <li> %H - Час (00-23)
  270. <li> %M - Минута (00-59)
  271. <li> %S - Секунда (00-59)
  272. <li> %t - Временная метка (число секунд с 00:00:00 1 января 1970 г. по Гринвичу)
  273. <li> %. - Миллисекунды
  274. <li> %z - Временная зона в почтовом формате (от Гринвича, '+' восток, '-' запад ЧЧММ), например, Московское зимнее время +0300.
  275. <li> %U - Имя пользователя ('-', если отсутствует).
  276. <li> %N - Название прокси сервиса (PROXY, SOCKS, POP3P, и т.д.)
  277. <li> %p - Порт прокси сервиса
  278. <li> %E - Код ошибки (см. <a href="#ERRORS">Коды ошибок в журнале</a>)
  279. <li> %C - IP клиента
  280. <li> %c - Порт клиента
  281. <li> %R - IP сервера (исходящего соединения по запросу клиента)
  282. <li> %r - Порт сервера (исходящего соединения по запросу клиента)
  283. <li> %Q – IP, запрошенный клиентом
  284. <li> %q – Порт, запрошенный клиентом
  285. <li> %I - Принято байт от сервера
  286. <li> %O - Отправлено байт на сервер
  287. <li> %n - Имя хоста из запроса
  288. <li> %h - Число звеньев до конечного сервера (при использовании перенаправлений или чейнинга
  289. см. <a href="#CHAIN">Как составлять цепочки прокси</a>)
  290. <li> %T – Текст, специфичный для прокси сервиса (например, запрошенный URL).
  291. Можно использовать %X-YT, где X и Y положительные числа, тогда
  292. отображаются только поля с X по Y текста. Поля считаются разделенными
  293. пробельным символом.
  294. </ul>
  295. Пример:
  296. <pre>
  297. logformat "L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"</pre>
  298. будет генерировать в журнале записи типа
  299. <pre>
  300. 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>
  301. (без переноса строк)
  302. При использовании ODBC, logformat должен задавать формат SQL команды,
  303. которую необходимо дать для внесения записи в журнал, например:
  304. <pre>
  305. logformat "GINSERT INTO proxystat VALUES (%t, '%c', '%U', %I)"</pre>
  306. </p>
  307. <li><a name="LOGANALIZERS"><i>Как использовать лог-анализаторы с 3proxy</i></a>
  308. <p>
  309. Просто сделайте формат ведения журнала совместимым с одним из форматов,
  310. поддерживаемых анализатором. Это позволяет использовать практически любые
  311. анализаторы. Примеры совместимых форматов:
  312. <br>
  313. Формат Squid access.log:
  314. <pre>
  315. &quot;- +_G%t.%. %D %C TCP_MISS/200 %I %1-1T %2-2T %U DIRECT/%R application/unknown&quot;</pre>
  316. Более совместимый формат, но без %D
  317. <pre>
  318. &quot;- +_G%t.%. 1 %C TCP_MISS/200 %I %1-1T %2-2T %U
  319. DIRECT/%R application/unknown&quot;</pre>
  320. Формат ISA 2000 proxy WEBEXTD.LOG (поля разделены табуляцией):
  321. <pre>
  322. &quot;- + L%C %U Unknown Y %Y-%m-%d %H:%M:%S
  323. w3proxy 3PROXY - %n %R %r %D
  324. %O %I http TCP %1-1T %2-2T - -
  325. %E - - -&quot;</pre>
  326. Формат ISA 2004 proxy WEB.w3c (поля разделены табуляцией):
  327. <pre>
  328. &quot;- + L%C %U Unknown %Y-%m-%d %H:%M:%S
  329. 3PROXY - %n %R %r %D %O
  330. %I http %1-1T %2-2T - %E -
  331. - Internal External 0x0 Allowed&quot;</pre>
  332. Формат ISA 2000/2004 firewall FWSEXTD.log (поля разделены табуляцией):
  333. <pre>
  334. &quot;- + L%C %U unnknown:0:0.0 N %Y-%m-%d
  335. %H:%M:%S fwsrv 3PROXY - %n %R %r
  336. %D %O %I %r TCP Connect - -
  337. - %E - - - - -&quot;</pre>
  338. Стандартный лог HTTPD (Apache и другие):
  339. <pre>
  340. &quot;-&quot;&quot;+_L%C - %U [%d/%o/%Y:%H:%M:%S %z] &quot;&quot;%T&quot;&quot; %E %I&quot;</pre>
  341. Более совместимый, но без кода ошибки:
  342. <pre>
  343. &quot;-&quot;&quot;+_L%C - %U [%d/%o/%Y:%H:%M:%S %z] &quot;&quot;%T&quot;&quot; 200 %I&quot;</pre>
  344. <li><a name="LAUNCH"><i>Как запустить конкретную службу (HTTP, SOCKS и т.д)</i></a>
  345. <p>
  346. 3proxy поставляется в двух вариантах: как набор отдельных модулей (proxy,
  347. socks, pop3p, tcppm, udppm) и как универсальный прокси-сервер (3proxy).
  348. Универсальный прокси сервер - это законченная программа, которой не требуются
  349. отдельные модули.
  350. <br>Отдельный модуль управляется только из командной строки. Поэтому для
  351. отдельного модуля не поддерживаются многие функции, такие как управление
  352. доступом и ротация журнала. Запуск модуля осуществляется из командной строки.
  353. Например,
  354. <pre>
  355. $/sbin/socks -l/var/log/socks.log -i127.0.0.1</pre>
  356. запускает SOCKS на порту 127.0.0.1:1080 с ведением журнала /var/log/socks.log
  357. Справку по опциям командной строки можно получить запустив модуль с ключом -?.
  358. </p><p>
  359. Если используется 3proxy, то запускаемые службы указываются в файле 3proxy.cfg.
  360. Файл 3proxy.cfg просматривается 3proxy построчно, каждая строка рассматривается
  361. как управляющая команда. Синтаксис команд описан в 3proxy.cfg.sample. Например,
  362. <pre>
  363. log /var/log/3proxy.log D
  364. rotate 30
  365. internal 127.0.0.1
  366. external 192.168.1.1
  367. proxy
  368. socks
  369. pop3p -l/var/log/pop3proxy</pre>
  370. запускает 3 службы - PROXY, SOCKS и POP3 Proxy. Каждая слушает на интерфейсе
  371. 127.0.0.1 порт по-умолчанию (3128 для proxy, 1080 для socks и 110 для
  372. pop3p). Журналы всех служб кроме pop3p ведутся в файле /var/log/3proxy.log,
  373. который ежедневно меняется. Хранятся 30 последних файлов. Для pop3p ведется
  374. отдельный журнал /var/log/pop3proxy (см. <a href="#LOGGING">Как настроить ведение журнала</a>).
  375. </p>
  376. <li><a name="BIND"><i>Как повесить службу на определенный интерфейс или порт</i></a>
  377. <p>
  378. Опция -i позволяет указать внутренний интерфейс, -p - порт (пробелы в
  379. опциях не допускаются). Например, чтобы служба proxy висела на порту
  380. 8080 интерфейсов 192.168.1.1 и 192.168.2.1 необходимо дать команды
  381. </p>
  382. <pre>
  383. proxy -p8080 -i192.168.1.1
  384. proxy -p8080 -i192.168.2.1</pre>
  385. <li><a name="AUTH"><i>Как ограничить доступ к службе</i></a>
  386. <p>
  387. Во-первых, для ограничения доступа необходимо указать внутренний интерфейс,
  388. на котором прокси-сервер будет принимать соединения. Внутренний интерфейс
  389. указывается с помощью команды internal в файле конфигурации или с помощью
  390. ключа -i конкретного модуля.
  391. (см. <a href="#LAUNCH">Как запустить конкретную службу (HTTP, SOCKS и т.д)</a>).
  392. Отсутствие указания внутреннего интерфейса может привести к тому, что ваш
  393. прокси будет открытым.
  394. <p> Указание внешнего интерфейса (т.е. IP, с которого сервер будет устанавливать
  395. внешние соединения) так же является полезным. Для этого служит команда external
  396. и ключ -e соответственно.
  397. Для универсального прокси возможна дополнительная авторизация доступа с помощью
  398. имени/пароля, NetBIOS имени пользователя и по спискам доступа (по IP клиента,
  399. IP и порту назначения, см. <a href="#ACL">Как ограничить доступ пользователей к ресурсам</a>).
  400. Тип авторизации устанавливается командой auth в файле конфигурации.
  401. <pre>
  402. auth none</pre>
  403. Отсутствие какой-либо авторизации. Списки доступа не проверяются.
  404. <pre>
  405. auth iponly</pre>
  406. Будет идти проверка по списку доступа с использованием IP клиента, IP и номера
  407. порта назначения.
  408. <pre>
  409. auth nbname</pre>
  410. Перед проверкой по списком доступа будет произведена попытка получить NetBIOS
  411. имя клиента. Для этого используется NetBIOS код службы messager (0x03). Если
  412. имя определить не удалось (служба messager для Windows NT/2000/XP или WinPopUP
  413. для 95/98/ME не запущена), то имя будет считаться пустым. Далее следует
  414. проверка по спискам доступа. Данный тип авторизации не зависит от платформы
  415. сервера (т.е. прокси сервер, запущенный под Unix, сможет определять NetBIOS
  416. имена). Его рекомендуется использовать в однородных сетях, где у всех клиентов
  417. установлена Windows NT/2000/XP и пользователи не имеют доступа к
  418. привелегированным учетным записям. Этот вид авторизации не является надежным.
  419. <pre>
  420. auth strong</pre>
  421. Проверяется имя и пароль, переданные пользователем при подключении к прокси.
  422. Данный вид авторизации работает только с proxy и socks. Необходимо задание
  423. списка пользователей (см <a href="#USERS">Как создать список пользователей</a>).
  424. Соединения от неизвестных пользователей не принимаются. После проверки имени
  425. пользвоателя и пароля происходит проверка списков доступа.
  426. </p><p>
  427. Для разных служб можно установить различные типы авторизации, например,
  428. <pre>
  429. auth none
  430. pop3p
  431. auth iponly
  432. proxy
  433. auth strong
  434. socks</pre>
  435. не накладывает ограничений на использование POP3 Proxy, производит проверку
  436. по спискам доступа для пользователей HTTP Proxy и требует авторизации с именем
  437. и паролем для SOCKS.
  438. </p><p>С версии 0.6 возможно использвоать двойную авторизацию, например,
  439. <pre>
  440. auth iponly strong
  441. allow * * 192.168.0.0/16
  442. allow user1,user2
  443. proxy</pre>
  444. будет использовать авторизацию только в том случае, если не удалось пропустить
  445. пользователя с авторизаций iponly, т.е. для доступа к ресурсам 192.168.0.0/16
  446. авторизация не требуется.
  447. </p><p>С версии 0.6 так же можно использвоать кэширование авторизации (имени
  448. пользователя) с целью повышения производительности. Использовать кэширование
  449. для strong практически не имеет смысла, она полезно для nbname и авторизации
  450. через внешние плагины, типа WindowsAuthentication. Кэширование настраивается
  451. командой authcache с двумя параметрами - типом кэширования и временем, на
  452. которое кэшируется пароль. Возможные типы: ip - после успешной авторизации в
  453. течение времени кэширования все запросы пришедшие с того же адреса считаются
  454. запросами от того же пользователя, name - после успешной авторизации от
  455. пользователя с тем же именем требуют указания имени, но реально аутентификации
  456. не производится, ip,name - запрос должен придти от того же IP и с тем же
  457. именем. user,password - имя и пароль пользователя сверяются с кэшированными.
  458. Возможны и другие сочетания. Для авторизации должен использоваться специальный
  459. метод авторизации - cache. Пример:
  460. <pre>
  461. authcache ip 60
  462. auth cache strong windows
  463. proxy -n</pre>
  464. Кэширование влияет на безопасность доступа. Ни в коем случае не следует
  465. использовать кэширование для доступа к критичным ресурсам, в частности к
  466. интерфейсу администрирования.
  467. </p>
  468. <li><a name="USERS"><i>Как создать список пользователей</i></a>
  469. <p>
  470. Список пользователей задается с помощью команды users.
  471. <pre>
  472. users USERDESC ...</pre>
  473. С помощью одной команды можно задать несколько пользователей, можно
  474. давать несколько команд users. USERDESC - описание пользователя. Описание
  475. пользователя состоит из трех полей разделенных : (двоеточием) - имени (login)
  476. типа пароля и пароля. Например:
  477. <pre>
  478. users admin:CL:bigsecret test:CL:password test1:CL:password1
  479. users "test2:CR:$1$lFDGlder$pLRb4cU2D7GAT58YQvY49."
  480. users test3:NT:BD7DFBF29A93F93C63CB84790DA00E63</pre>
  481. Обратите внимание на двойные кавычки - они необходимы для второго пользователя,
  482. т.к. в его пароле встречается знак $, который для файла 3proxy.cfg означает
  483. включение другого файла. Поддеживается следующие типы паролей:
  484. <ul>
  485. <li>тип не указан - использовать системную авторизацию для
  486. данного пользователя (пока не реализовано).
  487. <li>CL - пароль в открытом тексте
  488. <li>CR - пароль в формате crypt() (только MD5)
  489. <li>NT - пароль в формате NT в шестнадцатеричной кодировке
  490. </ul>
  491. NT и crypt пароли могут быть использованы для импорта учетных записей из
  492. Windows/Samba и Unix соответственно (для Windows можно использовать утилиты
  493. семейства pwdump).
  494. Учетные записи удобно хранить в отдельном файле (в таком случае можно хранить
  495. их построчно в формате, типичном для файлов паролей). Включить файл можно с
  496. помощью макроса $:
  497. <pre>
  498. users $/etc/.3proxypasswd</pre>
  499. или
  500. <pre>
  501. users $"c:\Program Files\3proxy\passwords"</pre>
  502. Шифрованные NT и crypt пароли можно создавать с помощью утилиты mycrypt.
  503. <br>Список пользователей един для всех служб. Разграничение доступа по службам
  504. необходимо производить с помощью списков доступа.
  505. </p>
  506. <li><a name="ACL"><i>Как ограничить доступ пользователей к ресурсам</i></a>
  507. <p>
  508. Для построения списков доступа используются команды allow, deny и
  509. flush. Команды имеют следующую структуру:
  510. <pre>
  511. allow &lt;userlist&gt; &lt;sourcelist&gt; &lt;targetlist&gt; &lt;targetportlist&gt; &lt;commandlist&gt; &lt;weekdays&gt; &lt;timeperiodslist&gt;
  512. deny &lt;userlist&gt; &lt;sourcelist&gt; &lt;targetlist&gt; &lt;targetportlist&gt; &lt;commandlist&gt; &lt;weekdays&gt; &lt;timeperiodslist&gt;
  513. flush</pre>
  514. Команда flush используется для сброса существующего списка доступа (это
  515. необходимо для того, чтобы можно было задать различные списки доступа для
  516. различных служб). allow служит для разрешения соединения, deny - для запрета
  517. соединения. Команда parent используется в качестве расширения команды
  518. allow для управления перенаправлениями соединений (о перенаправлении см. <a href="#REDIR">Как управлять перенаправлениями</a>).
  519. В момент установки исходящего соединения просматривается список доступа и
  520. находится первая запись, соответствующая запрошенному клиентом соединению.
  521. Если запись соттветствует allow - соединение разрешается, deny - запрещается.
  522. Если список пуст, то соединение разрешается. Если список не пуст, но подходящей
  523. записи нет, то соединение запрещается. При этом:
  524. <ul>
  525. <li>&lt;userlist&gt; - список логинов пользователей через запятую
  526. <li>&lt;sourcelist&gt; - список сетей клиентов через запятую. Сеть
  527. задается в формате xxx.yyy.zzz.mmm/l, где l - длина маски
  528. сети (количество ненулевых байт). Например, 192.168.1.0/24
  529. соответствует сети с маской 255.255.255.0.
  530. <li>&lt;targetlist&gt; - список сетей назначения через запятую
  531. <li>&lt;targetportlist&gt; - список портов назначения через запятую.
  532. можно задать диапазон портов через -, например, 80,1024-65535
  533. <li>&lt;commandlist&gt; - список команд, через запятую, для которых применяется правило:
  534. <br> CONNECT - установить исходящее TCP соединение (например, SOCKSv4/5, POP3 proxy, и т.д.)
  535. <br> BIND - разрешить входящее TCP соединение (SOCKSv5)
  536. <br> UDPASSOC - создать UDP-ассоциацию (SOCKSv5)
  537. <br> ICMPASSOC - создать ICMP-ассоциацию (не реализовано)
  538. <br> HTTP_GET - HTTP GET запрос (HTTP proxy)
  539. <br> HTTP_PUT - HTTP PUT запрос (HTTP proxy)
  540. <br> HTTP_POST - HTTP POST запрос (HTTP proxy)
  541. <br> HTTP_HEAD - HTTP HEAD запрос (HTTP proxy)
  542. <br> HTTP_CONNECT - HTTP CONNECT запрос (HTTP proxy)
  543. <br> HTTP_OTHER - другой HTTP запрос (HTTP proxy)
  544. <br> HTTP - соответствует любому HTTP запросу кроме HTTP_CONNECT (HTTP proxy)
  545. <br> HTTPS - тоже, что HTTP_CONNECT (HTTP proxy)
  546. <br> FTP_GET - FTP get запрос
  547. <br> FTP_PUT - FTP put запрос
  548. <br> FTP_LIST - FTP list запрос
  549. <br> FTP - соответствует любому FTP запросу
  550. <br> ADMIN - доступ к интерфейсу администрирования
  551. <li>&lt;weekdays&gt; задает список дней недели, 1 соответствует
  552. понедельнику, 0 или 7 - воскресенье. 1-5 означает с понедельника
  553. по пятницу (включительно). 1,3,5 задает нечетные дни недели.
  554. <li>&lt;timeperiodslist&gt; список интервалов дня в формате
  555. ЧЧ:ММ:СС-ЧЧ:ММ:СС, например, 00:00:00-08:00:00,17:00:00-24:00:00
  556. задает нерабочее время.
  557. </ul>
  558. Примеры использования листов доступа можно найти в файле 3proxy.cfg.sample.
  559. </p>
  560. <li><a name="REDIR"><i>Как управлять перенаправлениями</i></a>
  561. <p>
  562. Перенаправления имеет смысл использовать, например, чтобы перенаправить
  563. обращения определенных клиентов или на определнные сервера на другой сервер
  564. (например, при попытке доступа на Web сервер с недозволенным материалом
  565. перенаправить на собственный Web сервер, или для того, чтобы в зависимости
  566. от IP клиента перенаправлять его соединения на разные сервера (особенно при
  567. отображении портов через tcppm). Кроме того, перенаправление может быть
  568. использовано, например, для перенаправления все исходящих HTTP запросов,
  569. посланных через SOCKS, на HTTP прокси. Поскольку формат запроса к Web серверу
  570. и Proxy различается, не любой Proxy сервер способен корректно обработать
  571. перенаправленный запрос (HTTP proxy в комплекте 3proxy нормально обрабатывает
  572. перенаправленные запросы, что делает возможным его использования в качестве
  573. "прозрачного" прокси. Кроме того, HTTP прокси обнаруживает перенаправления
  574. на родительский прокси и генерирует нормальные заголовки. Пример простейшего
  575. перенаправления:
  576. <pre>
  577. auth iponly
  578. allow *
  579. parent 1000 http 192.168.1.1 3128
  580. proxy</pre>
  581. перенаправляет весь трафик службы proxy на родительский HTTP-прокси сервер
  582. 192.168.1.1 порт 3128.
  583. <br>
  584. Если в качестве номера порта указан порт 0, то указанный IP адрес используется
  585. в качестве внешнего адреса для установки соединения (аналог -eIP, но только
  586. для запросов попадающих под allow).
  587. <br>
  588. Специальным случаем перенаправлений являются локальные перенаправления,
  589. которые, как правило, используются совместно со службой socks. В локальных
  590. перенаправлениях IP адрес 0.0.0.0 порт 0. Например,
  591. <pre>
  592. auth iponly
  593. allow * * * 80
  594. parent 1000 http 0.0.0.0 0
  595. allow * * * 21
  596. parent 1000 ftp 0.0.0.0 0
  597. allow * * * 110
  598. parent 1000 pop3 0.0.0.0 0
  599. socks</pre>
  600. перенаправляет все содеинения, проходящие через SOCKS-сервер по 80 порту, в
  601. локальный HTTP прокси, 21-му - в FTP, и 110 - в POP3 прокси. При этом службы
  602. proxy, ftppr или pop3pr запускать не требуется. Это может быть полезно для
  603. того, чтобы видеть в логах записи о посещаемых пользвоателем ресурсах и
  604. загружаемых файлах даже в том случае, если он подключается через SOCKS.
  605. </p>
  606. <li><a name="ROUNDROBIN"><i>Как организовать балансировку между несоклькими каналами</i></a>
  607. <p>
  608. Сам по себе прокси не может управлять маршрутизацией пакетов сетевого уровня.
  609. Единственная возможность для управления внешними соединениями - это выбор
  610. внешнего интерфейса. Сделать выбор внешнего интерфейса случайным начиная
  611. с версии 0.6 можно с использованием локальных перенаправлений (с номером
  612. порта равным нулю):
  613. <pre>
  614. auth iponly
  615. allow *
  616. parent 500 http 10.1.1.101 0
  617. parent 500 http 10.2.1.102 0</pre>
  618. будет использовать внешний интерфейс 10.1.1.1 или 10.2.1.1 с вероятностью 0.5.
  619. Внешний интерфейс это то же, что задается командой external или опцией -e.
  620. Чтобы это работало как ожидается, необходимо, чтобы локальным интерфейсам
  621. 10.1.1.1 и 10.2.1.1 соответствовали разные маршруты по-умолчанию.
  622. <p>
  623. Если оба адреса принадлежат одной сети, например, 10.1.1.101 и 10.1.1.102 и
  624. нужно случайным образом выбирать один из шлюзов 10.1.1.1 и 10.1.1.2, то нужно
  625. управлять роутингом примерно так (при условии что маршрут по-умолчанию не
  626. задан):
  627. <pre>
  628. route add -p 10.1.1.1 10.1.1.101
  629. route add -p 10.1.1.2 10.1.1.102
  630. route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.1
  631. route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.2</pre>
  632. Если второго адреса на прокси сервере нет - его надо добавить. Под Linux/Unix
  633. лучше использовать source routing.
  634. </p>
  635. <li><a name="CHAIN"><i>Как составлять цепочки прокси</i></a>
  636. <p>
  637. Для составления цепочек прокси так же можно использовать команду parent, которая
  638. является расширением команды allow (т.е. команде parent должна предшествовать
  639. команда allow). С помощью этой команды можно строить цепочки из HTTPS
  640. (HTTP CONNECT), SOCKS4 и SOCKS5 прокси (т.е. последовательно подключаться
  641. через несколько прокси), при этом возможна авторизация на родительском прокси,
  642. звено цепочки может выбираться случайным образом из несольких значений
  643. с вероятностью согласно их весу. Вес (от 1 до 1000) задается для каждого
  644. прокси. Сумма весов по всем перенаправлениям должна быть кратна 1000.
  645. Прокси с весами до 1000 группируются, и при построении цепочки один из них
  646. выбирается случайно согласно весу. Длина цепочки определяется из суммарного
  647. веса. Например, если суммарный вес цепочки 3000, в цепочке будет 3 звена (хопа).
  648. Синтаксис команды:
  649. <pre>
  650. parent &lt;weight&gt; &lt;type&gt; &lt;ip&gt; &lt;port&gt; &lt;username&gt; &lt;password&gt;</pre>
  651. weight - вес прокси, type - тип прокси (tcp - перенаправление соединения,
  652. может быть только последним в цепочке, http - синоним tcp, connect - HTTP
  653. CONNECT/HTTPS прокси, socks4 - SOCKSv4 прокси, socks5 - SOCKSv5 прокси),
  654. ip - IP адрес прокси, port - порт прокси, username - имя для авторизации
  655. на прокси (опционально), password - пароль для авторизации на прокси
  656. (опционально).
  657. <br>Пример:
  658. <pre>
  659. allow *
  660. parent 500 socks5 192.168.1.1 1080
  661. parent 500 connect 192.168.10.1 3128</pre>
  662. Создает цепочку из одного звена (суммарный вес 1000), в котором один из двух
  663. прокси выбирается случайно с равной вероятностью (веса равны). В цепочку
  664. перенаправляются все исходящие соединения (определяется командой allow).
  665. <pre>
  666. allow * * * 80
  667. parent 1000 socks5 192.168.10.1 1080
  668. parent 1000 connect 192.168.20.1 3128
  669. parent 300 socks4 192.168.30.1 1080
  670. parent 700 socks5 192.168.40.1 1080</pre>
  671. Создает цепочку из трех звеньев (суммарный вес 3000). Первое звено -
  672. 192.168.10.1, второе - 192.168.20.1, а третье - либо 192.168.30.1 с
  673. вероятностью 0.3 либо 192.168.40.1 с вероятностью 0.7
  674. </p>
  675. <li><a name="BANDLIM"><i>Как ограничивать скорости приема</i></a>
  676. <p>
  677. 3proxy позволяет устанавливать фильтры ширины потребляемого канала. Для этого
  678. служат команды bandlimin/bandlimout и nobandlimin/nobandlimout
  679. (in в команде означает, что правило применяется к входящему трафику,
  680. out - к исходящему).
  681. <pre>
  682. bandlimin &lt;bitrate&gt; &lt;userlist&gt; &lt;sourcelist&gt; &lt;targetlist&gt; &lt;targetportlist&gt; &lt;commandlist&gt;
  683. nobandlimin &lt;userlist&gt; &lt;sourcelist&gt; &lt;targetlist&gt; &lt;targetportlist&gt; &lt;commandlist&gt;</pre>
  684. <p>
  685. bitrate указывает ширину потока в битах в секунду (именно в битах). В остальном
  686. команды аналогичны командам allow/deny с тем отличием, что команды bandlim
  687. не имеют привязки к конкретному сервису, такому как HTTP прокси или SOCKS
  688. и действуют на все сервисы, трафик по всем соединениям, попавшим под действие
  689. правила суммируется независимо от того, через какой сервис это соединение
  690. установлено.
  691. <pre>
  692. bandlimin 57600 * 192.168.10.16
  693. bandlimin 57600 * 192.168.10.17
  694. bandlimin 57600 * 192.168.10.18
  695. bandlimin 57600 * 192.168.10.19</pre>
  696. устанавалиет канал 57600 для каждого из четырех клиентов,
  697. <pre>
  698. bandlimin 57600 * 192.168.10.16/30</pre>
  699. устанавалиает суммарный канал 57600 на 4-х клиентов. Если необходимо, чтобы на
  700. какой-то сервис не было ограничения ширины канала, следует указать nobandlim
  701. для этого сервиса, например:
  702. <pre>
  703. nobandlimin * * * 110
  704. bandlimin 57600 * 192.168.10.16/32</pre>
  705. разрешает клиентам неограниченный по скорости доступ по протоколу POP3.
  706. </p>
  707. <li><a name="TRAFLIM"><i>Как ограничивать объем принимаемого трафика</i></a>
  708. <p>
  709. <pre>
  710. counter &lt;filename&gt; &lt;type&gt; &lt;reportpath&gt;
  711. countin &lt;number&gt; &lt;type&gt; &lt;amount&gt; &lt;userlist&gt; &lt;sourcelist&gt; &lt;targetlist&gt; &lt;targetportlist&gt; &lt;commandlist&gt;
  712. nocountin &lt;userlist&gt; &lt;sourcelist&gt; &lt;targetlist&gt; &lt;targetportlist&gt; &lt;commandlist&gt;</pre>
  713. countout &lt;number&gt; &lt;type&gt; &lt;amount&gt; &lt;userlist&gt; &lt;sourcelist&gt; &lt;targetlist&gt; &lt;targetportlist&gt; &lt;commandlist&gt;
  714. nocountout &lt;userlist&gt; &lt;sourcelist&gt; &lt;targetlist&gt; &lt;targetportlist&gt; &lt;commandlist&gt;</pre>
  715. <p>
  716. Команды позволяют установить лимит трафика на день, неделю или месяц.
  717. Сведения о трафике постоянно сохраняются в двоичном файле, указываемом
  718. командой counter, что делает подсчет трафика независимым от
  719. перезагрузки прокси. Можно управлять двоичным файлом, используя утилиту
  720. countersutil.
  721. Действие команд countin/nocountin аналогично действию bandlimin/nobandlimin,
  722. number - задает последовательный номер счетчика, номер должен быть
  723. уникальным положительным числом. Значение 0 указывает, что сведения
  724. для данного счетчика не надо сохранять в файле.
  725. <br>
  726. reportpath - путь, по которому будут создаваться текстовые отчеты по
  727. потребленному трафику.
  728. <br>
  729. type - тип ограничения или частота создания файлов отчета.
  730. D (На день), W (на неделю) или M (на месяц).
  731. <br>
  732. amount - объем трафика на указанный период в мегабайтах.
  733. </p>
  734. <li><a name="NETLIST"><i>Как строить списки сетей</i></a>
  735. <p>
  736. Очень часто списки сетей и пользователей бывают достаточно громоздкими.
  737. 3proxy не поддерживает создание групп, но позволяет включение файлов. Это
  738. означает, что для удобства администрирования выгодно хранить списки
  739. пользователей и списки сетей в отдельных файлах и при необходимости дать
  740. пользователю доступ к тому или иному ресурсу, править файл со списком
  741. пользователей или сетей вместо того, чтобы править сам файл 3proxy.cfg. В файле
  742. 3proxy.cfg файл со списком можно включить с помощью макроса $.
  743. Поскольку в 3proxy есть ограничения на максимальный размер элемента
  744. конфигурации, большие списки следует разбивать на несколько файлов и
  745. использовать несколько записей списка контроля доступом.
  746. В комплекте с 3proxy поставляется утилита dighosts, которая позволяет построить
  747. список сетей по странице Web. Утилита осуществляет поиск адресов на Web-странице
  748. в формате АДРЕС МАСКА или АДРЕС/ДЛИНА. Утилиту dighosts можно вызвать во время
  749. старта 3proxy, используя команду system. Например:
  750. <pre>
  751. system "dighosts http://provider/network.html local.networks"
  752. allow * * $local.networks
  753. allow *
  754. parent 1000 proxy.provider 3128 *
  755. proxy
  756. flush</pre>
  757. В данном случае в файле local.networks генерируется список локальных сетей по
  758. странице networklist.html. Далее используется список контроля доступа для того,
  759. чтобы разрешить локальному прокси-серверу доступ к локальным сетям напрямую,
  760. а все остальные запросы перенаправить на прокси-сервер провайдера.
  761. </p>
  762. <li><a name="NSCACHING"><i>Как управлять разрешением имен и кэшированием DNS</i></a>
  763. <p>
  764. Для разрешения имен и кэширования применяются команды nserver,
  765. nscache и nsrecord.
  766. <pre>
  767. nserver 192.168.1.2
  768. nserver 192.168.1.3</pre>
  769. указывает 3proxy какие машины следует использвоать в качестве серверов
  770. DNS. Сервер 192.168.1.3 будет использоваться толкьо при недостижимости
  771. 192.168.1.2. Можно указать до 5 серверов. Если nserver не указан, будут
  772. использованы системные функции разрешения имен.
  773. <pre>
  774. nscache 65535</pre>
  775. указывает размер кэша для разрешения имен (обычно достаточно большой).
  776. Кэш исопльзуется только при явном указании nserver.
  777. <pre>
  778. nsrecord server.mycompany.example.com 192.168.1.1
  779. nsrecord www.porno.com 127.0.0.2
  780. ...
  781. deny * * 127.0.0.2</pre>
  782. добавляет статическую запись в кэш.</p>
  783. <li><a name="DEMANDDIAL"><i>Как устанавливать соединение по требованию</i></a>
  784. <p>
  785. Команда dialer задает программу, которая будет запускаться при
  786. невозможности разрешить имя компьютера, например:
  787. <pre>
  788. dialer "rasdial PROVIDER"</pre>
  789. (описание rasdial можно найти на сервере поддержки Microsoft).
  790. Есть два аспекта: невозможность разрешения имени еще не свидетельствует
  791. об отсутствии соединения (это должна учитывать вызываемая программа),
  792. при использовании nscache имя может разрешиться при отсутствии
  793. соединения. В таких случаях полезно запрашивать заведомо несуществующий
  794. ресурс, например, http://dial.right.now/.
  795. </p>
  796. </ul>
  797. <hr>
  798. <li><a name="CLIENT"><b>Конфигурация клиентов</b></a>
  799. <p>
  800. <ul>
  801. <li><a name="IE"><i>Как использовать 3proxy с Internet Explorer или другим браузером</i></a>
  802. <p>Мы будем рассматривать Interenet Explorer, т.к. у него больше особенностей
  803. настройки, с другими браузерами должно возникать меньше вопросов.
  804. <p>Есть два основных способа работы с 3proxy - использовать HTTP прокси (сервис
  805. proxy) или SOCKS прокси (сервис socks). Обычно используется HTTP прокси. Для
  806. SOCKS прокси можно использовать встроенную поддержку браузера или
  807. программу-соксификатор (см.
  808. <a href="#CAP">Как использовать 3proxy с программой, не поддерживающей работу с прокси-сервером</a>),
  809. если встроенная поддержка SOCKS чем-то не устраивает или так удобнее. Не все
  810. соксификаторы поддерживают входящие соединения, поэтому чтобы не было проблем с
  811. протоколом FTP лучше использовать пассивный режим (в Internet Explorer 5.5SP2
  812. и выше "Использовать пассивный FTP-протокол").
  813. <p>Для конфигурации HTTP прокси необходимо указать внутренний адрес и порт,
  814. установленые для службы proxy в конфигурации 3proxy (либо как "Один
  815. прокси-сервер для всех протоколов" либо для HTTP, Secure, FTP). Поддержка
  816. Gopher в 3proxy в настоящий момент не реализована, но этот устаревший протокол
  817. в Internet практически не используется. Для нормальной работы FTP через HTTP
  818. прокси необходимо отключить представление для папок FTP (FTP folder view),
  819. он включен по-умолчанию, т.к. иначе FTP будет работать без использвания HTTP
  820. прокси. HTTP прокси использует пассивный режим для протокола FTP. В настройках
  821. 3proxy рекомендуется разрешть метод HTTP_CONNECT только для порта назначения 443.
  822. Если метод HTTP_CONNECT не разрешен, то не будет работать протокол HTTPS, если
  823. он разрешен для всех портов, то можно обойти журналирование запросов для
  824. протокола HTTP).
  825. Для работы с HTTP прокси может использоваться авторизация по паролю (strong).
  826. <p>Для использования SOCKS необходимо настроить только SOCKS прокси (иначе для
  827. протоколов, для которых указан прокси сервер, он будет использоваться как HTTP
  828. прокси). Internet Explorer (включая IE 6.0SP1)
  829. поддерживает только SOCKSv4. В качестве имени пользователя передается имя
  830. пользователя, использованное для входа в систему. Передача пароля в SOCKSv4 не
  831. поддерживается, поэтому авторизация по паролю (strong) не доступна. Можно
  832. использовать имя пользователя, переданное браузером в ACL для iponly-авторизации,
  833. но при этом необходимо иметь ввиду ненадежность такого способа. При работе через
  834. SOCKS Internet Explorer (и большая часть других браузеров) используют пассивный
  835. режим работы для FTP. При использовании SOCKS можно получить в журнале (логах)
  836. URL запрашиваемых страниц, для этого необходимо создать внутреннее
  837. перенаправление в HTTP прокси для порта 80 (и других портов, используемых для
  838. HTTP) в локальный HTTP прокси (proxy), порт 21 (и другие порты, используемые
  839. FTP) в FTP прокси. При перенаправлении соединений в FTP прокси, нужно иметь
  840. ввиду, что FTP создает вторичные соединения для передачи данных. Для этого,
  841. во-первых, необходимо разрешить доступ к внутреннему интерфейсу прокси сервера
  842. через SOCKS (что не очень безопасно), во-вторых, принять меры, чтобы в SOCKS
  843. такие соединения на внутренний интерфейс не тарифицировались (т.к. иначе они
  844. будут тарифицироваться дважды - SOCKS и FTP прокси).
  845. <p>Internet Explorer и другие продвинутые браузеры поддерживают автоматическую
  846. конфигурацию прокси-сервера в полностью автоматическом или полуавтоматическом
  847. режимах. Автоматическая конфигурация позволяет задать достаточно сложные
  848. правила, позволяющие клиентам использовать (или не использвоать) разные
  849. прокси-серверы для доступа к разным ресурсам. Эта возможность разбирается в
  850. статьях
  851. <br>Microsoft: Q296591 A Description of the Automatic Discovery Feature
  852. <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>
  853. <br>Netscape: Navigator Proxy Auto-Config File Format
  854. <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>
  855. <li><a name="FTP"><i>Как настраивать FTP клиент</i></a>
  856. <p>
  857. Настройка FTP клиента для работы через SOCKS прокси не отличается от настройки
  858. <a href="#IE">браузера</a>.
  859. <p>
  860. Для работы с FTP клиентом через FTP прокси (ftppr) есть несколько возможностей.
  861. Допустим, нам необходимо подключиться ко внешнему FTP серверу со следующими
  862. параметрами:
  863. <pre>
  864. Адрес: ftp.security.nnov.ru
  865. Username: ftpuser
  866. Password: ********</pre>
  867. <p>Работа с клиентом, не поддерживающим FTP прокси - в качестве адреса FTP
  868. сервера указывается адрес прокси (например, proxy.security.nnov.ru), в качестве
  869. имени пользователя ftpuser@ftp.security.nnov.ru. Если для доступа к службе
  870. ftppr требуется авторизация по имени и паролю с именем pruser и паролем prpass,
  871. то в качестве имени пользователя необходимо указать
  872. pruser:prpass:ftpuser@ftp.security.nnov.ru. Если FTP клиент требует указания
  873. полной URL для подключения к серверу, то она должна выглядеть как
  874. <p>
  875. pruser:prpass:ftpuser@ftp.security.nnov.ru:********@proxy.security.nnov.ru
  876. <p>
  877. Не все клиенты обработают это корректно, но в большинстве случаев этого не
  878. требуется.
  879. <p>Работа с клиентом, поддерживающим FTP прокси - если 3proxy
  880. не требует авторизации по паролю, то настройки стандартны для клиента. Если
  881. требуется доступ по паролю, то в качестве имени пользователя указывается
  882. pruser:prpass:ftpuser.
  883. <li><a name="SMTP"><i>Как использовать SMTP через 3proxy</i></a>
  884. <p>
  885. В большинстве случаев достаточно установить отображение (tcppm) TCP порта 25 на
  886. аналогичный порт SMTP сервера провайдера. В конфигурации клиента указать
  887. внутренний адрес прокси в качестве адреса SMTP-сервера.
  888. <li><a name="POP3"><i>Как использовать POP3 proxy</i></a>
  889. <p>
  890. Предположим, у вас есть следующие настройки для получения почты:
  891. <pre>
  892. POP3 server: pop3.security.nnov.ru
  893. Login: user
  894. Password: ********</pre>
  895. В настройках почтовой программы следует указать:
  896. <pre>
  897. POP3 server: (адрес прокси-сервера)
  898. Login: user@pop3.security.nnov.ru
  899. Password: ********</pre>
  900. <p>
  901. Имя пользователя может само по себе содержать знак '@'. Если в примере выше
  902. имя пользователя user@security.nnov.ru, то имя пользвоателя для доступа к
  903. прокси-серверу должно быть user@security.nnov.ru@pop3.security.nnov.ru. Если
  904. pop3pr требует авторизации по имени/паролю (например, pruser и prpass), то их
  905. необходимо указать в начале имени пользователя, отделив знаком ':', т.е для
  906. самого тяжелого случая pruser:prpass:user@security.nnov.ru@pop3.security.nnov.ru
  907. </p>
  908. <li><a name="CAP"><i>Как использовать 3proxy с программой, не поддерживающей работу с прокси-сервером</i></a>
  909. <p>
  910. Можно использовать любую программу-редиректор, например,
  911. <a href="http://www.socks.permeo.com">SocksCAP</a> или
  912. <a href="http://www.freecap.ru">FreeCAP</a>. 3proxy поддерживает исходящие
  913. и обратные TCP и UDP соединения, но редиректоры могут иметь свои ограничения,
  914. кроме того, некоторые плохо написаные приложения не поддаются "соксификации".
  915. Если программе требуется обращаться к небольшому набору серверов
  916. (например, игровых), то проблему можно решить с помощью портмаппинга.
  917. <li><a name="GAMES"><i>Как использовать 3proxy с играми</i></a>
  918. <p>
  919. Оптимальный варинт - использовать соксификатор (<a href="#CAP">Как использовать
  920. 3proxy с программой, не поддерживающей работу с прокси-сервером</a>).
  921. <a href="http://www.freecap.ru/">FreeCap 3.13 </a> проверен с играми на движке
  922. Unreal (включая Unreal Tournament), Half-Life (включая Counter-Strike) и
  923. другими. Если по каким-то причинам соксификатор не работает или недоступен,
  924. то необходимо использовать отображения портов (обычно игры,
  925. кроме mood-подобных, работают по протоколу UDP, надо использовать udppm).
  926. Нужно иметь ввиду, что для udppm требуется отдельный маппинг для каждого
  927. серверного порта и каждого клиента. Например, если есть один сервер с портами
  928. 2115 и 2116 и три клиента, то нужно создать 6 разных маппингов, например
  929. <pre>
  930. udppm 12115 server 2115
  931. udppm 12115 server 2115
  932. udppm 22115 server 2115
  933. udppm 32115 server 2115
  934. udppm 12116 server 2116
  935. udppm 22116 server 2116
  936. udppm 32116 server 2116</pre>
  937. В игровом клиенте адрес и порт с маппингом следует указывать вместо адреса
  938. и порта сервера.
  939. </p>
  940. </ul>
  941. <hr>
  942. <li><a name="ADMIN"><b>Администрирование и анализ информации</b></a>
  943. <p>
  944. <ul>
  945. <li><a name="NEWVERSION"><i>Где взять свежую версию</i></a>
  946. <p>
  947. Свежую версию всегда можно взять
  948. <a href="http://3proxy.ru/">здесь</a>. Обратите внимание,
  949. что в новой версии может измениться порядок лицензирования или команды
  950. конфигурации, поэтому прежде чем устанавливать новую версии программы
  951. обязательно ознакомьтесь с документацией.
  952. </p>
  953. <li><a name="NTSERVICE"><i>Как управлять службой 3proxy в Windows NT/2000/XP</i></a>
  954. <p>
  955. При установке 3proxy в качестве системной службы сервером поддерживаются
  956. команды запуска, остановки, временной приостановки и продолжения.
  957. При временной приостановке сервер перестает принимать новые запросы от
  958. клиентов, но обработка ранее поступивших запросов продолжается. Сервер не
  959. подерживает динамическое изменение конфигурации, т.е. после изменения
  960. конфигурации 3proxy необходимо перезапустить.
  961. Управлять запуском, остановкой, приостановкой и продолжением можно либо
  962. через служебную программу "Службы" (Services) либо через команду net:
  963. <pre>
  964. net start 3proxy
  965. net stop 3proxy
  966. net pause 3proxy
  967. net continue 3proxy</pre>
  968. </p>
  969. <li><a name="ERRORS"><i>Коды ошибок в журнале</i></a>
  970. <p>
  971. <ul>
  972. <li>0 - операция завершена успешно (в случае установленного
  973. соединения - соединение закрыто корректно одной из
  974. сторон).
  975. <li>1-9 - ошибки авторизации
  976. <li>1 - доступ закрыт ACL (deny)
  977. <li>2 - перенаправление (не должно быть в журнале)
  978. <li>3 - нет записи ACL для данного соединения
  979. <li>4 - не определено имя пользователя для auth strong
  980. <li>5 - не найдено имя пользователя для auth strong
  981. <li>6 - неверный пароль (открытый текст)
  982. <li>7 - неверный пароль (crypt)
  983. <li>8 - неверный пароль (NT)
  984. <li>9 - недостаточно данных для перенаправления (не должно быть в журнале)
  985. <li>10 - превышен лимит трафика
  986. <li>11-19 - ошибки соединения
  987. <li>11 - невозможно создать сокет socket()
  988. <li>12 - невозможно выбрать интерфейс bind()
  989. <li>13 - сбой подключения connect()
  990. <li>14 - сбой getpeername()
  991. <li>20-29 - общие ошибки
  992. <li>21 - ошибка выделения памяти
  993. <li>30-39 - ошибки перенаправления CONNECT
  994. <li>31 - невозможно послать запрос к CONNECT прокси
  995. <li>32 - превышено ожидание или некорректный ответ CONNECT прокси
  996. <li>33 - CONNECT прокси не может установить соединение
  997. <li>34 - превышено ожидание или обрыв соединения при согласовании CONNECT соединения
  998. <li>40-49 - ошибки перенаправления SOCKS4
  999. <li>50-69 - ошибки перенаправления SOCKS5
  1000. <li>70-79 ошибки установки родительского соединения, аналогичны 1x
  1001. <li>90-99 - ошибки разрыва соединения
  1002. <li>90 - ошибка сокета или соединение неожиданно прервано
  1003. <li>91 - общий сбой стека TCP/IP
  1004. <li>92 - соединение прервано по таймауту
  1005. <li>93 - ошибка получения данных от сервера
  1006. <li>94 - ошибка получения данных от клиента
  1007. <li>95 - таймаут из-за ограничения bandlimin/bandlimout
  1008. <li>96 - ошибка отправки данных клиенту
  1009. <li>97 - ошибка отправки данных серверу
  1010. <li>98 - исчерпан лимит данных сервера (не должно быть в журнале)
  1011. <li>99 - исчерпан лимит данных клиента (не должно быть в журнале)
  1012. <li>100 - не найден IP адрес по запросу клиента
  1013. <li>200-299 - ошибки UDP portmapper
  1014. <li>300-399 - ошибки TCP portmapper
  1015. <li>400-499 - ошибки SOCKS proxy
  1016. <li>500-599 - ошибки HTTP proxy
  1017. <li>600-699 - ошибки POP3 proxy
  1018. <li>999 - функция не реализована
  1019. </ul>
  1020. </p>
  1021. </ul>
  1022. <hr>
  1023. <li><a name="QUEST"><b>Как задать вопрос, которого нет в HowTo</b></a>
  1024. <p>
  1025. Задайте его на <a href="http://3proxy.ru/board3.html">форуме</a>.
  1026. Только не пытайтесь задавать какие-либо вопросы, если вы просто не поняли этот
  1027. HowTo.
  1028. </ul>
  1029. <pre>
  1030. $Id: howtor.html,v 1.40 2010/01/21 13:34:20 v.dubrovin Exp $
  1031. </pre>