3APA3A 3proxy tiny proxy server Frequently Asked Questions (FAQ)
A: Потому что для работы нужен правильный файл конфигурации.
A: Обычные ошибки - использование auth none (для работы любых функций, основанных на ACL, требуется auth iponly, nbname или strong), нарушение порядка ввода команд (команды выполняются последовательно, запуск сервиса proxy, socks, tcppm и т.д. должен осуществляться после того, как указана его конфигурация), неправильный порядок записей в ACL (записи просматриваются последовательно до первой, удовлетворяющей критериям). Если в ACL имеется хотя бы одна запись, то считается, что последняя запись в ACL - это неявная deny *.
A: Наиболее вероятные причины:
3proxy --install path_to_configuration_file
A: Убедитесь, что выправильно понимаете что такое internal и external адреса. Оба адреса - это адреса, принадлежищие хосту, на котором установлен 3proxy. Эта опция конфигурации необходима в классической ситуации, когда 3proxy установлен на граничном компьютере с двумя (или более) подключениями:
LAN connection +-------------+ Internet connection LAN <-------------->| 3proxy host |<-------------------> INTERNET ^+-------------+^ | | Internal IP External IPЕсли 3proxy работает на хосте с одним интерфейсом, то его адрес будет и internal и external.
Интерфейс с адресом external, если он указан, должен быть рабочим на момент получения запроса клиента. При отсутствии external или адресе 0.0.0.0 внешний адрес будет выбираться системой при установке соединения. При этом, может быть возможность доступа через прокси к ресурсам локальной сети, поэтому для предотвращения несанкционированного доступа следует использовать ACL. Кроме того, могут быть проблемы с приемом входящих соединений через SOCKSv5 (SOCKSv5 используется в клиентах исключительно редко). В случае, если адрес динамический, можно либо не указывать external, либо использовать адрес 0.0.0.0, либо, если необходима поддержка входящих соединений в SOCKSv5, использовать скрипт, который будет получать текущий адрес и сохранять его в файл, который будет отслуживаться через команду monitor.
A: Убедитесь, что используется системный, а не пользовательский DSN. Убедитесь, что выполняется правильный SQL запрос. Наиболее распространенная проблема связана с отсутствием кавычек или неправильным форматом данных. Самый простой способ - сделать ведение журнала в файл или на стандартный вывод, просмотреть выдаваемые SQL запросы и попробовать дать такой запрос вручную.
A: Любая challenge-response аутентификация, к которым относятся APOP и CRAM-MD5, требует, чтобы со стороны сервера был передан уникальный challenge. До начала аутентификации POP3 прокси не знает, к какому серверу следует подключаться для получения Challenge, поэтому challenge-response в принципе невозможен. Защитить соединение можно с помощью TLS (например, stunnel) или IPSec.
A: Возможно, недостаточен размер стека потока по-умолчанию, это может быть при использовани каких-либо сторонних плагинов (PAM, ODBC) или на некоторых платформах (некоторые версии FreeBSD на amd64). Можно решить проблему с помощью опции 'stacksize' или '-S', поддерживаемых в 0.8.4 и выше.
A: Чтобы иметь в логах URL запросов, если пользователь SOCKS пользуется Web, FTP или POP3.
A: Перенапраление невозможно для web-серверов или FTP, висящих на нестандартных портах, для SOCKSv4 не поддрживается авторизация с паролем (IE поддерживает только SOCKSv4), но при этом IE передает имя пользователя по SOCKSv4 (имя, с которым пользователь вошел в систему). Для SOCKSv5 не поддерживается NTLM авторизация, пароли передаются в открытом тексте.
A: Достаточно в настройках IE только указать адрес SOCKS прокси. В больших сетях можно для этого использовать WPAD (автоматическое обнаружение прокси). В 3proxy достаточно запускать только одну службу (socks). Если используется только Internet Explorer, то можно автоматически получать имя пользователя в логах, не запрашивая логин/пароль.
A: Указывается parent http proxy со специальным адресом 0.0.0.0 и портом 0. Пример:
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
A: После внутреннего перенаправления правила рассматриваются еще раз за исключением самого правила с перенаправлением (т.е. обработка правил не прекращается). Это позволяет сделать дальнейшие перенаправления на внешний прокси. По этой же причине локальное перенаправление не должно быть последним правилом (т.е. должно быть еще хотя бы правило allow, чтобы разрешить внешние соединения через HTTP прокси). Например,
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-запросы по другим портам
A: Можно. Для этого надо использовать тип родительского прокси http, connect+, socks4+ и socks5+. Однако, при это надо помнить, что самому 3proxy требуется разрешение имени для управления ACL. Поэтому, если с прокси-хоста не работают разрешения имени, необходимо в конфигурации дать команду
fakeresolveкоторая разрешает любое имя в адрес 127.0.0.2.
Есть поддержка как FTP через HTTP (то, что называется FTP прокси в Internet Explorer, Netscape, Opera) так и настоящего FTP прокси (то, что называется FTP proxy в FAR и FTP клиентах).
А:
proxy -p8080
A: Читайте HowTo http://3proxy.ru/howtor.asp#BANDLIM
A: Следует учитывать, что 3proxy считает трафик только на прикладном уровне и только проходящий через прокси-сервер. Провайдеры и другие средства учета трафика считают трафик на сетевом уровне, что уже дает расхождение порядка 10% за счет информации из заголовков пакетов. Кроме того, часть трафика, как минимум DNS-разрешения, различный флудовый трафик и т.д. идут мимо прокси. Уровень "шумового" трафика в Internet сейчас составляет порядка 50KB/день на каждый реальный IP адрес, но может сильно варьироваться в зависимости от сети, наличия открытых портов, реакции на ping-запросы и текущего уровня вирусной активности. По этим причинам, если 3proxy используется чтобы не "выжрать" трафик, выделенный провайдером, всегда следует делать некий запас порядка 15%.
Если на одной с 3proxy машине имеются какие-либо сервисы или работает пользователь, то их трафик не проходит через proxy-сервер и так же не будет учтен. Если где-то есть NAT, то клиенты, выходящие через NAT мимо прокси, так же останутся неучтенными. Если расхождение с провайдером превышает 10% - нужно искать причину именно в этом.
A: Есть несколько причин. Во-первых, до выхода релиза (т.е. версии 1.0) я буду изо всех сил добиваться совместимости конфигурации между версиями. Во-вторых, конфигурация сделана так, чтобы ее можно было легко разбирать программно. В-третьих, все там понятно. При желании. Если знать как все работает.
A: Есть несколько причин. Во-первых, я не программист. Во-вторых, 3proxy изначально писался на коленке (в отет на "слабо" в одной из конференций). Никто не мог предположить, что им кто-то реально будет пользоваться. В-третьих, у многих возникает желание разобраться в коде 3proxy чтобы внедрить его в какой-нибудь троян. Очень не хочется облегчать эту задачу. В-четвертых, мне надо добиться компиляции кода в как можно большем числе систем. Замечено, что чем кривее код в C, тем он лучше переносится.
A: Есть несколько причин. Во-первых, несмотря на дурной тон использования этих функций, они наиболее совместимы между разными системами и компиляторами. Во-вторых, само по себе их использование не означает присутствие дыры, если их параметры должным образом контролируются. Найдете дыру - обязательно сообщите. В третьих, может быть я уберу их перед конечным релизом, чтобы никого не пугать.