1. Главная
  2. База Знаний
  3. Установка и настройка 3proxy на CentOS/ArchLinux

Установка и настройка 3proxy на CentOS/ArchLinux


В данной статье будет продемонстрирована настройка 3proxy-клиента на выделенный сервер под управлением операционной системы ArchLinux/CentOS. 3proxy является одним из самых актуальных и функциональных инструментов на сегодняшний день. Он поддерживает различные виды протоколов: HTTP, HTTPS, FTP, SOCKS, и другие. С его помощью возможно настроить собственный прокси-сервер за считанные минуты.

В статье содержится пошаговое руководство по установке утилиты и дальнейшей настройке. Рассмотрены такие вопросы, как: установка с официального источника, настройка файлов конфигурации, открытие нестандартных портов, а также изложены частые ошибки и даны практические рекомендации по их решению. Перед началом работы необходимо заказать VPS или выделенный сервер с операционной системой CentOS или ArchLinux. Все действия в примере будут производиться на выделенном сервере под управлением ОС CentOS7 с одним выделенным статическим публичным IP-адресом.

Установка

Шаг 1

Установка 3proxy производится напрямую из исходников. В качестве компилятора будет использоваться gcc. Подключаемся к серверу, как root (суперпользователь) и устанавливаем компилятор.

yum install gcc

Шаг 2

Теперь необходимо скачать исходные файлы 3proxy. Сделать это можно перейдя на официальный сайт и скопировав ссылку на актуальную версию:

Установка 3proxy

Также можно взять ссылку напрямую с GitHub, если требуется архивная версия:

Установка 3proxy с Github

На момент написания статьи актуальная версия 0.9.3. Скачиваем ee и сразу распаковываем:

wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz
tar -xvzf 0.9.3.tar.gz

Шаг 3

Переходим в директорию с распакованным проектом и компилируем:

cd 3proxy-0.9.3/
make -f Makefile.Linux

Шаг 4

Создаем каталоги и копируем файл 3proxy в /usr/bin:

mkdir -p /var/log/3proxy
mkdir /etc/3proxy
cp bin/3proxy /usr/bin/

Настройка 3proxy

Шаг 5

Создание пользователя для работы с каталогом. В данном случае имя пользователя 3proxyuser:

useradd -s /usr/sbin/nologin -U -M -r 3proxyuser

Выдаем созданному пользователю права на работу с каталогами:

chown -R 3proxyuser:3proxyuser /etc/3proxy
chown -R 3proxyuser:3proxyuser /var/log/3proxy
chown -R 3proxyuser:3proxyuser /usr/bin/3proxy

Создадим файл конфигурации командой:

touch /etc/3proxy/3proxy.cfg

По желанию можно выставить права на файл конфигурации для root пользователя. Этот шаг не обязателен, но добавит защиту:

chmod 600 /etc/3proxy/3proxy.cfg

Шаг 6

Необходимо правильно заполнить файл конфигурации, который был создан ранее. Для начала узнаем uid и gid пользователя командой:

id 3proxyuser

В нашем случае это следующие значения:

Значения uid и gid

Для заполнения файла конфигурации можно взять готовые конфиги или воспользоваться документацией на официальном сайте. Также по умолчанию уже предустановлен файл с примером, найти его можно по пути /cfg/3proxy.cfg.sample

В качестве примера мы рассмотрим 2 вида конфигурации: с логированием и без него. Каждая строка будет сопровождена комментариями (они помечены символом "#").

Пример готового конфига без логирования:

# Указываем данные пользователя, которые узнали в предыдущей команде
setgid 995
setuid 997

# Пишем NS-сервера. Можно уточнить свои в файле /etc/resolv.conf
nserver 1.1.1.1
nserver 8.8.8.8

# Размер кэша
nscache 65536

# Таймауты
timeouts 1 5 30 60 180 1800 15 60

# Авторизация пользователей по логину/паролю (если требуется). Можно не использовать или указать путь до файла, в котором хранятся данные для авторизации, например, users $/etc/3proxy/.authfile

# Если будете вставлять пароль в формате md5, замените «CL» на «CR», как это указано в примере. Можно использовать 2 способа одновременно.
auth cache strong
users "userproxy:CL:passwordproxy"
users "userproxy2:CR:b89097a7ad0b94f13b3c313ae76699d4 "

# Режим запуска. Обязательно Daemon.
Daemon

# Пишем порт, через который будет происходить http подключение. В примере указан стандартный. Для установки socks подключения используется команда, указанная во второй строке, порт также стандартный.
proxy -p3128
socks -p1080

Мы рассмотрели вариант конфигурационного файла без логирования. Далее создадим файл конфигурации с логированием и авторизацией пользователей, именно он будет использован в дальнейшем при настройке севера.

Обязательно указывайте данные для авторизации, так как сервер может быть обнаружен даже на нестандартных портах.

# Настройка запуска сервера от пользователя userproxy и заданным паролем passwordproxy.
users userproxy:CL:passwordproxy

# Указываем uid и gid пользователя
setgid 995
setuid 997

