| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- <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.sandy.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>
|