|
|
@@ -18,25 +18,34 @@
|
|
|
</ul>
|
|
|
<li><a href="#SERVER">Конфигурация сервера</a>
|
|
|
<ul>
|
|
|
+ <li><a href="#NOTHING">Как заставить 3proxy запускаться</a></li>
|
|
|
+ <li><a href="#LIMITS">Как заставить ограничения (по ширине канала, трафику, ACL и. т.п.) работать</a></li>
|
|
|
+ <li><a href="#SERVICE">Как заставить 3proxy запускаться как службу</a></li>
|
|
|
+ <li><a href="#INTEXT">Как разобраться с internal и external</a></li>
|
|
|
+ <li><a href="#ODBC">Как починить ведение журналов в ODBC?</a></li>
|
|
|
+ <li><a href="#IPV6">Как заставить IPv6 работать</a></li>
|
|
|
+ <li><a href="#CRASH">Как сделать чтобы 3proxy не крешился</a></li>
|
|
|
<li><a href="#SAMPLE">Как посмотреть пример файла конфигурации</a>
|
|
|
<li><a href="#LOGGING">Как настроить ведение журнала</a>
|
|
|
<li><a href="#LOGFORMAT">Как настроить формат журнала</a>
|
|
|
<li><a href="#LOGANALIZERS">Как использовать лог-анализаторы с 3proxy</a>
|
|
|
<li><a href="#LAUNCH">Как запустить конкретную службу (HTTP, SOCKS и т.д)</a>
|
|
|
<li><a href="#BIND">Как повесить службу на определенный интерфейс или порт</a>
|
|
|
+ <li><a href="#NAMES">Как разрешать имена на родительском прокси?</a></li>
|
|
|
+ <li><a href="#ISFTP">Как настроить FTP прокси?</a></li>
|
|
|
<li><a href="#AUTH">Как ограничить доступ к службе</a>
|
|
|
<li><a href="#USERS">Как создать список пользователей</a>
|
|
|
<li><a href="#ACL">Как ограничить доступ пользователей к ресурсам</a>
|
|
|
<li><a href="#REDIR">Как управлять перенаправлениями</a>
|
|
|
+ <li><a href="#SOCKSREDIR">Как управлять локальными перенаправлениями</a>
|
|
|
<li><a href="#ROUNDROBIN">Как организовать балансировку между несколькими каналами</a>
|
|
|
<li><a href="#CHAIN">Как составлять цепочки прокси</a>
|
|
|
<li><a href="#BANDLIM">Как ограничивать скорости приема</a>
|
|
|
<li><a href="#TRAFLIM">Как ограничивать объем принимаемого трафика</a>
|
|
|
- <li><a href="#NETLIST">Как строить списки сетей</a>
|
|
|
+ <li><a href="#TRAF">Как пофиксить некорректный подсчет трафика</a></li>
|
|
|
<li><a href="#NSCACHING">Как управлять разрешением имен и кэшированием DNS</a>
|
|
|
<li><a href="#IPV6">Как использовать IPv6</a>
|
|
|
<li><a href="#CONNBACK">Как использовать connect back</a>
|
|
|
- <li><a href="#DEMANDDIAL">Как устанавливать соединение по требованию</a>
|
|
|
</ul>
|
|
|
<li><a href="#CLIENT">Конфигурация и настройка клиентов</a>
|
|
|
<ul>
|
|
|
@@ -172,6 +181,101 @@
|
|
|
<li><a name="SERVER"><b>Конфигурация сервера</b></a>
|
|
|
<p>
|
|
|
<ul>
|
|
|
+ <li><a name="NOTHING">Как заставить прокси работать</a></li>
|
|
|
+ <p>
|
|
|
+ Для работы требуется корректный файл конфигурации. Если прокси не запускается, значит в конфигурации есть ошибка.
|
|
|
+ </p>
|
|
|
+ <li><a name="LIMITS">Как заставить работать ограничения (контроль доступа, ограничения ширины канала, счетчики и т.п.)</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">Как починить запуск 3proxy службой</a></li>
|
|
|
+ <p>
|
|
|
+ Чаще всего 3proxy не запускается службой (но запускается вручную) по одной из следующих причин:
|
|
|
+ <ul>
|
|
|
+ <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">Как разобраться с internal и external</a></li></li>
|
|
|
+ <p>
|
|
|
+ Убедитесь, что выправильно понимаете что такое 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">Как починить ведение журналов в ODBC</a></li>
|
|
|
+ <p>
|
|
|
+ Убедитесь, что используется системный, а не
|
|
|
+ пользовательский DSN. Убедитесь, что выполняется правильный SQL запрос. Наиболее
|
|
|
+ распространенная проблема связана с отсутствием кавычек или неправильным
|
|
|
+ форматом данных. Самый простой способ - сделать ведение журнала в файл или
|
|
|
+ на стандартный вывод, просмотреть выдаваемые SQL запросы и попробовать
|
|
|
+ дать такой запрос вручную.
|
|
|
+ </p>
|
|
|
+ <li><a name="IPv6">Как починить IPv6</a></li>
|
|
|
+ <p>
|
|
|
+ Прокси не может обращаться напрямую к IPv6 сети если в запросе от клиента
|
|
|
+ указан IPv4. В запросе от клиента должен быть IPv6 адрес или имя хоста, чаще
|
|
|
+ всего это решается включением опции разрешения имен через прокси-сервер на стороне
|
|
|
+ клиента.
|
|
|
+ </p>
|
|
|
+ <li><a name="CRASH">Как починить падения 3proxy</a></li>
|
|
|
+ <p>
|
|
|
+ Возможно, недостаточен размер стека потока по-умолчанию, это может
|
|
|
+ быть при использовани каких-либо сторонних плагинов (PAM, ODBC) или на
|
|
|
+ некоторых платформах (некоторые версии FreeBSD на amd64). Можно решить
|
|
|
+ проблему с помощью опции 'stacksize' или '-S', поддерживаемых в 0.8.4 и выше.
|
|
|
+ </p>
|
|
|
<li><a name="SAMPLE"><i>Как посмотреть пример файла конфигурации</i></a>
|
|
|
<p>
|
|
|
Пример файла конфигурации 3proxy.cfg.sample поставляется с любым дистрибутивом
|
|
|
@@ -386,6 +490,24 @@
|
|
|
<pre>
|
|
|
proxy -p8080 -i192.168.1.1
|
|
|
proxy -p8080 -i192.168.2.1</pre>
|
|
|
+ <li><a name="NAMES"><i>Как разрешать имена на родительском прокси?</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>Как настроить FTP прокси?</i></a></li>
|
|
|
+ <p>
|
|
|
+ Есть поддержка как FTP через HTTP (то, что называется FTP прокси в браузерах) так и настоящего FTP прокси (то, что называется
|
|
|
+ FTP proxy в командных оболочках и FTP клиентах). В браузерах в качестве FTP прокси следует прописывать порт службы proxy,
|
|
|
+ т.е. FTP организован
|
|
|
+ через http прокси, дополнительного прокси поднимать не надо. Для FTP-клиентов необходимо поднять ftppr. FTP прокси всегда работает
|
|
|
+ с FTP сервером в пассивном режиме.
|
|
|
+ </p>
|
|
|
<li><a name="AUTH"><i>Как ограничить доступ к службе</i></a>
|
|
|
<p>
|
|
|
Во-первых, для ограничения доступа необходимо указать внутренний интерфейс,
|
|
|
@@ -614,6 +736,74 @@
|
|
|
того, чтобы видеть в логах записи о посещаемых пользвоателем ресурсах и
|
|
|
загружаемых файлах даже в том случае, если он подключается через SOCKS.
|
|
|
</p>
|
|
|
+<li><a name="SOCKSREDIR">Как управлять локальными перенаправлениями</a>
|
|
|
+<p>
|
|
|
+<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>
|
|
|
<li><a name="ROUNDROBIN"><i>Как организовать балансировку между несоклькими каналами</i></a>
|
|
|
<p>
|
|
|
Сам по себе прокси не может управлять маршрутизацией пакетов сетевого уровня.
|
|
|
@@ -742,33 +932,26 @@
|
|
|
<br>
|
|
|
amount - объем трафика на указанный период в мегабайтах.
|
|
|
</p>
|
|
|
- <li><a name="NETLIST"><i>Как строить списки сетей</i></a>
|
|
|
+ <li><a name="TRAF">Как пофиксить некорректный подсчет трафика</a>
|
|
|
<p>
|
|
|
- Очень часто списки сетей и пользователей бывают достаточно громоздкими.
|
|
|
- 3proxy не поддерживает создание групп, но позволяет включение файлов. Это
|
|
|
- означает, что для удобства администрирования выгодно хранить списки
|
|
|
- пользователей и списки сетей в отдельных файлах и при необходимости дать
|
|
|
- пользователю доступ к тому или иному ресурсу, править файл со списком
|
|
|
- пользователей или сетей вместо того, чтобы править сам файл 3proxy.cfg. В файле
|
|
|
- 3proxy.cfg файл со списком можно включить с помощью макроса $.
|
|
|
- Поскольку в 3proxy есть ограничения на максимальный размер элемента
|
|
|
- конфигурации, большие списки следует разбивать на несколько файлов и
|
|
|
- использовать несколько записей списка контроля доступом.
|
|
|
- В комплекте с 3proxy поставляется утилита dighosts, которая позволяет построить
|
|
|
- список сетей по странице Web. Утилита осуществляет поиск адресов на Web-странице
|
|
|
- в формате АДРЕС МАСКА или АДРЕС/ДЛИНА. Утилиту dighosts можно вызвать во время
|
|
|
- старта 3proxy, используя команду system. Например:
|
|
|
- <pre>
|
|
|
- system "dighosts http://provider/network.html local.networks"
|
|
|
- allow * * $local.networks
|
|
|
- allow *
|
|
|
- parent 1000 proxy.provider 3128 *
|
|
|
- proxy
|
|
|
- flush</pre>
|
|
|
- В данном случае в файле local.networks генерируется список локальных сетей по
|
|
|
- странице networklist.html. Далее используется список контроля доступа для того,
|
|
|
- чтобы разрешить локальному прокси-серверу доступ к локальным сетям напрямую,
|
|
|
- а все остальные запросы перенаправить на прокси-сервер провайдера.
|
|
|
+ Следует учитывать, что 3proxy считает трафик только на прикладном уровне и
|
|
|
+ только проходящий через прокси-сервер. Провайдеры и другие средства учета
|
|
|
+ трафика считают трафик на сетевом уровне, что уже дает расхождение порядка 10%
|
|
|
+ за счет информации из заголовков пакетов. Кроме того, часть трафика, как
|
|
|
+ минимум DNS-разрешения, различный флудовый трафик и т.д. идут мимо прокси.
|
|
|
+ Уровень "шумового" трафика в Internet сейчас составляет порядка 50KB/день на
|
|
|
+ каждый реальный IP адрес, но может сильно варьироваться в зависимости от сети,
|
|
|
+ наличия открытых портов, реакции на ping-запросы и текущего уровня вирусной
|
|
|
+ активности. По этим причинам, если 3proxy используется чтобы не "выжрать"
|
|
|
+ трафик, выделенный провайдером, всегда следует делать некий запас порядка
|
|
|
+ 15%.
|
|
|
+ </p>
|
|
|
+ <p>
|
|
|
+ Если на одной с 3proxy машине имеются какие-либо сервисы или
|
|
|
+ работает пользователь, то их трафик не проходит через proxy-сервер и так же
|
|
|
+ не будет учтен. Если где-то есть NAT, то клиенты, выходящие через NAT мимо
|
|
|
+ прокси, так же останутся неучтенными. Если расхождение с провайдером превышает
|
|
|
+ 10% - нужно искать причину именно в этом.
|
|
|
</p>
|
|
|
<li><a name="NSCACHING"><i>Как управлять разрешением имен и кэшированием DNS</i></a>
|
|
|
<p>
|
|
|
@@ -827,19 +1010,6 @@
|
|
|
tcppm -R0.0.0.0:1234 3128 1.1.1.1 3128</pre>
|
|
|
В настройках браузера указывается host.dyndns.example.org:3128.
|
|
|
</p>
|
|
|
- <li><a name="DEMANDDIAL"><i>Как устанавливать соединение по требованию</i></a>
|
|
|
- <p>
|
|
|
- Команда dialer задает программу, которая будет запускаться при
|
|
|
- невозможности разрешить имя компьютера, например:
|
|
|
- <pre>
|
|
|
- dialer "rasdial PROVIDER"</pre>
|
|
|
- (описание rasdial можно найти на сервере поддержки Microsoft).
|
|
|
- Есть два аспекта: невозможность разрешения имени еще не свидетельствует
|
|
|
- об отсутствии соединения (это должна учитывать вызываемая программа),
|
|
|
- при использовании nscache имя может разрешиться при отсутствии
|
|
|
- соединения. В таких случаях полезно запрашивать заведомо несуществующий
|
|
|
- ресурс, например, http://dial.right.now/.
|
|
|
- </p>
|
|
|
</ul>
|
|
|
<hr>
|
|
|
<li><a name="CLIENT"><b>Конфигурация клиентов</b></a>
|