# Сервера имен (NS-сервера)
nserver 1.1.1.1
nserver 8.8.8.8

# Таймауты
timeouts 1 5 30 60 180 1800 15 60

# Размер кэша (стандартный)
nscache 65536

# Указываем режим запуска
daemon

# Установим http proxy на нестандартном порту 50001. Если на сервере IP-адресов несколько, обязательно укажите конкретный адрес для выхода в сеть. Например, «-e91.150.32.146». В качестве аргумента «i» используется локальный адрес.
proxy –p50001

# Установим аналогично socks proxy на порт 50002
socks –p50002

# Путь к директории с логами, формат логов и ротация прокси
Log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30

На этом настройка основного файла конфигурации подошла к концу. Переходим к завершающему этапу и запуску.

Шаг 7

Создаем файл инициализации для systemd:

touch /etc/systemd/system/3proxy.service

Выдаем соответствующие права:

chmod 664 /etc/systemd/system/3proxy.service

Копируем и вставляем в файл следующие значения и сохраняем:

[Unit]
Description=3proxy Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep 3proxyuser`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target»

Обратите внимание: в значении «ExecStop» необходимо указать имя пользователя, которое было создано в шаге №5.

После чего необходимо обновить конфигурацию Daemon командой:

systemctl daemon-reload

Шаг 8

Осталось только запустить настроенный 3proxy, добавить его в автозагрузку, а также открыть порты в firewall.

Добавляем в автозагрузку, запускаем и проверяем статус:

systemctl enable 3proxy
systemctl start 3proxy
systemctl status 3proxy

После проверки статуса видим информацию о том, что 3proxy успешно запущен:

Утилита запущена

Осталось открыть порты:

firewall-cmd --zone=public --add-port=50001/tcp
firewall-cmd --zone=public --add-port=50002/tcp
firewall-cmd –reload

При необходимости перезагружаем сервер. Проверить открылись ли порты можно командой:

firewall-cmd --list-all

Должно быть:

Открытые порты firewall

Как видно, оба порта успешно открылись и прослушиваются. На первом http-подключение, на втором socks.

Проверяем подключение через любой удобный сервис:

Успешная настройка

Все работает. Со своей стороны, мы не рекомендуем использование незащищенного подключения без авторизации по логину/паролю, а также со стандартным набором портов. При настройке файла конфигурации обязательно указывайте логин и создавайте сложный пароль, а также меняйте порты на нестандартные. В исключительных случаях возможно использование авторизации по IP-адресу

Распространенные проблемы

Что-то не работает? Возможно настройка 3proxy была выполнена с ошибкой. Рассмотрим основные проблемы:

Отсутствует подключение

Самой частой проблемой многих пользователей является недоступное подключение при, казалось бы, правильной настройке конфигурационных файлов. Если Вы уверены, что вся настройка произведена верно, хостинг-провайдер не ограничивает выбранный порт и все данные свидетельствуют о рабочем сервисе, проблема может быть в Firewall, а точнее его неправильной настройке. Например, в системе может быть установлено более двух программ, которые будут конфликтовать между собой. Для решения проблемы достаточно использовать один конкретный Firewall. Советуем остановиться только на iptables или firewall-cmd.

Сервис не запускается

Не запускается сервис после настройки всех необходимых файлов конфигурации. Такое возникает в тех случаях, когда пропущен какой-либо шаг по настройке, не выданы соответствующие разрешения или допущена незначительная ошибка в файлах конфигурации. Рекомендуем внимательно изучить инструкцию пошагово еще раз, возможно, Вы что-то упустили. Если ничего не помогает, будет разумнее переустановить ОС и выполнить все шаги с начала. Рекомендуем в качестве тестового конфига использовать sample, который расположен по пути /cfg/3proxy.cfg.sample, а в качестве firewall предустановленный firewall-cmd.

Логирование журналов

Заключительная, но не менее важная проблема связана с хранением файлов. 3proxy при установке занимает несколько мб, но со временем размер может быть увеличен в разы только за счет логирования. Дело в том, что многие пользователи включают запись логов в отдельный файл, но не устанавливают ротацию и не удаляют неактуальные логи. Для решения этой проблемы можно использовать 3 варианта:

  1. Отключить логирование;
  2. Периодически удалять неактуальные логи;
  3. Включить ротацию, как это было выполнено в конфиге выше. Например, «rotate 30» в файле конфигурации означает, что 3proxy будет хранить только 30 последних файлов.

Заключение

Установка и настройка 3proxy на операционных системах CentOS и ArchLinux является достаточно простой, но в то же время и эффективной задачей. В статье были рассмотрены шаги по установке необходимых пакетов, настройке конфигурационных файлов и запуску сервиса. Полученные знания позволят установить и настроить свой прокси-сервер самостоятельно без каких-либо затруднений.

Предыдущая статья Как изменить размер раздела диска в OS Windows
Следующая статья Как сменить пароль учетной записи на Windows

Задайте вопрос

Мы всегда готовы ответить на Ваши вопросы в любое время суток.
Пожалуйста, проверьте нашу Базу Знаний, скорее всего ответ на ваш вопрос там уже есть!