×
Few antiviral products inadequately detect 3proxy as Trojan.Daemonize,
Backdoor.Daemonize, etc and many detect 3proxy as a PUA (potentially unwanted program).
It may cause browser warning on download page.
3proxy is not trojan or backdoor and contains
no functionality except described in documentation. Clear explanation of this
fact is given, for example, in
Microsoft’s
article.
3APA3A 3proxy tiny proxy server HowTo
В стадии разработки
- Компиляция
- Как скомпилировать 3proxy Visual C++
- Как скомпилировать 3proxy Intel C Compiler под Windows
- Как скомпилировать 3proxy GCC под Windows
- Как скомпилировать 3proxy GCC под Unix/Linux
- Как скомпилировать 3proxy Compaq C Compiler под Unix/Linux
- Установка и удаление 3proxy
- Как установить/удалить 3proxy под Windows 95/98/ME/NT/2000/XP как службу
- Как установить/удалить 3proxy под Windows 95/98/ME
- Как установить/удалить 3proxy под Unix/Linux
- Конфигурация сервера
- Как заставить 3proxy запускаться
- Как заставить ограничения (по ширине канала, трафику, ACL и. т.п.) работать
- Как заставить 3proxy запускаться как службу
- Как разобраться с internal и external
- Как починить ведение журналов в ODBC?
- Как заставить IPv6 работать
- Как сделать чтобы 3proxy не крешился
- Как посмотреть пример файла конфигурации
- Как настроить ведение журнала
- Как настроить формат журнала
- Как использовать лог-анализаторы с 3proxy
- Как запустить конкретную службу (HTTP, SOCKS и т.д)
- Как повесить службу на определенный интерфейс или порт
- Как разрешать имена на родительском прокси?
- Как настроить FTP прокси?
- Как настроить SNI proxy (tlspr)
- Как ограничить доступ к службе
- Как создать список пользователей
- Как ограничить доступ пользователей к ресурсам
- Как управлять перенаправлениями
- Как управлять локальными перенаправлениями
- Как организовать балансировку между несколькими каналами
- Как составлять цепочки прокси
- Как ограничивать скорости приема
- Как ограничивать объем принимаемого трафика
- Как пофиксить некорректный подсчет трафика
- Как управлять разрешением имен и кэшированием DNS
- Как использовать IPv6
- Как использовать connect back
- Конфигурация и настройка клиентов
- Как использовать 3proxy с Internet Explorer или другим браузером
- Как настраивать FTP клиент
- Как использовать SMTP через 3proxy
- Как использовать службу POP3 Proxy
- Как использовать 3proxy с программой, не поддерживающей работу с прокси-сервером
- Как использовать 3proxy с играми
- Администрирование и анализ информации
- Где взять свежую версию
- Как управлять службой 3proxy в Windows NT/2000/XP
- Коды ошибок в журнале
- Как задать вопрос, которого нет в HowTo
- Как скомпилировать 3proxy Visual C++
Извлеките файлы из архива 3proxy.tgz (например, с помощью WinZip).
Используйте команду nmake /f Makefile.msvc. - Как скомпилировать 3proxy Intel C Compiler под Windows
См. Как скомпилировать 3proxy Visual C++.
Используйте Makefile.intl вместо Makefile.msvc - Как скомпилировать 3proxy GCC под Windows
- Как скомпилировать 3proxy GCC под Unix/Linux
- Как скомпилировать 3proxy Compaq C Compiler под Unix/Linux
Извлеките файлы из архива 3proxy.tgz (например, с помощью WinZip или, при наличии
Cygwin, tar -xzf 3proxy.tgz).
Используйте команду make -f Makefile.win. Если по каким-то причинам вы хотите использовать
библиотеку POSIX-эмуляции CygWin — используйте make -f Makefile.unix.
При использовании CygWin, функции, специфичные для Windows (такие, как запуск в
качестве службы) будут недоступны.
Используйте make -f Makefile.unix. Должен использоваться GNU make, на
некоторых системах необходимо использовать gmake вместо make. Под Linux
необходимо использовать Makefile.Linux, под Solaris — Makefile.Solaris-* (в
зависимости от используемого компилятора). Компиляция проверена в FreeBSD/i386,
OpenBSD/i386, NetBSD/i386, RH Linux/Alpha, Debian/i386, Gentoo/i386, Gentoo/PPC,
Solaris 10, но должно собираться в любых версиях *BSD/Linux/Solaris.
В других системах может потребоваться модификация make-файла и/или исходных текстов.
Для компиляции с поддержкой ODBC необходимо убрать -DNOODBC из флагов
компиляции и добавить -lodbc (или другую ODBC-библиотеку) к флагам линковщика.
Используйте make -f Makefile.ccc. Компиляция проверена в RH Linux 7.1/Alpha.
В других системах может потребоваться модификация файла и/или исходных текстов.
- Как установить/удалить 3proxy под Windows 95/98/ME/NT/2000/XP/2003 как службу
Извлеките файлы из архива 3proxy.zip в любой каталог
(например, c:\Program Files\3proxy). Если необходимо, создайте каталог для
хранения файлов журналов. Создайте файл конфигурации 3proxy.cfg в
каталоге 3proxy (см. раздел Конфигурация сервера).
Если используется версия более ранняя, чем 0.6, добавьте строкуservice
в файл 3proxy.cfg. Откройте командную строку (cmd.exe).
Перейдите в каталог с 3proxy и дайте команду 3proxy.exe —install:D:\>C: C:\>cd C:\Program Files\3proxy C:\Program Files\3proxy>3proxy.exe --install
Сервис должен быть установлен и запущен. Если сервис не запускается,
проверьте содержимое файла журнала,
попробуйте удалить строку service из 3proxy.cfg, запустить 3proxy.exe вручную
и проанализировать сообщения об ошибках.Для удаления 3proxy необходимо остановить сервис и дать
команду 3proxy.exe —remove:D:\>C: C:\>cd C:\Program Files\3proxy C:\Program Files\3proxy>net stop 3proxy C:\Program Files\3proxy>3proxy.exe --remove
после чего каталог 3proxy можно удалить.
Установка в качестве системной службы под Windows 9x поддерживается с версии 0.5
- Как установить/удалить 3proxy под Windows 95/98/ME
Извлеките файлы из архива 3proxy.zip в любой каталог
(например, c:\Program Files\3proxy). Если необходимо, создайте каталог для
хранения файлов журналов. Создайте файл конфигурации 3proxy.cfg в
каталоге 3proxy (См. раздел Конфигурация сервера).
В файле конфигурации удалите строкуservice
и добавьте строку
daemon
Создайте ярлык для 3proxy.exe и поместите его в автозагрузку либо с помощью
редактора реестра regedit.exe добавьте в разделе
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
строковый параметр
3proxy = «c:\Program Files\3proxy.exe» «C:\Program Files\3proxy.cfg»
Использование кавычек при наличии в пути пробела обязательно.
Перезагрузитесь.
Если сервер не запускается,
проверьте содержимое файла журнала,
попробуйте удалить строку daemon из 3proxy.cfg, запустить 3proxy.exe вручную
и проанализировать сообщения об ошибках. - Как установить/удалить 3proxy под Unix/Linux
Скомпилируйте 3proxy (см. раздел Компиляция). Скопируйте
исполняемые файлы в подходящий каталог (например, /usr/local/3proxy/sbin для
серверных приложений или /usr/local/3proxy/bin для клиентских утилит).
Создайте файл /usr/local/etc/3proxy.cfg.
(См. раздел Конфигурация сервера).
Изменить расположение файла конфигурации можно, задав параметр при вызове
3proxy или изменив путь в файле 3proxy.c до компиляции.
Добавьте вызов 3proxy в скрипты начальной инициализации.
- Как заставить прокси работать
- Как заставить работать ограничения (контроль доступа, ограничения ширины канала, счетчики и т.п.)
- Как починить запуск 3proxy службой
- Использование относительных (неполных) путей файлов в файле конфигурации
При использовании файлов журналов, файлов вставок ($filename) используйте
полные пути, например, $»c:\3proxy\include files\networks.local». Тоже самое
относится к файлам журналов и любым другим.
Для отладки лучше запускать 3proxy с ведением журнала на стандартный вывод.
Не забудьте в таком случае отключить daemon и service в файле конфигурации.
Для чистоты эксперимента запускать 3proxy из коммандной строки в таком случае
следует, находясь в другой папке. - Отсутствие у системной записи прав на доступ к исполняемому файлу, каким-либо файлам конфигурации, журнала и т.п.
- Отсутствие файла конфигурации по стандартному расположению —
3proxy.cfg в одном каталоге с исполняемым файлом. Если файл расположен по
другому пути, необходимо использовать команду3proxy --install path_to_configuration_file
- Отсутствие у пользователя прав на установку или запуск службы
- Служба уже установлена или запущена
- Как разобраться с internal и external
Для работы требуется корректный файл конфигурации. Если прокси не запускается, значит в конфигурации есть ошибка.
A: Обычные ошибки — использование auth none (для работы любых
функций, основанных на ACL, требуется auth iponly, nbname или strong),
нарушение порядка ввода команд (команды выполняются последовательно,
запуск сервиса proxy, socks, tcppm и т.д. должен осуществляться после
того, как указана его конфигурация), неправильный порядок записей в ACL
(записи просматриваются последовательно до первой, удовлетворяющей
критериям). Если в ACL имеется хотя бы одна запись, то считается, что
последняя запись в ACL — это неявная deny *.
Чаще всего 3proxy не запускается службой (но запускается вручную) по одной из следующих причин:
Убедитесь, что выправильно понимаете что такое internal и external адреса.
Оба адреса — это адреса, принадлежищие хосту, на котором установлен 3proxy.
Эта опция конфигурации необходима в классической ситуации, когда 3proxy
установлен на граничном компьютере с двумя (или более) подключениями:
LAN connection +-------------+ Internet connection LAN <-------------->| 3proxy host |<-------------------> INTERNET ^+-------------+^ | | Internal IP External IP
Если 3proxy работает на хосте с одним интерфейсом, то его адрес будет и
internal и external.
Интерфейс с адресом internal должен существовать и быть рабочим на момент
запуска 3proxy, и не должен отключаться. Если internal интерфейс
периодически отключается, то не следует его указывать, или можно указать адрес
0.0.0.0. При этом прокси будет принимать запросы на всех интерфейсах, поэтому
при наличии нескольких интерфейсов для ограничения доступа следует использовать
фаервол или хотя бы ACL.
Интерфейс с адресом external, если он указан, должен быть рабочим на момент
получения запроса клиента. При отсутствии external или адресе 0.0.0.0 внешний
адрес будет выбираться системой при установке соединения. При этом, может быть
возможность доступа через прокси к ресурсам локальной сети, поэтому для
предотвращения несанкционированного доступа следует использовать ACL. Кроме
того, могут быть проблемы с приемом входящих соединений через SOCKSv5
(SOCKSv5 используется в клиентах исключительно редко).
В случае, если адрес динамический, можно либо не
указывать external, либо использовать адрес 0.0.0.0, либо, если необходима
поддержка входящих соединений в SOCKSv5, использовать скрипт,
который будет получать текущий адрес и сохранять его в файл, который будет
отслуживаться через команду monitor.
Убедитесь, что используется системный, а не
пользовательский DSN. Убедитесь, что выполняется правильный SQL запрос. Наиболее
распространенная проблема связана с отсутствием кавычек или неправильным
форматом данных. Самый простой способ — сделать ведение журнала в файл или
на стандартный вывод, просмотреть выдаваемые SQL запросы и попробовать
дать такой запрос вручную.
Прокси не может обращаться напрямую к IPv6 сети если в запросе от клиента
указан IPv4. В запросе от клиента должен быть IPv6 адрес или имя хоста, чаще
всего это решается включением опции разрешения имен через прокси-сервер на стороне
клиента.
Возможно, недостаточен размер стека потока по-умолчанию, это может
быть при использовани каких-либо сторонних плагинов (PAM, ODBC) или на
некоторых платформах (некоторые версии FreeBSD на amd64). Можно решить
проблему с помощью опции ‘stacksize’ или ‘-S’, поддерживаемых в 0.8.4 и выше.
Пример файла конфигурации 3proxy.cfg.sample поставляется с любым дистрибутивом
программы.
3proxy поддерживает ведение журнала на экран (stdout), в файл, через ODBC и через службу
syslog (только для Unix/Linux/CygWin). Можно управлять либо общим файлом
журнала, задаваемым в файле конфигурации 3proxy.cfg и единым для всех служб,
либо индивидуальными файлами для отдельных служб (например, команда
socks -l/var/log/socks.log запускает SOCKS прокси
и задает для него индивидуальный журнал). Для общего файла журнала
поддерживается ротация (т.е. периодическое создание новых файлов журнала
с предопределенными именами и удаление файлов старше определенного срока)
и архивация файлов журнала.
Тип журнала определяется параметром log в файле конфигурации либо ключом
-l при вызове конкретной службы (например, socks прокси). log или -l без
параметров соответствуют ведению журнала на экран (stdout).
log filename
и
-lfilename
соответствуют записи журнала в файл filename. Если при указании имени файла
в log в нем содержится символ %, то имя рассматривается как форматный
спецификатор (см. logformat). Например,
log c:\3proxy\logs\%y%m%d.log D создаст файл типа c:\3proxy\logs\060725.log,
для образования даты будет использовано местное время.
log @ident
и
-l@ident
соответствуют ведению журнала через syslog с идентификатором ident.
log &connstring
соответствует ведению журнала через ODBC, connstring задается в формате
datasource,username,password (последние два параметра опциональны, если
datasource не требует или уже содержит сведения для авторизации). При этом
команда logformat должна задавать SQL запрос, который необходимо выполнить
для добавления записи в журнал, см Как настроить формат журнала.
Управление ротацией общего файла журнала происходит с помощью команд файла
конфигурации log, rotate и archiver.
log filename LOGTYPE
задает тип ротации. LOGTYPE может принимать значения:
- M, ежемесячная ротация
- W, еженедельная ротация
- D, ежедневная ротация
- H, ежечасная ротация
- C, ежеминутная ротация
rotate NUMBER
указывает на число файлов, участвующих в ротации (т.е. сколько последних
журналов хранить).
archiver EXT COMMAND PARAMETERS
задает параметры архивации журнала. EXT указывает на расширение
архива (например, zip, gz, Z, rar и т.д.) COMMAND указывает на
программу и PARAMETERS — на параметры командной строки. Архиватор
должен сам удалять исходный файл, также ему можно передать имя файла
с помощью макроса %F и ожидаемое имя архива с помощью макроса %A.
В качестве архиватора вполне можно задать пакетный файл, который,
например, будет загружать данные из журнала в базу данных.
Примеры команды archiver для популярных архиваторов можно найти в
3proxy.cfg.sample
logdump OFFSET_BYTES_FROM_SERVER OFFSET_BYTES_FROM_CLIENT
Задает смещение в байтах на входящий и исходящий трафик, при достижении
которого необходимо создавать запись в журнале даже в том случае, если
соединение еще не завершено. Если logdump не указан или значения
OFFSET_BYTES_FROM_SERVER OFFSET_BYTES_FROM_CLIENT нулевые — в журнале
будет создана единственная запись по окончании обработки запроса клиента
(при разрыве соединения). Пример:
logdump 1048576 1048576
создает в журнале запись на каждый мегабайт входящего или исходящего
трафика.
Начиная с версии 0.3, формат журнала может быть настроен с помощью
команды logformat со строкой формата. Первый символ строки должен
быть L или G, что указывает на формат, в котором будет указываться
время и даты, L — текущее локальное время, G — абсолютное время по
Гринвичу. Строка формата может содержать следующие модификаторы:
- %y — Год (последние две цифры)
- %Y — Год (четырехзначный)
- %m — Номер месяца (01-12)
- %o — Трехбуквенная аббревиатура месяца
- %d — День (01-31)
- %H — Час (00-23)
- %M — Минута (00-59)
- %S — Секунда (00-59)
- %t — Временная метка (число секунд с 00:00:00 1 января 1970 г. по Гринвичу)
- %. — Миллисекунды
- %z — Временная зона в почтовом формате (от Гринвича, ‘+’ восток, ‘-‘ запад ЧЧММ), например, Московское зимнее время +0300.
- %U — Имя пользователя (‘-‘, если отсутствует).
- %N — Название прокси сервиса (PROXY, SOCKS, POP3P, и т.д.)
- %p — Порт прокси сервиса
- %E — Код ошибки (см. Коды ошибок в журнале)
- %C — IP клиента
- %c — Порт клиента
- %R — IP сервера (исходящего соединения по запросу клиента)
- %r — Порт сервера (исходящего соединения по запросу клиента)
- %Q – IP, запрошенный клиентом
- %q – Порт, запрошенный клиентом
- %I — Принято байт от сервера
- %O — Отправлено байт на сервер
- %n — Имя хоста из запроса
- %h — Число звеньев до конечного сервера (при использовании перенаправлений или чейнинга
см. Как составлять цепочки прокси) - %T – Текст, специфичный для прокси сервиса (например, запрошенный URL).
Можно использовать %X-YT, где X и Y положительные числа, тогда
отображаются только поля с X по Y текста. Поля считаются разделенными
пробельным символом.
Пример:
logformat "L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
будет генерировать в журнале записи типа
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
(без переноса строк)
При использовании ODBC, logformat должен задавать формат SQL команды,
которую необходимо дать для внесения записи в журнал, например:
logformat "-\'+_GINSERT INTO proxystat VALUES (%t, '%c', '%U', %I)"
префикс -\’+_ указывает, что символы \ и ‘ следует заменить на _ .
Просто сделайте формат ведения журнала совместимым с одним из форматов,
поддерживаемых анализатором. Это позволяет использовать практически любые
анализаторы. Примеры совместимых форматов:
Формат Squid access.log:
"- +_G%t.%. %D %C TCP_MISS/200 %I %1-1T %2-2T %U DIRECT/%R application/unknown"
Более совместимый формат, но без %D
"- +_G%t.%. 1 %C TCP_MISS/200 %I %1-1T %2-2T %U DIRECT/%R application/unknown"
Формат ISA 2000 proxy WEBEXTD.LOG (поля разделены табуляцией):
"- + L%C %U Unknown Y %Y-%m-%d %H:%M:%S w3proxy 3PROXY - %n %R %r %D %O %I http TCP %1-1T %2-2T - - %E - - -"
Формат ISA 2004 proxy WEB.w3c (поля разделены табуляцией):
"- + L%C %U Unknown %Y-%m-%d %H:%M:%S 3PROXY - %n %R %r %D %O %I http %1-1T %2-2T - %E - - Internal External 0x0 Allowed"
Формат ISA 2000/2004 firewall FWSEXTD.log (поля разделены табуляцией):
"- + L%C %U unnknown:0:0.0 N %Y-%m-%d %H:%M:%S fwsrv 3PROXY - %n %R %r %D %O %I %r TCP Connect - - - %E - - - - -"
Стандартный лог HTTPD (Apache и другие):
"-""+_L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I"
Более совместимый, но без кода ошибки:
"-""+_L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" 200 %I"
3proxy поставляется в двух вариантах: как набор отдельных модулей (proxy,
socks, pop3p, tcppm, udppm) и как универсальный прокси-сервер (3proxy).
Универсальный прокси сервер — это законченная программа, которой не требуются
отдельные модули.
Отдельный модуль управляется только из командной строки. Поэтому для
отдельного модуля не поддерживаются многие функции, такие как управление
доступом и ротация журнала. Запуск модуля осуществляется из командной строки.
Например,
$/sbin/socks -l/var/log/socks.log -i127.0.0.1
запускает SOCKS на порту 127.0.0.1:1080 с ведением журнала /var/log/socks.log
Справку по опциям командной строки можно получить запустив модуль с ключом -?.
Если используется 3proxy, то запускаемые службы указываются в файле 3proxy.cfg.
Файл 3proxy.cfg просматривается 3proxy построчно, каждая строка рассматривается
как управляющая команда. Синтаксис команд описан в 3proxy.cfg.sample. Например,
log /var/log/3proxy.log D rotate 30 internal 127.0.0.1 external 192.168.1.1 proxy socks pop3p -l/var/log/pop3proxy
запускает 3 службы — PROXY, SOCKS и POP3 Proxy. Каждая слушает на интерфейсе
127.0.0.1 порт по-умолчанию (3128 для proxy, 1080 для socks и 110 для
pop3p). Журналы всех служб кроме pop3p ведутся в файле /var/log/3proxy.log,
который ежедневно меняется. Хранятся 30 последних файлов. Для pop3p ведется
отдельный журнал /var/log/pop3proxy (см. Как настроить ведение журнала).
Опция -i позволяет указать внутренний интерфейс, -p — порт (пробелы в
опциях не допускаются). Например, чтобы служба proxy висела на порту
8080 интерфейсов 192.168.1.1 и 192.168.2.1 необходимо дать команды
proxy -p8080 -i192.168.1.1 proxy -p8080 -i192.168.2.1
A: Для этого надо использовать тип родительского прокси http,
connect+, socks4+ и socks5+. Однако, при это надо помнить, что самому 3proxy
требуется разрешение имени для управления ACL. Поэтому, если с прокси-хоста
не работают разрешения имени, необходимо в конфигурации дать команду
fakeresolve
которая разрешает любое имя в адрес 127.0.0.2.
Есть поддержка как FTP через HTTP (то, что называется FTP прокси в браузерах) так и настоящего FTP прокси (то, что называется
FTP proxy в командных оболочках и FTP клиентах). В браузерах в качестве FTP прокси следует прописывать порт службы proxy,
т.е. FTP организован
через http прокси, дополнительного прокси поднимать не надо. Для FTP-клиентов необходимо поднять ftppr. FTP прокси всегда работает
с FTP сервером в пассивном режиме.
SNI proxy может быть использовать для транспарентного перенаправления любого TLS трафика (например HTTPS) на внешнем маршрутизаторе
или локальными правилами. Так же можно использовать его для извлечения имени хоста из TLS хендшейка с целью логгирования или использования в ACL.
Еще одна задача которую может решать модуль — требование наличия TLS или mTLS (mutual TLS).
Если tlspr используется как отдельный сервис без исползования плагина Transparent, то необходимо задать порт назначения через опцию -T (по умолчанию 443),
т.к. TLS хендшейк не содержит информации о порте назначения.
-c контролирует уровень требования к TLS:
0 (по умолчанию) - пропустить трафик без TLS 1 - требовать TLS, проверять наличие client HELLO 2 - требовать TLS, проверять наличие client и server HELLO 3 - требовать TLS, проверять наличие серверного сертификата (не совместим с TLS 1.3+) 4 - требовать взаимный (mutual) TLS, проверять что сервер запрашивает сертификат и клиент его отправляет (не совместим с TLS 1.3+)
примеры конфигурации:
1. Порт 1443 можно использовать для перенаправления в него HTTPS трафика по порту 443 (например с внешнего маршрутизатора)
tlspr -p1443 -P443 -c1
2. tlspr используется как родительский прокси в SOCKS чтобы обнаруживать реальный hostname назначения (даже если запрашивается подклюение по IP адресу)
allow * * * 80 parent 1000 http 0.0.0.0 0 allow * * * * CONNECT parent 1000 tls 0.0.0.0 0 deny * * some.not.allowed.host allow * socks
Во-первых, для ограничения доступа необходимо указать внутренний интерфейс,
на котором прокси-сервер будет принимать соединения. Внутренний интерфейс
указывается с помощью команды internal в файле конфигурации или с помощью
ключа -i конкретного модуля.
(см. Как запустить конкретную службу (HTTP, SOCKS и т.д)).
Отсутствие указания внутреннего интерфейса может привести к тому, что ваш
прокси будет открытым.
Указание внешнего интерфейса (т.е. IP, с которого сервер будет устанавливать
внешние соединения) так же является полезным. Для этого служит команда external
и ключ -e соответственно.
Для универсального прокси возможна дополнительная авторизация доступа с помощью
имени/пароля, NetBIOS имени пользователя и по спискам доступа (по IP клиента,
IP и порту назначения, см. Как ограничить доступ пользователей к ресурсам).
Тип авторизации устанавливается командой auth в файле конфигурации.
auth none
Отсутствие какой-либо авторизации. Списки доступа не проверяются.
auth iponly
Будет идти проверка по списку доступа с использованием IP клиента, IP и номера
порта назначения.
auth nbname
Перед проверкой по списком доступа будет произведена попытка получить NetBIOS
имя клиента. Для этого используется NetBIOS код службы messager (0x03). Если
имя определить не удалось (служба messager для Windows NT/2000/XP или WinPopUP
для 95/98/ME не запущена), то имя будет считаться пустым. Далее следует
проверка по спискам доступа. Данный тип авторизации не зависит от платформы
сервера (т.е. прокси сервер, запущенный под Unix, сможет определять NetBIOS
имена). Его рекомендуется использовать в однородных сетях, где у всех клиентов
установлена Windows NT/2000/XP и пользователи не имеют доступа к
привелегированным учетным записям. Этот вид авторизации не является надежным.
auth strong
Проверяется имя и пароль, переданные пользователем при подключении к прокси.
Данный вид авторизации работает только с proxy и socks. Необходимо задание
списка пользователей (см Как создать список пользователей).
Соединения от неизвестных пользователей не принимаются. После проверки имени
пользвоателя и пароля происходит проверка списков доступа.
Для разных служб можно установить различные типы авторизации, например,
auth none pop3p auth iponly proxy auth strong socks
не накладывает ограничений на использование POP3 Proxy, производит проверку
по спискам доступа для пользователей HTTP Proxy и требует авторизации с именем
и паролем для SOCKS.
С версии 0.6 возможно использвоать двойную авторизацию, например,
auth iponly strong allow * * 192.168.0.0/16 allow user1,user2 proxy
будет использовать авторизацию только в том случае, если не удалось пропустить
пользователя с авторизаций iponly, т.е. для доступа к ресурсам 192.168.0.0/16
авторизация не требуется.
С версии 0.6 так же можно использвоать кэширование авторизации (имени
пользователя) с целью повышения производительности. Использовать кэширование
для strong практически не имеет смысла, она полезно для nbname и авторизации
через внешние плагины, типа WindowsAuthentication. Кэширование настраивается
командой authcache с двумя параметрами — типом кэширования и временем, на
которое кэшируется пароль. Возможные типы: ip — после успешной авторизации в
течение времени кэширования все запросы пришедшие с того же адреса считаются
запросами от того же пользователя, name — после успешной авторизации от
пользователя с тем же именем требуют указания имени, но реально аутентификации
не производится, ip,name — запрос должен придти от того же IP и с тем же
именем. user,password — имя и пароль пользователя сверяются с кэшированными.
Возможны и другие сочетания. Для авторизации должен использоваться специальный
метод авторизации — cache. Пример:
authcache ip 60 auth cache strong windows proxy -n
Кэширование влияет на безопасность доступа. Ни в коем случае не следует
использовать кэширование для доступа к критичным ресурсам, в частности к
интерфейсу администрирования.
authcache так же может использоваться для привязки сессий пользователя к ip с
с помощью опции limit
autchcache ip,user,pass,limit 120 auth cache strong
запретит пользователю использовать более одного адреса в течении времени кеширования.
Список пользователей задается с помощью команды users.
users USERDESC ...
С помощью одной команды можно задать несколько пользователей, можно
давать несколько команд users. USERDESC — описание пользователя. Описание
пользователя состоит из трех полей разделенных : (двоеточием) — имени (login)
типа пароля и пароля. Например:
users admin:CL:bigsecret test:CL:password test1:CL:password1 users "test2:CR:$1$lFDGlder$pLRb4cU2D7GAT58YQvY49." users test3:NT:BD7DFBF29A93F93C63CB84790DA00E63
Обратите внимание на двойные кавычки — они необходимы для второго пользователя,
т.к. в его пароле встречается знак $, который для файла 3proxy.cfg означает
включение другого файла. Поддеживается следующие типы паролей:
- тип не указан — использовать системную авторизацию для
данного пользователя (пока не реализовано). - CL — пароль в открытом тексте
- CR — пароль в формате crypt() (только MD5)
- NT — пароль в формате NT в шестнадцатеричной кодировке
NT и crypt пароли могут быть использованы для импорта учетных записей из
Windows/Samba и Unix соответственно (для Windows можно использовать утилиты
семейства pwdump).
Учетные записи удобно хранить в отдельном файле (в таком случае можно хранить
их построчно в формате, типичном для файлов паролей). Включить файл можно с
помощью макроса $:
users $/etc/.3proxypasswd
или
users $"c:\Program Files\3proxy\passwords"
Шифрованные NT и crypt пароли можно создавать с помощью утилиты mycrypt.
Список пользователей един для всех служб. Разграничение доступа по службам
необходимо производить с помощью списков доступа.
Для построения списков доступа используются команды allow, deny и
flush. Команды имеют следующую структуру:
allow <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist> deny <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist> flush
Команда flush используется для сброса существующего списка доступа (это
необходимо для того, чтобы можно было задать различные списки доступа для
различных служб). allow служит для разрешения соединения, deny — для запрета
соединения. Команда parent используется в качестве расширения команды
allow для управления перенаправлениями соединений (о перенаправлении см. Как управлять перенаправлениями).
В момент установки исходящего соединения просматривается список доступа и
находится первая запись, соответствующая запрошенному клиентом соединению.
Если запись соттветствует allow — соединение разрешается, deny — запрещается.
Если список пуст, то соединение разрешается. Если список не пуст, но подходящей
записи нет, то соединение запрещается. При этом:
- <userlist> — список логинов пользователей через запятую
- <sourcelist> — список сетей клиентов через запятую. Сеть
задается в формате xxx.yyy.zzz.mmm/l, где l — длина маски
сети (количество ненулевых байт). Например, 192.168.1.0/24
соответствует сети с маской 255.255.255.0. - <targetlist> — список сетей назначения через запятую
- <targetportlist> — список портов назначения через запятую.
можно задать диапазон портов через -, например, 80,1024-65535 - <commandlist> — список команд, через запятую, для которых применяется правило:
CONNECT — установить исходящее TCP соединение (например, SOCKSv4/5, POP3 proxy, и т.д.)
BIND — разрешить входящее TCP соединение (SOCKSv5)
UDPASSOC — создать UDP-ассоциацию (SOCKSv5)
ICMPASSOC — создать ICMP-ассоциацию (не реализовано)
HTTP_GET — HTTP GET запрос (HTTP proxy)
HTTP_PUT — HTTP PUT запрос (HTTP proxy)
HTTP_POST — HTTP POST запрос (HTTP proxy)
HTTP_HEAD — HTTP HEAD запрос (HTTP proxy)
HTTP_CONNECT — HTTP CONNECT запрос (HTTP proxy)
HTTP_OTHER — другой HTTP запрос (HTTP proxy)
HTTP — соответствует любому HTTP запросу кроме HTTP_CONNECT (HTTP proxy)
HTTPS — тоже, что HTTP_CONNECT (HTTP proxy)
FTP_GET — FTP get запрос
FTP_PUT — FTP put запрос
FTP_LIST — FTP list запрос
FTP — соответствует любому FTP запросу
ADMIN — доступ к интерфейсу администрирования - <weekdays> задает список дней недели, 1 соответствует
понедельнику, 0 или 7 — воскресенье. 1-5 означает с понедельника
по пятницу (включительно). 1,3,5 задает нечетные дни недели. - <timeperiodslist> список интервалов дня в формате
ЧЧ:ММ:СС-ЧЧ:ММ:СС, например, 00:00:00-08:00:00,17:00:00-24:00:00
задает нерабочее время.
Примеры использования листов доступа можно найти в файле 3proxy.cfg.sample.
Перенаправления имеет смысл использовать, например, чтобы перенаправить
обращения определенных клиентов или на определнные сервера на другой сервер
(например, при попытке доступа на Web сервер с недозволенным материалом
перенаправить на собственный Web сервер, или для того, чтобы в зависимости
от IP клиента перенаправлять его соединения на разные сервера (особенно при
отображении портов через tcppm). Кроме того, перенаправление может быть
использовано, например, для перенаправления все исходящих HTTP запросов,
посланных через SOCKS, на HTTP прокси. Поскольку формат запроса к Web серверу
и Proxy различается, не любой Proxy сервер способен корректно обработать
перенаправленный запрос (HTTP proxy в комплекте 3proxy нормально обрабатывает
перенаправленные запросы, что делает возможным его использования в качестве
«прозрачного» прокси. Кроме того, HTTP прокси обнаруживает перенаправления
на родительский прокси и генерирует нормальные заголовки. Пример простейшего
перенаправления:
auth iponly allow * parent 1000 http 192.168.1.1 3128 proxy
перенаправляет весь трафик службы proxy на родительский HTTP-прокси сервер
192.168.1.1 порт 3128.
Если в качестве номера порта указан порт 0, то указанный IP адрес используется
в качестве внешнего адреса для установки соединения (аналог -eIP, но только
для запросов попадающих под allow).
Специальным случаем перенаправлений являются локальные перенаправления,
которые, как правило, используются совместно со службой socks. В локальных
перенаправлениях IP адрес 0.0.0.0 порт 0. Например,
auth iponly allow * * * 80 parent 1000 http 0.0.0.0 0 allow * * * 21 parent 1000 ftp 0.0.0.0 0 allow * * * 110 parent 1000 pop3 0.0.0.0 0 socks
перенаправляет все содеинения, проходящие через SOCKS-сервер по 80 порту, в
локальный HTTP прокси, 21-му — в FTP, и 110 — в POP3 прокси. При этом службы
proxy, ftppr или pop3pr запускать не требуется. Это может быть полезно для
того, чтобы видеть в логах записи о посещаемых пользвоателем ресурсах и
загружаемых файлах даже в том случае, если он подключается через SOCKS.
- Q: Для чего это надо?
- Q: Какие недостатки?
- Q: Какие преимущества?
- Q: Как настраивается?
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-запросы по другим портам
Сам по себе прокси не может управлять маршрутизацией пакетов сетевого уровня.
Единственная возможность для управления внешними соединениями — это выбор
внешнего интерфейса. Сделать выбор внешнего интерфейса случайным начиная
с версии 0.6 можно с использованием локальных перенаправлений (с номером
порта равным нулю):
auth iponly allow * parent 500 http 10.1.1.101 0 parent 500 http 10.2.1.102 0
будет использовать внешний интерфейс 10.1.1.1 или 10.2.1.1 с вероятностью 0.5.
Внешний интерфейс это то же, что задается командой external или опцией -e.
Чтобы это работало как ожидается, необходимо, чтобы локальным интерфейсам
10.1.1.1 и 10.2.1.1 соответствовали разные маршруты по-умолчанию.
Если оба адреса принадлежат одной сети, например, 10.1.1.101 и 10.1.1.102 и
нужно случайным образом выбирать один из шлюзов 10.1.1.1 и 10.1.1.2, то нужно
управлять роутингом примерно так (при условии что маршрут по-умолчанию не
задан):
route add -p 10.1.1.1 10.1.1.101 route add -p 10.1.1.2 10.1.1.102 route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.1 route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.2
Если второго адреса на прокси сервере нет — его надо добавить. Под Linux/Unix
лучше использовать source routing.
Для составления цепочек прокси так же можно использовать команду parent, которая
является расширением команды allow (т.е. команде parent должна предшествовать
команда allow). С помощью этой команды можно строить цепочки из HTTPS
(HTTP CONNECT), SOCKS4 и SOCKS5 прокси (т.е. последовательно подключаться
через несколько прокси), при этом возможна авторизация на родительском прокси,
звено цепочки может выбираться случайным образом из несольких значений
с вероятностью согласно их весу. Вес (от 1 до 1000) задается для каждого
прокси. Сумма весов по всем перенаправлениям должна быть кратна 1000.
Прокси с весами до 1000 группируются, и при построении цепочки один из них
выбирается случайно согласно весу. Длина цепочки определяется из суммарного
веса. Например, если суммарный вес цепочки 3000, в цепочке будет 3 звена (хопа).
Синтаксис команды:
parent <weight> <type> <ip> <port> <username> <password>
weight — вес прокси, type — тип прокси (tcp — перенаправление соединения,
может быть только последним в цепочке, http — синоним tcp, connect — HTTP
CONNECT/HTTPS прокси, socks4 — SOCKSv4 прокси, socks5 — SOCKSv5 прокси),
ip — IP адрес прокси, port — порт прокси, username — имя для авторизации
на прокси (опционально), password — пароль для авторизации на прокси
(опционально).
Пример:
allow * parent 500 socks5 192.168.1.1 1080 parent 500 connect 192.168.10.1 3128
Создает цепочку из одного звена (суммарный вес 1000), в котором один из двух
прокси выбирается случайно с равной вероятностью (веса равны). В цепочку
перенаправляются все исходящие соединения (определяется командой allow).
allow * * * 80 parent 1000 socks5 192.168.10.1 1080 parent 1000 connect 192.168.20.1 3128 parent 300 socks4 192.168.30.1 1080 parent 700 socks5 192.168.40.1 1080
Создает цепочку из трех звеньев (суммарный вес 3000). Первое звено —
192.168.10.1, второе — 192.168.20.1, а третье — либо 192.168.30.1 с
вероятностью 0.3 либо 192.168.40.1 с вероятностью 0.7
3proxy позволяет устанавливать фильтры ширины потребляемого канала. Для этого
служат команды bandlimin/bandlimout и nobandlimin/nobandlimout
(in в команде означает, что правило применяется к входящему трафику,
out — к исходящему).
bandlimin <bitrate> <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> nobandlimin <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>
bitrate указывает ширину потока в битах в секунду (именно в битах). В остальном
команды аналогичны командам allow/deny с тем отличием, что команды bandlim
не имеют привязки к конкретному сервису, такому как HTTP прокси или SOCKS
и действуют на все сервисы, трафик по всем соединениям, попавшим под действие
правила суммируется независимо от того, через какой сервис это соединение
установлено.
bandlimin 57600 * 192.168.10.16 bandlimin 57600 * 192.168.10.17 bandlimin 57600 * 192.168.10.18 bandlimin 57600 * 192.168.10.19
устанавалиет канал 57600 для каждого из четырех клиентов,
bandlimin 57600 * 192.168.10.16/30
устанавалиает суммарный канал 57600 на 4-х клиентов. Если необходимо, чтобы на
какой-то сервис не было ограничения ширины канала, следует указать nobandlim
для этого сервиса, например:
nobandlimin * * * 110 bandlimin 57600 * 192.168.10.16/32
разрешает клиентам неограниченный по скорости доступ по протоколу POP3.
counter <filename> <type> <reportpath> countin <number> <type> <amount> <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> nocountin <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>
countout <number> <type> <amount> <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>
nocountout <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>
Команды позволяют установить лимит трафика на день, неделю или месяц.
Сведения о трафике постоянно сохраняются в двоичном файле, указываемом
командой counter, что делает подсчет трафика независимым от
перезагрузки прокси. Можно управлять двоичным файлом, используя утилиту
countersutil.
Действие команд countin/nocountin аналогично действию bandlimin/nobandlimin,
number — задает последовательный номер счетчика, номер должен быть
уникальным положительным числом. Значение 0 указывает, что сведения
для данного счетчика не надо сохранять в файле.
reportpath — путь, по которому будут создаваться текстовые отчеты по
потребленному трафику.
type — тип ограничения или частота создания файлов отчета.
D (На день), W (на неделю) или M (на месяц).
amount — объем трафика на указанный период в мегабайтах.
Следует учитывать, что 3proxy считает трафик только на прикладном уровне и
только проходящий через прокси-сервер. Провайдеры и другие средства учета
трафика считают трафик на сетевом уровне, что уже дает расхождение порядка 10%
за счет информации из заголовков пакетов. Кроме того, часть трафика, как
минимум DNS-разрешения, различный флудовый трафик и т.д. идут мимо прокси.
Уровень «шумового» трафика в Internet сейчас составляет порядка 50KB/день на
каждый реальный IP адрес, но может сильно варьироваться в зависимости от сети,
наличия открытых портов, реакции на ping-запросы и текущего уровня вирусной
активности. По этим причинам, если 3proxy используется чтобы не «выжрать»
трафик, выделенный провайдером, всегда следует делать некий запас порядка
15%.
Если на одной с 3proxy машине имеются какие-либо сервисы или
работает пользователь, то их трафик не проходит через proxy-сервер и так же
не будет учтен. Если где-то есть NAT, то клиенты, выходящие через NAT мимо
прокси, так же останутся неучтенными. Если расхождение с провайдером превышает
10% — нужно искать причину именно в этом.
Для разрешения имен и кэширования применяются команды nserver,
nscache и nsrecord.
nserver 192.168.1.2 nserver 192.168.1.3:5353/tcp
указывает 3proxy какие машины следует использвоать в качестве серверов
DNS. Сервер 192.168.1.3 будет использоваться по порту TCP/5353 (вместо дефолтного UDP/53) только при недостижимости
192.168.1.2. Можно указать до 5 серверов. Если nserver не указан, будут
использованы системные функции разрешения имен.
nscache 65535 nscache6 65535
указывает размер кэша для разрешения имен (обычно достаточно большой) для IPv4 и IPv6 соответственно.
Кэш исопльзуется только при явном указании nserver.
nsrecord server.mycompany.example.com 192.168.1.1 nsrecord www.porno.com 127.0.0.2 ... deny * * 127.0.0.2
добавляет статическую запись в кэш. Статические записи так же влияют на разрешение через dnspr если не указана опция -s. Начиная с версии 0.8 для dnspr могут быть сконфигурированы родительские прокси.
IPv6 поддерживается с версии 0.8. Обратите внимание, что в некоторых видах прокси (например SOCKSv4)
IPv6 не поддерживает на уровне протокола. В SOCKSv5 есть поддержка IPv6 с помощью отдельного вида
запроса, который должен быть реализован в клиентском приложении или соксификаторе.
Возможно проксирование из сетей IPv4 и IPv6 в сети IPv4,
IPv6 и смешанные. Адреса IPv6 могут использоваться в командах
internal, external, parent, ACL, опциях -i, -e и т.д. Команду external и опцию
-e для каждого сервиса можно давать два раза — один раз с IPv4 и один раз с IPv6
адресом. internal и -i может быть указан только один, для биндинга ко всем адресам IPv4 и IPv6
можно использовать адрес [0:0:0:0:0:0:0:0] or [::].
Кроме того, для каждого сервиса могут быть даны опции -4, -46, -64, -6 которые
задают приоритет разрешения имен в адреса IPv4 и IPv6 (только IPv4, приоритет IPv4, приоритет IPv6, только IPv6).
Например, пользователю нужен доступ к прокси-серверу, который расположен
на хосте 192.168.1.2 недоступном из внешней сети, но имеющем доступ во внешнюю
сеть с внешним адрес 1.1.1.1. Так же у него есть машина с именем host.dyndns.example.org
с внешним адресом 2.2.2.2. Пользователь запускает 2 экземпляра 3proxy, один на
хосте 192.168.1.2 с конфигурацией
users user:CL:password auth strong allow user proxy -rhost.dyndns.example.org:1234
второй на хосте host.dyndns.example.org (2.2.2.2) с конфигурацией
auth iponly allow * * 1.1.1.1 tcppm -R0.0.0.0:1234 3128 1.1.1.1 3128
В настройках браузера указывается host.dyndns.example.org:3128.
- Как использовать 3proxy с Internet Explorer или другим браузером
Мы будем рассматривать Interenet Explorer, т.к. у него больше особенностей
настройки, с другими браузерами должно возникать меньше вопросов.Есть два основных способа работы с 3proxy — использовать HTTP прокси (сервис
proxy) или SOCKS прокси (сервис socks). Обычно используется HTTP прокси. Для
SOCKS прокси можно использовать встроенную поддержку браузера или
программу-соксификатор (см.
Как использовать 3proxy с программой, не поддерживающей работу с прокси-сервером),
если встроенная поддержка SOCKS чем-то не устраивает или так удобнее. Не все
соксификаторы поддерживают входящие соединения, поэтому чтобы не было проблем с
протоколом FTP лучше использовать пассивный режим (в Internet Explorer 5.5SP2
и выше «Использовать пассивный FTP-протокол»).Для конфигурации HTTP прокси необходимо указать внутренний адрес и порт,
установленые для службы proxy в конфигурации 3proxy (либо как «Один
прокси-сервер для всех протоколов» либо для HTTP, Secure, FTP). Поддержка
Gopher в 3proxy в настоящий момент не реализована, но этот устаревший протокол
в Internet практически не используется. Для нормальной работы FTP через HTTP
прокси необходимо отключить представление для папок FTP (FTP folder view),
он включен по-умолчанию, т.к. иначе FTP будет работать без использвания HTTP
прокси. HTTP прокси использует пассивный режим для протокола FTP. В настройках
3proxy рекомендуется разрешть метод HTTP_CONNECT только для порта назначения 443.
Если метод HTTP_CONNECT не разрешен, то не будет работать протокол HTTPS, если
он разрешен для всех портов, то можно обойти журналирование запросов для
протокола HTTP).
Для работы с HTTP прокси может использоваться авторизация по паролю (strong).Для использования SOCKS необходимо настроить только SOCKS прокси (иначе для
протоколов, для которых указан прокси сервер, он будет использоваться как HTTP
прокси). Internet Explorer (включая IE 6.0SP1)
поддерживает только SOCKSv4. В качестве имени пользователя передается имя
пользователя, использованное для входа в систему. Передача пароля в SOCKSv4 не
поддерживается, поэтому авторизация по паролю (strong) не доступна. Можно
использовать имя пользователя, переданное браузером в ACL для iponly-авторизации,
но при этом необходимо иметь ввиду ненадежность такого способа. При работе через
SOCKS Internet Explorer (и большая часть других браузеров) используют пассивный
режим работы для FTP. При использовании SOCKS можно получить в журнале (логах)
URL запрашиваемых страниц, для этого необходимо создать внутреннее
перенаправление в HTTP прокси для порта 80 (и других портов, используемых для
HTTP) в локальный HTTP прокси (proxy), порт 21 (и другие порты, используемые
FTP) в FTP прокси. При перенаправлении соединений в FTP прокси, нужно иметь
ввиду, что FTP создает вторичные соединения для передачи данных. Для этого,
во-первых, необходимо разрешить доступ к внутреннему интерфейсу прокси сервера
через SOCKS (что не очень безопасно), во-вторых, принять меры, чтобы в SOCKS
такие соединения на внутренний интерфейс не тарифицировались (т.к. иначе они
будут тарифицироваться дважды — SOCKS и FTP прокси).Internet Explorer и другие продвинутые браузеры поддерживают автоматическую
конфигурацию прокси-сервера в полностью автоматическом или полуавтоматическом
режимах. Автоматическая конфигурация позволяет задать достаточно сложные
правила, позволяющие клиентам использовать (или не использвоать) разные
прокси-серверы для доступа к разным ресурсам. Эта возможность разбирается в
статьях
Microsoft: Q296591 A Description of the Automatic Discovery Feature
http://support.microsoft.com/default.aspx?scid=kb;EN-US;296591
Netscape: Navigator Proxy Auto-Config File Format
http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html - Как настраивать FTP клиент
Настройка FTP клиента для работы через SOCKS прокси не отличается от настройки
браузера.Для работы с FTP клиентом через FTP прокси (ftppr) есть несколько возможностей.
Допустим, нам необходимо подключиться ко внешнему FTP серверу со следующими
параметрами:Адрес: ftp.security.nnov.ru Username: ftpuser Password: ********
Работа с клиентом, не поддерживающим FTP прокси — в качестве адреса FTP
сервера указывается адрес прокси (например, proxy.security.nnov.ru), в качестве
имени пользователя [email protected]. Если для доступа к службе
ftppr требуется авторизация по имени и паролю с именем pruser и паролем prpass,
то в качестве имени пользователя необходимо указать
pruser:prpass:[email protected]. Если FTP клиент требует указания
полной URL для подключения к серверу, то она должна выглядеть какpruser:prpass:[email protected]:********@proxy.security.nnov.ru
Не все клиенты обработают это корректно, но в большинстве случаев этого не
требуется.Работа с клиентом, поддерживающим FTP прокси — если 3proxy
не требует авторизации по паролю, то настройки стандартны для клиента. Если
требуется доступ по паролю, то в качестве имени пользователя указывается
pruser:prpass:ftpuser. - Как использовать SMTP через 3proxy
В большинстве случаев достаточно установить отображение (tcppm) TCP порта 25 на
аналогичный порт SMTP сервера провайдера. В конфигурации клиента указать
внутренний адрес прокси в качестве адреса SMTP-сервера. - Как использовать POP3 proxy
Предположим, у вас есть следующие настройки для получения почты:
POP3 server: pop3.security.nnov.ru Login: user Password: ********
В настройках почтовой программы следует указать:
POP3 server: (адрес прокси-сервера) Login: [email protected] Password: ********
Имя пользователя может само по себе содержать знак ‘@’. Если в примере выше
имя пользователя [email protected], то имя пользвоателя для доступа к
прокси-серверу должно быть [email protected]@pop3.security.nnov.ru. Если
pop3pr требует авторизации по имени/паролю (например, pruser и prpass), то их
необходимо указать в начале имени пользователя, отделив знаком ‘:’, т.е для
самого тяжелого случая pruser:prpass:[email protected]@pop3.security.nnov.ru - Как использовать 3proxy с программой, не поддерживающей работу с прокси-сервером
Можно использовать любую программу-редиректор. 3proxy поддерживает исходящие
и обратные TCP и UDP соединения, но редиректоры могут иметь свои ограничения,
кроме того, некоторые плохо написаные приложения не поддаются «соксификации».
Если программе требуется обращаться к небольшому набору серверов
(например, игровых), то проблему можно решить с помощью портмаппинга. - Как использовать 3proxy с играми
Если по каким-то причинам соксификатор не работает или недоступен,
то необходимо использовать отображения портов (обычно игры,
кроме mood-подобных, работают по протоколу UDP, надо использовать udppm).
Нужно иметь ввиду, что для udppm требуется отдельный маппинг для каждого
серверного порта и каждого клиента. Например, если есть один сервер с портами
2115 и 2116 и три клиента, то нужно создать 6 разных маппингов, напримерudppm 12115 server 2115 udppm 12115 server 2115 udppm 22115 server 2115 udppm 32115 server 2115 udppm 12116 server 2116 udppm 22116 server 2116 udppm 32116 server 2116
В игровом клиенте адрес и порт с маппингом следует указывать вместо адреса
и порта сервера.
- Где взять свежую версию
Свежую версию всегда можно взять
здесь. Обратите внимание,
что в новой версии может измениться порядок лицензирования или команды
конфигурации, поэтому прежде чем устанавливать новую версии программы
обязательно ознакомьтесь с документацией. - Как управлять службой 3proxy в Windows NT/2000/XP
При установке 3proxy в качестве системной службы сервером поддерживаются
команды запуска, остановки, временной приостановки и продолжения.
При временной приостановке сервер перестает принимать новые запросы от
клиентов, но обработка ранее поступивших запросов продолжается. Сервер не
подерживает динамическое изменение конфигурации, т.е. после изменения
конфигурации 3proxy необходимо перезапустить.
Управлять запуском, остановкой, приостановкой и продолжением можно либо
через служебную программу «Службы» (Services) либо через команду net:net start 3proxy net stop 3proxy net pause 3proxy net continue 3proxy
- Коды ошибок в журнале
- 0 — операция завершена успешно (в случае установленного
соединения — соединение закрыто корректно одной из
сторон). - 1-9 — ошибки авторизации
- 1 — доступ закрыт ACL (deny)
- 2 — перенаправление (не должно быть в журнале)
- 3 — нет записи ACL для данного соединения
- 4 — не определено имя пользователя для auth strong
- 5 — не найдено имя пользователя для auth strong
- 6 — неверный пароль (открытый текст)
- 7 — неверный пароль (crypt)
- 8 — неверный пароль (NT)
- 9 — недостаточно данных для перенаправления (не должно быть в журнале)
- 10 — превышен лимит трафика
- 11-19 — ошибки соединения
- 11 — невозможно создать сокет socket()
- 12 — невозможно выбрать интерфейс bind()
- 13 — сбой подключения connect()
- 14 — сбой getpeername()
- 20-29 — общие ошибки
- 21 — ошибка выделения памяти
- 30-39 — ошибки перенаправления CONNECT
- 31 — невозможно послать запрос к CONNECT прокси
- 32 — превышено ожидание или некорректный ответ CONNECT прокси
- 33 — CONNECT прокси не может установить соединение
- 34 — превышено ожидание или обрыв соединения при согласовании CONNECT соединения
- 40-49 — ошибки перенаправления SOCKS4
- 50-69 — ошибки перенаправления SOCKS5
- 70-79 ошибки установки родительского соединения, аналогичны 1x
- 90-99 — ошибки разрыва соединения
- с версии 0.9
- 90 — неожиданная системная ошибка (не должно происходить)
- 91 — ошибка poll (не должно происходить)
- 92 — соединение прервано по таймауту на сетевую операцию (см. timeouts)
- 93 — соединение прервано по таймауту связанному с рейтлимитом или из-за превышения числа ошибок
- 94 — клиент или сервер закрыли соединение или произошла сетевая ошибка, остались неотправленные данные
- 95 — клиент «грязно» закрыл соединение или сетевая ошибка
- 96 — сервер «грязно» закрыл соединение или сетевая ошибка
- 97 — клиент и сервер «грязно» закрыли соединение или сетевая ошибка
- 98 — исчерпан лимит данных сервера (не должно быть в журнале)
- 99 — исчерпан лимит данных клиента (не должно быть в журнале)
- до версии 0.9
- 90 — ошибка сокета или соединение неожиданно прервано
- 91 — общий сбой стека TCP/IP
- 92 — соединение прервано по таймауту
- 93 — ошибка получения данных от сервера
- 94 — ошибка получения данных от клиента
- 95 — таймаут из-за ограничения bandlimin/bandlimout
- 96 — ошибка отправки данных клиенту
- 97 — ошибка отправки данных серверу
- 98 — исчерпан лимит данных сервера (не должно быть в журнале)
- 99 — исчерпан лимит данных клиента (не должно быть в журнале)
- 100 — не найден IP адрес по запросу клиента
- 200-299 — ошибки UDP portmapper
- 300-399 — ошибки TCP portmapper
- 400-499 — ошибки SOCKS proxy
- 500-599 — ошибки HTTP proxy
- 600-699 — ошибки POP3 proxy
- 999 — функция не реализована
- 0 — операция завершена успешно (в случае установленного
Задайте его на Github.
Только не пытайтесь задавать какие-либо вопросы, если вы просто не поняли этот
HowTo.
Рассмотрим процедуру установки и запуска великолепного прокси-сервера 3proxy под Windows.
В скобках заметим, что установка под Linux не требует, кажется, никаких дополнительных комментариев… просто ставим из репов, затем редактируем под себя конфиг:
Code:
[aleksej@localhost ~]$ su
Пароль:
[root@localhost aleksej]# yum install 3proxy
Загружены модули: langpacks, presto, refresh-packagekit
Подготовка к установке
Разрешение зависимостей
—> Проверка сценария
—> Package 3proxy.i686 0:0.6.1-11.fc15 will be для установки
—> Проверка зависимостей окончена
Зависимости разрешены
===================================================================================================================================
Пакет Архитектура Версия Репозиторий Размер
===================================================================================================================================
Установка:
3proxy i686 0.6.1-11.fc15 fedora 146 k
Результат операции
===================================================================================================================================
Установить 1 пакет(а,ов)
Объем загрузки: 146 k
Будет установлено: 466 k
Продолжить? [y/N]:
А вот под Windows не все и не всегда проходит гладко… особенно, если впервые устанавливаешь 3proxy. ОК, а теперь — по порядку.
3proxy это маленький многоплатформный набор прокси-серверов (под Linux/Unix и Windows, включая 64-битные версии).
Он включает в себя HTTP прокси с поддержкой HTTPS и FTP (proxy/proxy.exe), SOCKSv4/SOCKSv4.5/SOCKSv5 прокси (socks/socks.exe), POP3 прокси (pop3p/pop3p.exe), SMTP прокси (smtpp/smtpp.exe), AIM/ICQ прокси (icqpr/icqpr.exe), MSN messenger / Live messenger proxy (msnpr/msnpr.exe), FTP proxy, кэширующий DNS прокси, TCP и UDP портмапперы (tcppm, udppm) а так же комбинированный прокси-сервер с поддержкой дополнительных возможностей, таких как управление доступом, ограничение ширины потребляемого канала, ограничение трафика на день, неделю и месяц, перенаправление соединений, построение цепочек соединений (proxy chaining), ротацию лог-файлов, ведение журналов через ODBC и syslog и т.д. (3proxy).
Он создан в рассчете на то, чтобы быть маленьким и простым и в то же время функциональным. Он может быть скомпилирован как с помощью Visual C так и с помощью gcc. Версия под Win32 использует родные библиотеки (т.е. не требуется Cygwin или другие POSIX-эмуляторы), поддерживается установка в качестве сервиса. На сегодняшний день работоспособность проверена на Windows 98/NT/2000/2003/2008/XP/Vista/Windows 7 включая версии x64, FreeBSD/i386, NetBSD/i386, OpenBSD/i386, Linux/i386, Linux/PPC, Linux/Alpha, Mac OS X/PPC, Solaris 10/i386.
3proxy является FreeWare и может быть использован по лицензии GNU/GPL или под собственной лицензией. Начиная с версии 0.6 Используется лицензия типа BSD, позволяющая, так же, использовать LGPL, Apache License и многие другие совместимые типы лицензирования.
Загружаем архив с
сайта разработчика
и распаковываем. Копируем из каталога \cfg\sql файл 3proxy.cfg, помещаем его в одну директорию с 3proxy.exe. Или же — из каталога \cfg копируем 3proxy.cfg.sample, переименовываем в 3proxy.cfg и помещаем туда же, в бинарники. Одно из двух; все одно в дальнейшем этот конфиг нам придется редактировать, а сейчас заработает по-любому.
Открываем cmd, переходим в каталог, содержащий файл 3proxy.exe (я положил директорию 3proxy в корень диска С):
и запускаем инсталляцию:
Code:
3proxy.exe —install
Как видите, все несложно.
Но здесь нас поджидает (возможно) нежданная и незаслуженная неприятность — 3proxy установлен, но не запущен; и даже зайдя в Администрирование -> Службы — мы не можем запустить его вручную:
Почему так происходит? Вам придется внимательно изучить вот этот раздел FAQ:
Почему 3proxy не запускается как служба?
Наиболее вероятные причины:
- Отсутствие команды service в файле конфигурации — команда необходима в 3proxy 0.5.2 и более ранних, чтобы 3proxy вел себя как системная служба Windows
- Использование относительных (неполных) путей файлов в файле конфигурации При использовании файлов журналов, файлов вставок ($filename) используйте полные пути, например, $»c:\3proxy\include files\networks.local». Тоже самое относится к файлам журналов и любым другим. Для отладки лучше запускать 3proxy с ведением журнала на стандартный вывод. Не забудьте в таком случае отключить daemon и service в файле конфигурации. Для чистоты эксперимента запускать 3proxy из командной строки в таком случае следует, находясь в другой папке.
- Отсутствие у системной записи прав на доступ к исполняемому файлу, каким-либо файлам конфигурации, журнала и т.п.
- Отсутствие файла конфигурации по стандартному расположению — 3proxy.cfg в одном каталоге с исполняемым файлом. Если файл расположен по другому пути, необходимо использовать команду
Code:
3proxy —install path_to_configuration_file
- Отсутствие у пользователя прав на установку или запуск службы
- Служба уже установлена или запущена
Справедливости ради следует отметить, что FAQ написан очень подробно и на все случаи жизни… мне же, чтобы запустить 3proxy как службу, понадобилось всего лишь создать по указанному в конфиге пути папку logs, и в ней — пустой файл лога (возможно, файл создавать было и необязательно). После этого 3proxy стартует уже без малейших проблем:
Теперь, убедившись, что все работает, можно снова остановить 3proxy и спокойно заняться правкой конфига под себя. Останавливаться на этом не будем, т.к., повторюсь, к вашим услугам — прекрасно написанное руководство на русском, доступное на сайте разработчика. Enjoy!
Последнее редактирование: 13 года 7 мес. назад пользователем Aleksej.
3proxy — это бесплатный прокси-сервер, позволяющий юзерам поддерживать необходимый уровень конфиденциальности и безопасности в Интернете. Гибкая настройка позволяет адаптировать его под различные системы, сети и цели использования.
3proxy — кроссплатформенный прокси-сервер, который можно настроить по своему усмотрению. Хотя иногда антивирусное ПО распознаёт его как вредоносную программу, он всё же очень полезен. Благодаря 3proxy вы сможете обезопасить свою локальную сеть и отфильтровать трафик.
3proxy — это прокси-сервер (бесплатное ПО) для Windows, Linux и Unix. Он используется для защиты сети, ведения журнала логов, сокрытия IP-адреса, фильтрации трафика, кеширования данных и объединения нескольких прокси-серверов в одну цепочку.
«3 прокси» не имеет графического интерфейса. Поэтому настройка данного программного обеспечения производится через написание команд. Возможен запуск этого ПО как в консольном режиме, так и в фоновом режиме в виде дополнительной службы. Для его настройки можно воспользоваться простой командной строкой (терминалом).
Преимущества использования программы 3proxy
- Работает быстрее других прокси-серверов, обеспечивает высокую скорость обработки запросов с минимальными задержками.
- Занимает мало места на компьютере и потребляет небольшое количество ресурсов, что делает программу доступной для владельцев различных устройств.
- Поддерживает разные виды протоколов, включая HTTP, HTTPS, SOCKS4/5, что делает её универсальным инструментом в руках системного администратора.
- Включает в себя множество полезных функций.
- Настраивается за несколько минут через терминал или командую строку.
- Обеспечивает высокий уровень защиты данных благодаря функции шифрования и аутентификации.
- Доступна на ОС Windows, Linux/Unix.
Минусы этого программного обеспечения
- Не подходит для тех, кто предпочитает работать в привычном интерфейсе. Пользователи считают эту программу неудобной из-за отсутствия графического интерфейса и необходимости редактировать конфигурационные файлы вручную.
- 3proxy уступает более продвинутому прокси-серверному ПО. В этой программе не предусмотрены дополнительные функции по защите данных, да и в сети мало рассказывается о том, как настроить данное ПО вручную.
3proxy подходит для тех, кому нужен простой, надёжный прокси-сервер, который весит совсем немного.
Требования к системе
Перед установкой «3 прокси» убедитесь в том, что у вас есть:
- Сервер, который будет функционировать как «выходная нода», с одним ядром, 5-10 Гб дискового пространства и 1 Гб ОЗУ.
- Высокоскоростное подключение к Интернету и не тарифицируемый по объёму данных трафик.
- Свободные порты.
- Доступ к серверу и командой строке с расширенными правами.
- Актуальная операционная система.
Если вы убедились в том, что ваши устройства соответствуют минимальным требованиям, то тогда вы можете перейти к setup 3proxy socks.
Как настроить программу
Установка 3proxy осуществляется из базовых исходников. Для её выполнения вам необходимо загрузить недостающие пакеты. Если вы пользуетесь AlmaLinux и CentOS 7, то введите следующую команду:
# yum -y install gcc wget tar make
В случае с Debian и Ubuntu, загрузите пакеты путем ввода:
apt update: # apt install -y build-essential wget tar
После загрузки базовых пакетов вам нужно будет скачать proxy и распаковать архив посредством следующего кода:
# wget https://github.com/z3APA3A/3proxy/archive/0.9.4.tar.gz
# tar -xvzf 0.9.4.tar.gz
Если вы уже ввели соответствующую команду, то распакуйте всё в директорию и скомпилируйте посредством следующего кода:
# cd название прокси-0.9.4/
# make -f Makefile.Linux
Далее сформируйте папку для конфигов и логов, а затем перенесите исполняемый файл proxy через команду:
# mkdir /etc/название прокси
# mkdir -p /var/log/ наименование прокси
# cp bin/ название прокси /usr/bin/
Затем создайте юзера:
# useradd -s /usr/sbin/nologin -U -M -r proxyuser
Предоставьте ему права доступа через команду:
# chown -R proxyuser:proxyuser
Ее нужно будет ввести три раз, поменяв лишь ее концовку:
/etc/ название прокси
/var/log/ наименование прокси
/usr/bin/ название прокси
После создайте новый конфиг:
# touch /etc/3proxy/3proxy.cfg
И предоставьте доступ к конфигурации лишь суперпользователю:
# chmod 600 /etc/3proxy/3proxy.cfg
Далее заполните созданный вами конфиг. Но перед этим определите пользовательский uid и gid через команду:
# id proxyuser
uid=991(proxyuser) gid=991(proxyuser) groups=991(proxyuser)
Запомните uid и gid. Вставьте текст из примера configuration file и сохраните его с помощью специального редактора.
Пример конфигурационного файла 3proxy.cfg от proxyuser и заданным паролем password
users proxyuser:CL:password, который должен у вас получиться после его редактирования:
# Вставляем uid и gid пользователя, которые указали ранее
setgid 991
setuid 991
# Указываем правильные NS. Просмотреть их можно в /etc/resolv.conf
nserver 8.8.8.8
nserver 8.8.4.4
# Используем таймауты и размер кеша для запросов DNS по умолчанию
timeouts 1 5 30 60 180 1800 15 60
nscache 65536
# Указываем режим запуска как daemon
daemon
# Настраиваем http proxy на порте 3128
proxy -p3128 -n -a -i127.0.0.1 -e81.146.57.249
# В параметре -p укажите собственный порт. Предварительно проверьте, что он работает. В параметре -i укажите внутренний IP-адрес (подойдёт указанный в примере). В параметре -e укажите внешний айпи (белый IP), или не указывайте параметры -i и -e, чтобы прослушивались все доступные IP-адреса
# Настраиваем socks proxy на стандартном порте 1080
socks -p1080
# Параметры порта и интерфейсов задаются аналогично proxy. Указываем путь к логам, формат лога и ротацию
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
После ознакомления и ввода дополнительных команд, сформируйте initialization file для systemd и настройте права доступа:
# touch /etc/systemd/system/название прокси.service
# chmod 664 /etc/systemd/system/ наименование прокси.service
Затем скопируйте в него:
[Unit]
Description= название прокси Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep proxyuser`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
Сохраните и обновите конфиг systemd:
# systemctl daemon-reload
Запустите прокси и перенесите его в Autorun:
# systemctl start Название программы
# systemctl enable Наименование прокси
Откройте порты. После этого настройка 3proxy будет завершена.
Проверка результата
Неопытные пользователи устанавливают 3proxy далеко не с первого раза. Поэтому они инициируют проверку его работы посредством введения соответствующего кода.
Для проверки работоспособности прокси выполните следующую команду:
curl -I -x socks5://<пользователь>:<пароль>@<IP-адрес_сервера>:<порт_прокси> https://serverspace.ru | grep HTTP
Если перед вами появится сообщение «Код 200», это означает, что ваш сервер работает нормально. Теперь его можно подключить через браузер или программу-клиент.
Если же в командной строке вы увидели следующее сообщение:
HTTP 403 Forbidden
То это значит, что доступ к запрошенному ресурсу запрещен, или прокси не получил соответствующие права для выполнения команды.
При появлении надписи
HTTP 404 Not Found
можно также сделать вывод, что указанный URL недоступен, так как ошибка говорит об отсутствии запрашиваемого ресурса на сервере.
Возникновение этой ошибки:
HTTP 502 Bad Gateway
говорит о том, что прокси не может получить ответ от исходного сервера, возможно, из-за проблем с сетью.
Появление этого сообщения об ошибке:
HTTP 504 Gateway Timeout
указывает на то, что proxy не дождался ответа от сервера-посредника в установленное время. Это может быть связано с его загруженностью или обусловлено проблемой неправильно настроенного шлюза.
Ошибка 502 Bad Gateway: когда возникает и как убрать
А возникновение следующего текста на экране:
curl: (7) Failed to connect to ...
говорит о том, что появилась проблема с подключением к самому proxy. Возможные причины появления этой ошибки:
- сервер не отвечает,
- были указаны некорректные настройки айпи или порта,
- произошла блокировка на уровне сети.
Внимание!
Проверка работоспособности 3proxy важна, так как использование нерабочих прокси может навредить вашим учётным записям.
Исправление распространённых проблем
Пользователю нужно не только уметь настраивать и проверять работоспособность прокси-сервера, но и своевременно исправлять ошибки, связанные с его запуском. Ниже будут рассмотрены примеры решения распространенных проблем, связанных с программой 3proxy.
HTTP 403 Forbidden
Устранить эту проблему можно несколькими способами. Чтобы избавиться от ошибки, выполните следующие действия.
- Проверьте индексный файл и убедитесь, что вы правильно ввели все команды. Если вы увидите пропущенные символы или заглавные буквы, то причина проблемы найдена. Осталось лишь исправить текст.
- Расширьте права доступа.
- Проверьте настройки безопасности или файрвола на стороне сервера. Он может блокировать доступ. Подкорректируйте параметры при необходимости.
Что значит ошибка 403 и как её исправить
HTTP 404 Not Found
Чтобы решить данную проблему, сделайте следующее.
- Проверьте, правильно ли введен URL-адрес. Если вы заметили, что допустили ошибки при его введении, то просто исправьте адрес и повторите попытку запуска.
- Убедитесь, что ресурс доступен и открывается через другие прокси. Возможно, сайт был перемещён на другой домен, и вы сделали все правильно.
Так как ошибка 404 может появиться из-за временных проблем с получением доступа к ресурсу, вы можете повторно проверить работоспособность прокси через несколько часов.
HTTP 502 Bad Gateway
Чтобы устранить эту ошибку:
- Проверьте, нормально ли работает Интернет, перезагрузите роутер.
- Попробуйте выполнить команду чуть позже (это может быть временный сбой со стороны сервера).
- Проверьте конфигурацию proxy и убедитесь, что он правильно настроен для отправки запросов.
- Почистите кеш и куки. Нередко ошибка 502 возникает из-за неправильно загруженных cash/cookies. Поэтому вам нужно сначала очистить данные в настройках. Еще в кеше сохраняются старые айпи-адреса. Поэтому полезно выполнить сброс данных DNS.
Важно!
Ваше новое доменное имя может оказаться недоступным из-за кеширования. Поэтому вам нужно дождаться обновления записей ДНС или указать в файле hosts айпи и обновленный domain.
Для очистки кеша необходимо воспользоваться терминалом. Запустите его и введите нижеуказанную команду для выполнения операции:
sudo service network-manager restart
После выполнения этой команды данные будут автоматически удалены.
Как перезагрузить сервер
HTTP 504 Gateway Timeout
Чтобы избавиться от этой проблемы:
- Проверьте и измените настройки сервера vds 3proxy. Возможно, вы выставили неверные параметры.
- Очистите кеш и куки через команду в терминале.
- Проверьте состояние соединения. Убедитесь, что Интернет работает стабильно и без сбоев (попробуйте открыть через прокси другие веб-сайты). Снизьте нагрузку на сеть, чтобы улучшить соединение.
- Обновите настройки брандмауэра (межсетевого экрана или МЭ).
- Ненадолго отключите антивирусные программы. Как и брандмауэр, они также могут блокировать доступ к веб-ресурсам.
- Попробуйте выполнить запрос чуть позже. Возможно, сайт перегружен или на него была совершена хакерская атака, и позднее вы сможете получить к нему доступ без особых проблем.
- Увеличьте таймаут ожидания на прокси-сервере, если это возможно.
Так как причинами ошибки 504 могут стать проблемы с интернет-соединением, программным обеспечением и самим шлюзом, важно комплексно подходить к её устранению.
Ошибка «curl: (7) Failed to connect to …»
Как устранить данную ошибку:
- Проверьте правильность айпи-адреса или порта сервера в команде curl. Внесите коррективы.
- Просмотрите настройки файрвола или брандмауэра и измените их при необходимости.
- Проверьте, открыты ли порты через команду netstat и nc. Если они закрыты, и вы знаете причину, то внесите изменения в конфиг и перезапустите прокси через команду: «sudo systemctl restart 3proxy».
- Убедитесь, что сервер работает и доступен по указанному адресу. Введите в терминале команду ping или telnet для диагностики сетевых проблем и их последующего решения.
- Очистите кеш и куки, а затем повторите запуск. Нередко ошибки возникают из-за скопления ненужных копий данных. Поэтому их нужно удалять вовремя.
На заметку
Если в вашей сети используется корпоративный файрвол, например, Kerio, вам нужно будет создать соответствующее правило, которое при обращении на внешний айпи будет перенаправлять на внутренний с указанием порта, на котором функционирует служба 3proxy. Это позволит трафику, направленному на внешний IP-адрес, автоматически перенаправляться на ваш внутренний сервер. После создания правила обязательно проведите тестирование, чтобы убедиться, что трафик правильно перенаправляется и прокси работает. Попробуйте подключиться к вашему серверу через внешний IP и убедитесь, что все запросы корректно обрабатываются.
Почему важно уметь настраивать прокси-сервер
Вот основные причины, почему стоит научиться настраивать 3proxy:
- 3proxy обеспечивает анонимность и защиту личных данных в сети.
- C помощью этого программного обеспечения удобнее заниматься SEO-продвижением своей площадки в Интернете и раскруткой аккаунтов в социальных сетях.
- Данное ПО может действовать как промежуточное звено в вашей системе, защищая её внутренние серверы от внешних угроз и блокируя прямой доступ к важным файлам.
- Proxy может кешировать часто запрашиваемые данные, что снижает время загрузки страниц сайта и уменьшает нагрузку на главный сервер.
- Серверная программа позволяет управлять сетевым трафиком (распределять его между несколькими серверами в целях повышения производительности устройства).
- Proxy позволяет устанавливать политики доступа для различных групп пользователей, что снижает риски утечки информации внутри конкретной организации.
- С помощью данного программного обеспечения можно внедрить аутентификацию для контроля доступа к внутренним системам и важным ресурсам.
- Через proxy вы можете собирать данные о производительности приложений и активности пользователей в целях последующей оптимизации.
- Это программное обеспечение позволяет вести логи всех сетевых запросов, что помогает в последующем проведении аудита и анализе безопасности сети.
И это ещё не всё. Благодаря пониманию того, как настраивать 3proxy, вы сможете эффективнее управлять сетевой безопасностью на предприятии. Если на вас лежит большая ответственность по обеспечению сохранности данных, обязательно воспользуйтесь данной серверной программой и изучите все нюансы её применения.
Кто может помочь с настройки прокси-сервера
Сегодня настройкой proxy занимаются:
- Системные администраторы. Эти специалисты отвечают за настройку и поддержку всех серверов и сетевой инфраструктуры на объекте.
- Сетевые инженеры. Данные сотрудники специализируются на проектировании и обслуживании инфраструктуры сети. Настройка прокси-сервера может быть частью их работы по оптимизации архитектуры.
- Программисты и другие специалисты IT-компаний. Большинство айтишников знают, как настраивать прокси, так как это тоже является частью их работы. Поэтому вы можете привлечь для выполнения задачи любого сотрудника, который уже долгое время занимается настройкой компьютерного программного обеспечения на объекте.
Если вы не хотите тратить деньги из своего бюджета на найм, воспользуйтесь нашей инструкцией и забудьте про лишние хлопоты.
Заключение
Настроить простой и не ресурсоёмкий кроссплатформенный прокси 3proxy не так уж сложно. На настройку этого сервера у вас уйдет всего 20-30 минут, а проверка будет выполнена вами меньше, чем за минуту.
Читайте в блоге:
- Как установить и настроить веб-сервер Nginx на Ubuntu
- Шесть способов узнать версию Nginx
- Команда «пинг»: для чего нужна и как пингуют серверы
Понадобилось мне дома быстро настроить прокси. С помощью 3proxy, за авторством Vladimir ‘3APA3A’ Dubrovin, удалось всё сделать за 5 минут.
https://3proxy.ru
3proxy — бесплатный кроссплатформенный прокси-сервер. Основными отличительными особенностями являются небольшой размер и поддержка нескольких операционных систем. Программа не имеет графического интерфейса, её настройка производится путём написания конфигурационного файла. Существует возможность запуска программы как в консольном режиме, так и в фоновом режиме в виде службы или демона.
Установка 3proxy
Работаем в ОС Windows 11. Здесь мы не рассматриваем установку прокси как службу, всё это можно найти в документации. Нам нужен прокси за 5 минут. Просто качаем последний релиз:
https://github.com/3proxy/3proxy
Я взял версию 3proxy-0.9.4-lite.zip, несмотря на то, что сборка предназначена для старых версий Windows, и в новых она заработала.
- 3proxy-0.9.4.zip — binaries for Windows Vista, 7, 8, 10 / Server 2003,2008,2012,2016,2019 (32 bit)
- 3proxy-0.9.4-x64.zip — binaries for Windows Vista, 7, 8, 10 / Server 2003,2008,2012,2016,2019 (64 bit)
- 3proxy-0.9.4-lite.zip — binaries for old Windows versions (Windows 95, 98, ME, NT 4.0, Windows 2000, Windows XP)
- 3proxy-0.9.4-arm64.zip — binaries for Windows on ARM
- 3proxy-0.9.4.x86_64.deb — deb package for x86_64 Debian-based Linux (experimental!)
- 3proxy-0.9.4.x86_64.rpm — rpm package for x86_64 Red Hat based Linux (experimental!)
- 3proxy-0.9.4.aarch64.rpm — rpm package for arm64 (aarch64-linux-gnu) Red Hat based Linux (experimental!)
- 3proxy-0.9.4.arm.rpm — rpm package for arm (arm-linux-gnueabi) Red Hat based Linux (experimental!)
- 3proxy-0.9.4.aarch64.deb — deb package for arm64 (aarch64-linux-gnu) Debian based Linux (experimental!)
- 3proxy-0.9.4.arm.deb — rpm package for arm Debian based Linux (experimental!)
Добавил его в Сборку для системного администратора.
Распаковываем, вот и вся установка.
Настройка 3proxy
В папке bin создаём конфигурационный файл 3proxy.cfg.
Помним, нам нужен прокси за 5 минут. Самый простой конфигурационный файл:
auth none
log
proxy
- auth none — авторизация не требуется
- log — вывод лога на экран
- proxy — стандартный прокси на порту 3128
Запуск 3proxy
Запускаем 3proxy.exe, открывается консоль. Проверим, что 3128 порт прослушивается:
netstat -tan | findstr "3128"
Попробуем подключиться к прокси с соседнего компа:
Что-то заработало. В консоли побежали строчки лога.
Мы подняли прокси-сервер 3proxy за пять минут.
Инструкция для установки на ОС Windows Server
Скачать дистрибутив можно с сайта https://3proxy.ru. Дистрибутив распространяется в виде архива zip, поэтому нужно просто распаковать содержимое архива в каталог, например C:\Program Files\3proxy.
Далее необходимо создать конфигурационный файл C:\Program Files\3proxy\bin64\3proxy.cfg, если нет готового шаблона можно просто скопировать файл C:\Program Files\3proxy\cfg\3proxy.cfg.example. Пример шаблона конфигурационного файла см. ниже.
Осталось зарегистрировать 3proxy.exe в качестве системной службы windows, для этого нужно запустить cmd.exe и выполнить следующие команды:
cd C:\Program Files\3proxy
3proxy.exe --install
после чего системная служба будет установлена и запущена. Остановка и перезапуск службы 3proxy.exe выполняется штатным средствами windows.
Далее остаётся только проверить работоспособность прокси и пользоваться.
Пример конфигурационного файла 3proxy.cfg для VPS с одним внешним IP 46.17.40.98 и DNS-сервером 77.88.8.1 с установленной авторизацией по имени/паролю:
nserver 77.88.8.1
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
users USERNAME:CL:PASSWORD
service
log «C:\Program Files\3proxy\3proxy.log» D
logformat «- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T»
rotate 7
auth strong
allow USERNAME
external 46.17.40.98
internal 46.17.40.98
deny * * 127.0.0.1
deny * * 46.17.40.98
#необходимо добавить строки «deny * * IP-адрес»
#для всех IP-адресов сервера,
#на котором работает 3proxy, иначе клиенты прокси смогут
#подключиться к указанным IP изнутри ОС, и таким образом
#необоснованно преодолеть сетевой фильтр внешней сети сервера
proxy -n
maxconn 32