mirror of
				https://github.com/3proxy/3proxy.git
				synced 2025-11-04 15:52:39 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			281 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			281 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 | 
						||
3APA3A 3proxy tiny proxy server Frequently Asked Questions (FAQ)
 | 
						||
<ul>
 | 
						||
  <li><a href="#TROUBLE">Почему не работает...</a></li>
 | 
						||
  <ul>
 | 
						||
    <li><a href="#NOTHING">Q: Почему ничего не работает?</a></li>
 | 
						||
    <li><a href="#LIMITS">Q: Почему не работают ограничения доступа (перенаправления, ограничения по скорости, трафику и т.д.)?</a></li>
 | 
						||
    <li><a href="#SERVICE">Q: Почему 3proxy не запускается как служба?</a></li>
 | 
						||
    <li><a href="#INTEXT">Q: Почему не получается указать internal и external?</a></li>
 | 
						||
    <li><a href="#ODBC">Q: Почему не работает ведение журналов в ODBC?</a></li>
 | 
						||
    <li><a href="#CHAP">Q: Почему не поддерживаются APOP и CRAM-MD5 в POP3 прокси?</a></li>
 | 
						||
  </ul>
 | 
						||
  <li><a href="#SOCKSREDIR">Перенаправление socks соединений в локальный прокси</a></li>
 | 
						||
  <ul>
 | 
						||
    <li><a href="#REDIR">Q: Для чего это надо?</a></li>
 | 
						||
    <li><a href="#REDIRLIMIT">Q: Какие недостатки?</a></li>
 | 
						||
    <li><a href="#REDIRADV">Q: Какие преимущества?</a></li>
 | 
						||
    <li><a href="#REDIRHOW">Q: Как настраивается?</a></li>
 | 
						||
    <li><a href="#REDIINTER">Q: Как взаимодействует с другими правилами в ACL?</a></li>
 | 
						||
  </ul>
 | 
						||
  <li><a href="#ISIT">А есть ли...</a></li>
 | 
						||
  <ul>
 | 
						||
    <li><a href="#NAMES">Можно ли разрешать имена на родительском прокси?</a></li>
 | 
						||
    <li><a href="#ISFTP">Существует ли сейчас поддержка FTP прокси в продукте?</a></li>
 | 
						||
    <li><a href="#PORT">Каким образом можно прибиндить сервисы на свой порт, к примеру, HTTP прокси к 8080, а не 3128 как по-умолчанию?</a></li>
 | 
						||
    <li><a href="#BANDLIM">Как ограничить ширину канала?</a></li>
 | 
						||
  </ul>
 | 
						||
  <li><a href="#BRRR">Почему так криво...</a></li>
 | 
						||
  <ul>
 | 
						||
    <li><a href="#TRAF">Почему так криво считается трафик? Не совпадает с ...</a></li>
 | 
						||
    <li><a href="#CONFIG">Почему такая кривая конфигурация и ничерта не понятно?</a></li>
 | 
						||
    <li><a href="#CODE">Почему так криво написан код?</a>
 | 
						||
    <li><a href="#UNSAFE">Почему так много strcpy, sprintf и т.д., это ж дыры!</a>
 | 
						||
  </ul>
 | 
						||
</ul>
 | 
						||
<hr>
 | 
						||
<li><b><a name="TROUBLE">Почему не работает...<a></b></li>
 | 
						||
