DevOps

Как настроить несколько портов 3proxy на Ubuntu: шаги

Пошаговое руководство: настройка нескольких портов 3proxy на Ubuntu — единый конфиг с proxy -p, users.conf, открытие портов (ufw/iptables), проверка и отладка.

Как настроить несколько экземпляров 3proxy на VPS Ubuntu для использования множества портов?

Я успешно установил 3proxy на Ubuntu VPS через PuTTY, создал пользователя, пароль и настроил порт 10001. Прокси работает в формате http://wrgyer:wwerr@85.122.95.212:10001.

Мне нужно настроить несколько портов (например, 10001, 10002, 10003, 10004) с использованием тех же учетных данных, чтобы получить следующие прокси:

Подробно опишите, как это сделать.

3proxy несколько портов на VPS Ubuntu настраивается просто: добавьте в конфигурацию 3proxy несколько директив proxy (или socks) для портов 10001–10004 и используйте один файл пользователей с учетными данными wrgyer:CL:wwerr. Ниже — пошаговая инструкция для 3proxy ubuntu: где найти конфиг, как создать users.conf, пример 3proxy.cfg, открытие портов (ufw/iptables), перезапуск сервиса и тестирование через curl.


Содержание


Как это работает и краткая схема: 3proxy несколько портов

3proxy слушает на тех портах, которые вы перечисляете в конфигурации (директивы proxy / socks с опцией -p), или можно запускать несколько процессов с разными конфиґами. Для HTTP-прокси используется директива proxy -p<port>, для SOCKS5 — socks -p<port>. В конфиге обычно задают общую авторизацию (auth strong) и подключают файл с пользователями (пример: include /etc/3proxy/users.conf). Подробно о директивах — в официальной документации 3proxy (см. proxy, flush, auth) на странице мануала: https://3proxy.ru/doc/man3/3proxy.cfg.3.html и в ман-странице https://linux.die.net/man/3/3proxy.cfg.