<ul>
 | 
						||
  <li><a name="NOTHING"><i>Q: Почему ничего не работает?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Потому что для работы нужен правильный файл конфигурации.
 | 
						||
  </p>
 | 
						||
  <li><a name="LIMITS"><i>Q: Почему не работают ограничения доступа (перенаправления, ограничения по скорости,
 | 
						||
  трафику и т.д.)?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Обычные ошибки - использование auth none (для работы любых
 | 
						||
  функций, основанных на ACL, требуется auth iponly, nbname или strong),
 | 
						||
  нарушение порядка ввода команд (команды выполняются последовательно,
 | 
						||
  запуск сервиса proxy, socks, tcppm и т.д. должен осуществляться после
 | 
						||
  того, как указана его конфигурация), неправильный порядок записей в ACL
 | 
						||
  (записи просматриваются последовательно до первой, удовлетворяющей
 | 
						||
  критериям). Если в ACL имеется хотя бы одна запись, то считается, что
 | 
						||
  последняя запись в ACL - это неявная deny *.
 | 
						||
  </p>
 | 
						||
  <li><a name="SERVICE"><i>Q: Почему 3proxy не запускается как служба?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Наиболее вероятные причины:
 | 
						||
  <ul>
 | 
						||
    <li>Отсутствие команды service в файле конфигурации - команда необходима в 3proxy 0.5.2 и более ранних, чтобы 3proxy вел себя как системная служба Windows
 | 
						||
    <li>Использование относительных (неполных) путей файлов в файле конфигурации
 | 
						||
    При использовании файлов журналов, файлов вставок ($filename) используйте
 | 
						||
    полные пути, например, $"c:\3proxy\include files\networks.local". Тоже самое
 | 
						||
    относится к файлам журналов и любым другим.
 | 
						||
    Для отладки лучше запускать 3proxy с ведением журнала на стандартный вывод.
 | 
						||
    Не забудьте в таком случае отключить daemon и service в файле конфигурации.
 | 
						||
    Для чистоты эксперимента запускать 3proxy из коммандной строки в таком случае
 | 
						||
    следует, находясь в другой папке.
 | 
						||
    <li>Отсутствие у системной записи прав на доступ к исполняемому файлу, каким-либо файлам конфигурации, журнала и т.п.
 | 
						||
    <li>Отсутствие файла конфигурации по стандартному расположению -
 | 
						||
    3proxy.cfg в одном каталоге с исполняемым файлом. Если файл расположен по
 | 
						||
    другому пути, необходимо использовать команду
 | 
						||
    <pre>
 | 
						||
    3proxy --install path_to_configuration_file</pre>
 | 
						||
    <li>Отсутствие у пользователя прав на установку или запуск службы
 | 
						||
    <li>Служба уже установлена или запущена
 | 
						||
  </ul>
 | 
						||
  </p>
 | 
						||
  <li><a name="INTEXT"><i>Q: Почему не получается указать internal и external?</i></a></li></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Убедитесь, что выправильно понимаете что такое internal и external адреса.
 | 
						||
  Оба адреса - это адреса, принадлежищие хосту, на котором установлен 3proxy.
 | 
						||
  Эта опция конфигурации необходима в классической ситуации, когда 3proxy
 | 
						||
  установлен на граничном компьютере с двумя (или более) подключениями:
 | 
						||
  <pre>
 | 
						||
       LAN connection +-------------+ Internet connection
 | 
						||
  LAN <-------------->| 3proxy host |<-------------------> INTERNET
 | 
						||
                     ^+-------------+^
 | 
						||
                     |               |
 | 
						||
               Internal IP      External IP</pre>
 | 
						||
  Если 3proxy работает на хосте с одним интерфейсом, то его адрес будет и
 | 
						||
  internal и external.
 | 
						||
  <br>Интерфейс с адресом internal должен существовать и быть рабочим на момент
 | 
						||
  запуска 3proxy, и не должен отключаться. Если internal интерфейс
 | 
						||
  периодически отключается, то не следует его указывать, или можно указать адрес
 | 
						||
  0.0.0.0. При этом прокси будет принимать запросы на всех интерфейсах, поэтому
 | 
						||
  при наличии нескольких интерфейсов для ограничения доступа следует использовать
 | 
						||
  фаервол или хотя бы ACL.
 | 
						||
  </p>
 | 
						||
  <p>
 | 
						||
  Интерфейс с адресом external, если он указан, должен быть рабочим на момент
 | 
						||
  получения запроса клиента. При отсутствии external или адресе 0.0.0.0 внешний
 | 
						||
  адрес будет выбираться системой при установке соединения. При этом, может быть
 | 
						||
  возможность доступа через прокси к ресурсам локальной сети, поэтому для
 | 
						||
  предотвращения несанкционированного доступа следует использовать ACL. Кроме
 | 
						||
  того, могут быть проблемы с приемом входящих соединений через SOCKSv5
 | 
						||
  (SOCKSv5 используется в клиентах исключительно редко).
 | 
						||
  В случае, если адрес динамический, можно либо не
 | 
						||
  указывать external, либо использовать адрес 0.0.0.0, либо, если необходима
 | 
						||
  поддержка входящих соединений в SOCKSv5, использовать скрипт,
 | 
						||
  который будет получать текущий адрес и сохранять его в файл, который будет
 | 
						||
  отслуживаться через команду monitor.
 | 
						||
  </p>
 | 
						||
  <li><a name="ODBC"><i>Q: Почему не работает ведение журналов в ODBC?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Убедитесь, что используется системный, а не
 | 
						||
  пользовательский DSN. Убедитесь, что выполняется правильный SQL запрос. Наиболее
 | 
						||
  распространенная проблема связана с отсутствием кавычек или неправильным
 | 
						||
  форматом данных. Самый простой способ - сделать ведение журнала в файл или
 | 
						||
  на стандартный вывод, просмотреть выдаваемые SQL запросы и попробовать
 | 
						||
  дать такой запрос вручную.
 | 
						||
  </p> 
 | 
						||
  <li><a name="CHAP"><i>Q: Почему не поддерживаются APOP и CRAM-MD5 в POP3 прокси?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Любая challenge-response аутентификация, к которым относятся APOP
 | 
						||
  и CRAM-MD5, требует, чтобы со стороны сервера был передан уникальный challenge.
 | 
						||
  До начала аутентификации POP3 прокси не знает, к какому серверу следует
 | 
						||
  подключаться для получения Challenge, поэтому challenge-response в принципе
 | 
						||
  невозможен. Защитить соединение можно с помощью TLS (например, stunnel) или
 | 
						||
  IPSec.
 | 
						||
  </p>
 | 
						||
</ul>
 | 
						||
<hr>
 | 
						||
<li><b><a name="SOCKSREDIR">Перенаправление socks соединений в локальный прокси</a></b></li>
 | 
						||
<ul>
 | 
						||
  <li><a name="REDIR"><i>Q: Для чего это надо?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Чтобы иметь в логах URL запросов, если пользователь SOCKS пользуется
 | 
						||
  Web, FTP или POP3.
 | 
						||
  </p>
 | 
						||
  <li><a name="REDIRLIMIT"><i>Q: Какие недостатки?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Перенапраление невозможно для web-серверов или FTP, висящих на
 | 
						||
  нестандартных портах, для SOCKSv4 не поддрживается авторизация с
 | 
						||
  паролем (IE поддерживает только SOCKSv4), но при этом IE передает
 | 
						||
  имя пользователя по SOCKSv4 (имя, с которым пользователь вошел в систему).
 | 
						||
  Для SOCKSv5 не поддерживается NTLM авторизация, пароли передаются в открытом
 | 
						||
  тексте.
 | 
						||
  </p>
 | 
						||
  <li><a name="REDIRADV"><i>Q: Какие преимущества?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Достаточно в настройках IE только указать адрес SOCKS прокси. В
 | 
						||
  больших сетях можно для этого использовать WPAD (автоматическое
 | 
						||
  обнаружение прокси). В 3proxy достаточно запускать только одну службу
 | 
						||
  (socks). Если используется только Internet Explorer, то можно
 | 
						||
  автоматически получать имя пользователя в логах, не запрашивая
 | 
						||
  логин/пароль.
 | 
						||
  </p>
 | 
						||
  <li><a name="REDIRHOW"><i>Q: Как настраивается?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Указывается parent http proxy со специальным адресом 0.0.0.0 и портом
 | 
						||
  0. Пример:
 | 
						||
  <pre>
 | 
						||
  allow * * * 80,8080-8088
 | 
						||
  parent 1000 http 0.0.0.0 0
 | 
						||
  allow * * * 80,8080-8088
 | 
						||
  #перенаправить соединения по портам 80 и 8080-8088 в локальный
 | 
						||
  #http прокси. Вторая команда allow необходима, т.к. контроль доступа
 | 
						||
  #осуществляется 2 раза - на уровне socks и на уровне HTTP прокси
 | 
						||
  allow * * * 21,2121
 | 
						||
  parent 1000 ftp 0.0.0.0 0
 | 
						||
  allow * * * 21,2121
 | 
						||
  #перенаправить соединения по портам 21 и 2121 в локальный
 | 
						||
  #ftp прокси
 | 
						||
  allow *
 | 
						||
  #пустить все соединения напрямую
 | 
						||
  socks</pre>
 | 
						||
  </p>
 | 
						||
  <li><a name="REDIINTER"><i>Q: Как взаимодействует с другими правилами в ACL?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> После внутреннего перенаправления правила рассматриваются еще раз за
 | 
						||
  исключением самого правила с перенаправлением (т.е. обработка правил не
 | 
						||
  прекращается). Это позволяет сделать дальнейшие перенаправления на
 | 
						||
  внешний прокси. По этой же причине локальное перенаправление не должно
 | 
						||
  быть последним правилом (т.е. должно быть еще хотя бы правило allow,
 | 
						||
  чтобы разрешить внешние соединения через HTTP прокси).
 | 
						||
  Например,
 | 
						||
  <pre>
 | 
						||
  allow * * * 80,8080-8088
 | 
						||
  parent 1000 http 0.0.0.0 0
 | 
						||
  #перенаправить во внутренний прокси
 | 
						||
  allow * * $c:\3proxy\local.nets 80,8080-8088
 | 
						||
  #разрешить прямой web-доступ к сетям из local.nets
 | 
						||
  allow * * * 80,8080-8088
 | 
						||
  parent 1000 http proxy.3proxy.ru 3128
 | 
						||
  #все остальные веб-запросы перенаправить на внешний прокси-сервер
 | 
						||
  allow *
 | 
						||
  #разрешить socks-запросы по другим портам</pre>
 | 
						||
  </p>
 | 
						||