Зачем два подхода? Если нужно несколько портов на одном IP — проще один конфиг с несколькими proxy -p.... Если нужен каждый порт на своей внешней IP (или отдельный процесс) — полезны множественные экземпляры (см. раздел про мультиинстансы и пример из практики: https://github.com/3proxy/3proxy/issues/647).


Требования и проверка: 3proxy ubuntu, 3proxy установка

Перед началом убедитесь, что:

  • 3proxy уже установлен (вы упомянули, что установили через PuTTY). Для справки по установке можно посмотреть руководство: https://serverspace.io/support/help/how-to-setup-3proxy-on-ubuntu-20-04/.
  • У вас есть права sudo на VPS.
  • Сеть VPS позволяет открывать нужные порты (облачноe firewall / security group).
  • Путь до конфигурации: чаще /etc/3proxy/3proxy.cfg или /usr/local/etc/3proxy/3proxy.cfg — найдите так:
bash
sudo systemctl status 3proxy
which 3proxy
sudo grep -R "3proxy.cfg" /etc /usr/local 2>/dev/null
ps aux | grep -i 3proxy

Сделайте резервную копию текущего конфига:

bash
sudo cp /etc/3proxy/3proxy.cfg /etc/3proxy/3proxy.cfg.bak

Один экземпляр 3proxy — настройка нескольких портов (простой способ)

Это самый прямой путь: в одном 3proxy.cfg добавить строки proxy для каждого порта. Пошагово.

  1. Создайте каталог и файл пользователей (одни и те же логин/пароль для всех портов):
bash
sudo mkdir -p /etc/3proxy
sudo bash -c 'cat > /etc/3proxy/users.conf <<EOF
wrgyer:CL:wwerr
EOF'
sudo chmod 600 /etc/3proxy/users.conf

Формат строки login:CL:passwordCL означает clear text. Пример и рекомендации к users.conf — в блоге с примером конфигурации: https://www.proxyrack.com/blog/setup-basic-3proxy-configuration/.

  1. Отредактируйте основной конфиг (пример минимального / читаемого конфига):
bash
sudo bash -c 'cat > /etc/3proxy/3proxy.cfg <<EOF
nscache 65536
nserver 8.8.8.8
nserver 8.8.4.4

log /var/log/3proxy/3proxy-%y%m%d.log D
rotate 60

auth strong
include /etc/3proxy/users.conf
flush
proxy -p10001 -n
flush
proxy -p10002 -n
flush
proxy -p10003 -n
flush
proxy -p10004 -n
EOF'

Пояснения: auth strong включает проверку пользователей; include подключает users.conf; flush завершает ACL-блок (рекомендуется при разделении правил); -n отключает NTLM; для SOCKS5 используйте socks -pPORT -n.

  1. Создайте папку для логов:
bash
sudo mkdir -p /var/log/3proxy
sudo chown root:root /var/log/3proxy
sudo chmod 750 /var/log/3proxy
  1. Откройте порты (ufw пример):
bash
sudo ufw allow 10001/tcp
sudo ufw allow 10002/tcp
sudo ufw allow 10003/tcp
sudo ufw allow 10004/tcp

Или через iptables:

bash
sudo iptables -I INPUT -p tcp --dport 10001 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 10002 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 10003 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 10004 -j ACCEPT

Не забудьте сохранить правила iptables (например, iptables-persistent) и проверить правила в облачном firewall.

  1. Перезапустите сервис 3proxy:
bash
sudo systemctl daemon-reload
sudo systemctl restart 3proxy
sudo systemctl enable 3proxy

Если ваша система использует init-скрипты: sudo service 3proxy restart.

  1. Проверка, что порты слушают:
bash
sudo ss -tlpn | grep 3proxy
# или
sudo netstat -tlpn | grep 3proxy
  1. Тест из локальной машины (пример curl):
bash
curl -x http://wrgyer:wwerr@85.122.95.212:10001 https://example.com
curl -x http://wrgyer:wwerr@85.122.95.212:10002 https://ifconfig.me

Если ответ приходит — всё работает. В блоге с примером аналогичного теста показан точно такой же подход: https://www.proxyrack.com/blog/setup-basic-3proxy-configuration/.

Примечания и тонкости:

  • Если вы уже использовали другую форму подключения users (например, users $/conf/passwd в вашем инсталляторе), адаптируйте путь в include/users под вашу систему (пример в руководстве установки: https://serverspace.io/support/help/how-to-setup-3proxy-on-ubuntu-20-04/).
  • Можно записать несколько портов одной строкой (например, диапазон), но явное перечисление даёт больше контроля и читаемости.

Множественные экземпляры 3proxy — когда нужен каждый процесс

Иногда нужно, чтобы каждый процесс имел своё окружение или выходил через разный внешний IP. Тогда создают отдельные конфиги и запускают несколько экземпляров 3proxy (systemd template или отдельные сервисы). Примерный алгоритм:

  1. Создайте шаблон systemd /etc/systemd/system/3proxy@.service:
ini
[Unit]
Description=3proxy instance %i
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy-%i.cfg
Restart=on-failure

[Install]
WantedBy=multi-user.target

Убедитесь в пути до бинаря (which 3proxy) и поправьте ExecStart.

  1. Создайте конфиґи /etc/3proxy/3proxy-10001.cfg, /etc/3proxy/3proxy-10002.cfg и т.д. — в каждом только нужный proxy -p10001 -n и своя логика. Если у вас несколько внешних IP, можно для исходящего трафика задать -e (bind outgoing IP) в директиве proxy, пример в обсуждении практического использования: https://github.com/3proxy/3proxy/issues/647.

  2. Запустите:

bash
sudo systemctl daemon-reload
sudo systemctl start 3proxy@10001
sudo systemctl enable 3proxy@10001

Плюс этого подхода — изоляция, гибкость, возможность задать индивидуальную лимитацию для каждого экземпляра. Минусы — больше ресурсов и сложность управления.


Открытие портов и правила брандмауэра (ufw / iptables)

  • ufw (быстро):
bash
sudo ufw allow 10001/tcp
sudo ufw allow 10002/tcp
...
sudo ufw reload
  • iptables:
bash
sudo iptables -I INPUT -p tcp --dport 10001 -j ACCEPT
# сохранить правила
sudo apt install iptables-persistent
sudo netfilter-persistent save
  • Облако (AWS/GCP/Hetzner и т.д.): проверьте security group / firewall панели и откройте те же порты там. Иначе внешние подключения будут блокироваться даже при поднятом ufw.

Запуск, проверка и отладка: тестируем порты 10001–10004

Проверки:

  • Порт слушает:
bash
sudo ss -tlpn | grep :1000
  • Лог 3proxy:
bash
sudo tail -n 200 /var/log/3proxy/3proxy-$(date +%Y%m%d).log
  • Проверка прокси через curl:
bash
curl -x http://wrgyer:wwerr@85.122.95.212:10003 https://ifconfig.me
  • Если нужно запустить вручную и увидеть ошибки конфигурации:
bash
sudo $(command -v 3proxy) /etc/3proxy/3proxy.cfg

(это запустит 3proxy в foreground — вы увидите сообщения об ошибках синтаксиса).

Для диагностики systemd:

bash
sudo journalctl -u 3proxy -f
sudo systemctl status 3proxy

Типичные ошибки и исправления

  • “Не проходит авторизация” — проверьте формат users.conf (wrgyer:CL:wwerr), наличие auth strong в конфиге и права на файл (chmod 600 /etc/3proxy/users.conf).
  • “Порт не слушает” — проверьте синтаксис конфига (запуск вручную как выше), ошибки в логах, конфликт порта с другим процессом.
  • “Браузер/скрипт не подключается” — проверьте облачный firewall и локальный ufw/iptables.
  • “Логи пустые” — проверьте директиву log и права на папку /var/log/3proxy.
  • “Нужен SOCKS5” — добавьте socks -p<port> -n в конфиг и откройте соответствующий порт.

Если возникли нестандартные ошибки, смотрите сообщения в log и в справочнике директив: https://3proxy.ru/doc/man3/3proxy.cfg.3.html.


Безопасность, логирование и оптимизация (3proxy socks5 и др.)

  • Храните users.conf с правами 600. Не публикуйте файл в репозиториях.
  • Ограничьте доступ по IP через firewall или директивы allow/deny в конфиге 3proxy, если прокси не предназначен для публичного использования.
  • Лимиты: можно ограничить количество одновременных соединений allow <user> <ip> <ip_mask> <ports> maxconn <n> — полезно при большом трафике.
  • Логирование и ротация: используйте log + rotate директивы (см. пример выше).
  • Если нужен SOCKS5, просто добавьте socks -p<port> -n рядом с HTTP-портами — 3proxy поддерживает оба протокола одновременно.
  • Для высокой нагрузки подумайте о профилировании и, при необходимости, распределении портов между несколькими экземплярами или серверами.

Источники


Заключение

Самый быстрый путь получить прокси на 10001–10004 — в одном конфиге 3proxy добавить соответствующие proxy -p... и использовать единый файл пользователей; затем открыть порты и перезапустить сервис. Если понадобится изоляция по IP или отдельные процессы — переходите на несколько экземпляров через systemd (вариант для продвинутых). Удачи с настройкой 3proxy — если хотите, могу сгенерировать готовый конфиг под вашу текущую систему (пришлите вывод which 3proxy и путь к существующему 3proxy.cfg).

Авторы
Проверено модерацией
Модерация
Как настроить несколько портов 3proxy на Ubuntu: шаги