</ul>
 | 
						||
<hr>
 | 
						||
<li><b><a name="ISIT">А есть ли...</a></b></li>
 | 
						||
<ul>
 | 
						||
  <li><a name="NAMES"><i>Q: Можно ли разрешать имена на родительском прокси?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Можно. Для этого надо использовать тип родительского прокси http,
 | 
						||
  connect+, socks4+ и socks5+. Однако, при это надо помнить, что самому 3proxy
 | 
						||
  требуется разрешение имени для управления ACL. Поэтому, если с прокси-хоста
 | 
						||
  не работают разрешения имени, необходимо в конфигурации дать команду
 | 
						||
  <pre>
 | 
						||
  fakeresolve</pre>
 | 
						||
  которая разрешает любое имя в адрес 127.0.0.2.
 | 
						||
  </p>
 | 
						||
  <li><a name="ISFTP"><i>Q: Существует ли сейчас поддержка FTP прокси в продукте?</i></a></li>
 | 
						||
  <p>
 | 
						||
  Есть поддержка как FTP через HTTP (то, что называется FTP прокси в Internet
 | 
						||
  Explorer, Netscape, Opera) так и настоящего FTP прокси (то, что называется
 | 
						||
  FTP proxy в FAR и FTP клиентах).
 | 
						||
  </p>
 | 
						||
  <li><a name="PORT"><i>Q: Каким образом можно прибиндить сервисы на свой порт, к примеру, HTTP прокси к 8080, а не 3128 как по-умолчанию?</i></a></li>
 | 
						||
  <p>
 | 
						||
  А:
 | 
						||
  <pre>
 | 
						||
  proxy -p8080</pre>
 | 
						||
  </p>
 | 
						||
  <li><a name="BANDLIM"><i>Q: Как ограничить ширину канала?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Читайте HowTo <a href="http://3proxy.ru/howtor.asp#BANDLIM">http://3proxy.ru/howtor.asp#BANDLIM</a>
 | 
						||
  </p>
 | 
						||
</ul>
 | 
						||
<hr>
 | 
						||
<li><b><a name="BRRR">Почему так криво...</a></b></li>
 | 
						||
<ul>
 | 
						||
  <li><a name="TRAF"><i>Q: Почему так криво считается трафик? Не совпадает с ...</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Следует учитывать, что 3proxy считает трафик только на прикладном уровне и
 | 
						||
  только проходящий через прокси-сервер. Провайдеры и другие средства учета
 | 
						||
  трафика считают трафик на сетевом уровне, что уже дает расхождение порядка 10%
 | 
						||
  за счет информации из заголовков пакетов. Кроме того, часть трафика, как
 | 
						||
  минимум DNS-разрешения, различный флудовый трафик и т.д. идут мимо прокси.
 | 
						||
  Уровень "шумового" трафика в Internet сейчас составляет порядка 50KB/день на
 | 
						||
  каждый реальный IP адрес, но может сильно варьироваться в зависимости от сети,
 | 
						||
  наличия открытых портов, реакции на ping-запросы и текущего уровня вирусной
 | 
						||
  активности. По этим причинам, если 3proxy используется чтобы не "выжрать"
 | 
						||
  трафик, выделенный провайдером, всегда следует делать некий запас порядка
 | 
						||
  15%.
 | 
						||
  </p>
 | 
						||
  <p>
 | 
						||
  Если на одной с 3proxy машине имеются какие-либо сервисы или
 | 
						||
  работает пользователь, то их трафик не проходит через proxy-сервер и так же
 | 
						||
  не будет учтен. Если где-то есть NAT, то клиенты, выходящие через NAT мимо
 | 
						||
  прокси, так же останутся неучтенными. Если расхождение с провайдером превышает
 | 
						||
  10% - нужно искать причину именно в этом.
 | 
						||
  </p>
 | 
						||
  <li><a name="CONFIG"><i>Q: Почему такая кривая конфигурация и ничерта не понятно?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Есть несколько причин. Во-первых, до выхода релиза (т.е. версии 1.0) я буду изо
 | 
						||
  всех сил добиваться совместимости конфигурации между версиями. Во-вторых,
 | 
						||
  конфигурация сделана так, чтобы ее можно было легко разбирать программно.
 | 
						||
  В-третьих, все там понятно. При желании. Если знать как все работает.
 | 
						||
  </p>
 | 
						||
  <li><a name="CODE"><i>Q: Почему так криво написан код?</i></a></li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Есть несколько причин. Во-первых, я не программист. Во-вторых, 3proxy изначально
 | 
						||
  писался на коленке (в отет на "слабо" в одной из конференций). Никто
 | 
						||
  не мог предположить, что им кто-то реально будет пользоваться. В-третьих, у многих
 | 
						||
  возникает желание разобраться в коде 3proxy чтобы внедрить его в какой-нибудь
 | 
						||
  троян. Очень не хочется облегчать эту задачу. В-четвертых, мне надо добиться
 | 
						||
  компиляции кода в как можно большем числе систем. Замечено, что чем кривее код в
 | 
						||
  C, тем он лучше переносится.
 | 
						||
  </p>
 | 
						||
  <li><a name="UNSAFE"><i>Q: Почему так много strcpy, sprintf и т.д., это ж дыры!</i></a><li>
 | 
						||
  <p>
 | 
						||
  <i>A:</i> Есть несколько причин. Во-первых, несмотря на дурной тон использования этих
 | 
						||
  функций, они наиболее совместимы между разными системами и компиляторами.
 | 
						||
  Во-вторых, само по себе их использование не означает присутствие дыры, если их
 | 
						||
  параметры должным образом контролируются. Найдете дыру - обязательно сообщите.
 | 
						||
  В третьих, может быть я уберу их перед конечным релизом, чтобы никого не
 | 
						||
  пугать.
 | 
						||
  </p>
 | 
						||
</ul>
 |