Хочу обновить развертывание 3proxy (не через apt-get install 3proxy, а через ручную установку) на Ubuntu 22.04 Server на текущую дату 17.03.2025, а то я, когда опираясь на заметку: "Из VPS в Беларусии делаем прокси" дошел до этапа связки 3proxy и сервера на котором это все, то сервис 3proxy не стартовал, то логи не пишутся то трафик не идет. Что работало до этого момент вдруг перестало работать на ново создаваемом, а то что было сделано ранее на, наверное, предыдущей версии до сих пор работает. Впрочем, так обычно. Проверил, там была версия 3proxy = 0.9.4, а тут 0.9.5 этого я не учел.

Шаг №1: Обновляю текущую систему до актуального состояния на текущий день (на 17.03.2025)

ekzorchik@srv-home:~$ sudo rm -rf /var/lib/apt/lists

ekzorchik@srv-home:~$ sudo apt-get update && sudo apt-get upgrade -y

Шаг №2: Для этапа последующей сборки из исходников нужно в систему установить некоторые пакеты:

ekzorchik@srv-home:~$ sudo apt-get install -y build-essential net-tools git htop

Шаг №3: Клонирую репозитарий 3proxy на текущую систему:

ekzorchik@srv-home:~$ sudo git clone https://github.com/3proxy/3proxy.git /opt/3proxy

Cloning into '/opt/3proxy'...

remote: Enumerating objects: 5515, done.

remote: Counting objects: 100% (951/951), done.

remote: Compressing objects: 100% (210/210), done.

remote: Total 5515 (delta 800), reused 750 (delta 741), pack-reused 4564 (from 3)

Receiving objects: 100% (5515/5515), 2.30 MiB | 2.18 MiB/s, done.

Resolving deltas: 100% (3868/3868), done.

ekzorchik@srv-home:~$

Шаг №4: Собираю пакет и устанавливаю в систему:

ekzorchik@srv-home:~$ cd /opt/3proxy/

ekzorchik@srv-home:/opt/3proxy$

ekzorchik@srv-home:/opt/3proxy$ sudo make

make: *** No targets specified and no makefile found.  Stop.

ekzorchik@srv-home:/opt/3proxy$ sudo ln -s Makefile.Linux Makefile

ekzorchik@srv-home:/opt/3proxy$ sudo make

ekzorchik@srv-home:/opt/3proxy$ sudo make install

  systemctl start 3proxy.service

to start proxy

  systemctl stop 3proxy.service

to stop proxy

  /usr/local/3proxy/conf/add3proxyuser.sh

to add users

 

Default config uses Google's DNS.

It's recommended to use provider supplied DNS or install local recursor, e.g. pdns-recursor.

Configure preferred DNS in /usr/local/3proxy/conf/3proxy.cfg.

run '/usr/local/3proxy/conf/add3proxyuser.sh admin password' to configure 'admin' user

ekzorchik@srv-home:/opt/3proxy$

ekzorchik@srv-home:/opt/3proxy$ cd ~

ekzorchik@srv-home:~$

Шаг №5: Извлекаю информацию куда в системе установлен 3proxy:

ekzorchik@srv-home:~$ whereis 3proxy

3proxy: /usr/bin/3proxy /etc/3proxy /usr/local/3proxy /opt/3proxy/bin/3proxy /usr/share/man/man8/3proxy.8

ekzorchik@srv-home:~$

ekzorchik@srv-home:~$ cat /opt/3proxy/RELEASE

0.9.5ekzorchik@srv-home:~$

Шаг №6: Проверяю, а вместе с установкой выше создался ли сервис запуска 3proxy вместе с системой:

ekzorchik@srv-home:~$ sudo systemctl status 3proxy

○ 3proxy.service - 3proxy tiny proxy server

     Loaded: loaded (/lib/systemd/system/3proxy.service; enabled; vendor preset: enabled)

     Active: inactive (dead)

       Docs: man:3proxy(1)

ekzorchik@srv-home:~$

ekzorchik@srv-home:~$ cat /lib/systemd/system/3proxy.service

[Unit]

Description=3proxy tiny proxy server

Documentation=man:3proxy(1)

After=network.target

 

[Service]

Environment=CONFIGFILE=/etc/3proxy/3proxy.cfg

ExecStart=/bin/3proxy ${CONFIGFILE}

ExecReload=/bin/kill -SIGUSR1 $MAINPID

KillMode=process

Restart=on-failure

RestartSec=60s

LimitNOFILE=65536

LimitNPROC=32768

RuntimeDirectory=3proxy

 

[Install]

WantedBy=multi-user.target

Alias=3proxy.service

ekzorchik@srv-home:~$

Шаг №7: Активирую сервис 3proxy:

ekzorchik@srv-home:~$ sudo systemctl enable 3proxy

Synchronizing state of 3proxy.service with SysV service script with /lib/systemd/systemd-sysv-install.

Executing: /lib/systemd/systemd-sysv-install enable 3proxy

ekzorchik@srv-home:~$

Шаг №8: Создаю резервную копию дефолтного конфигурационного файла 3proxy:

ekzorchik@srv-home:~$ sudo cp /etc/3proxy/3proxy.cfg /etc/3proxy/3proxy.cfg.backup

Шаг №9: Редактирую конфигурационный файл сервиса 3proxy:

ekzorchik@srv-home:~$ cat /etc/3proxy/3proxy.cfg

#!/bin/3proxy

#daemon

chroot /usr/local/3proxy proxy proxy

include /conf/3proxy.cfg

ekzorchik@srv-home:~$

ekzorchik@srv-home:~$ sudo ls -l /etc/3proxy/conf

lrwxrwxrwx 1 root root 27 Mar 17 13:53 /etc/3proxy/conf -> ../../usr/local/3proxy/conf

ekzorchik@srv-home:~$

ekzorchik@srv-home:~$ sudo ls -l /usr/local/3proxy/conf

total 8

-r--r----- 1 proxy proxy 322 Mar 17 13:53 3proxy.cfg

-r--r----- 1 proxy proxy 472 Mar 17 13:53 add3proxyuser.sh

-r--r----- 1 proxy proxy   0 Mar 17 13:53 bandlimiters

-r--r----- 1 proxy proxy   0 Mar 17 13:53 counters

-r--r----- 1 proxy proxy   0 Mar 17 13:53 passwd

ekzorchik@srv-home:~$

ekzorchik@srv-home:~$ sudo chmod 640 /usr/local/3proxy/conf/3proxy.cfg

ekzorchik@srv-home:~$ sudo -u proxy nano /usr/local/3proxy/conf/3proxy.cfg

nscache 65536

nserver 8.8.8.8

nserver 8.8.4.4

config /conf/3proxy.cfg

monitor /conf/3proxy.cfg

log /logs/3proxy-%y%m%d.log D

rotate 60

counter /count/3proxy.3cf

#users $/conf/passwd

include /conf/counters

include /conf/bandlimiters

auth strong

deny * * 127.0.0.1

allow *

proxy -n

socks

flush

allow admin

admin -p8080

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

Unable to create directory /bin/.local/share/nano/: No such file or directory

It is required for saving/loading search history or cursor positions.

ekzorchik@srv-home:~$

на предупреждение что не сохраняется история игнорирую

или редактируем, что наиболее правильнее:

ekzorchik@srv-home:~$ sudo nano /etc/3proxy/conf/3proxy.cfg

Шаг №10: Перезапускаю сервис 3proxy:

ekzorchik@srv-home:~$ sudo systemctl restart 3proxy && sudo systemctl status 3proxy

● 3proxy.service - 3proxy tiny proxy server

     Loaded: loaded (/lib/systemd/system/3proxy.service; enabled; vendor preset: enabled)

     Active: active (running) since Mon 2025-03-17 14:12:20 MSK; 15ms ago

       Docs: man:3proxy(1)

   Main PID: 101688 (3proxy)

      Tasks: 4 (limit: 4558)

     Memory: 3.0M

        CPU: 3ms

     CGroup: /system.slice/3proxy.service

             └─101688 /bin/3proxy /etc/3proxy/3proxy.cfg

Mar 17 14:12:20 srv-home systemd[1]: Started 3proxy tiny proxy server.

ekzorchik@srv-home:~$

Шаг №11: Проверяю, что сервис ожидаем подключения на порт 8080:

ekzorchik@srv-home:~$ sudo netstat -tulpn | grep 3proxy

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      101688/3proxy

tcp        0      0 0.0.0.0:1080            0.0.0.0:*               LISTEN      101688/3proxy

tcp        0      0 0.0.0.0:3128            0.0.0.0:*               LISTEN      101688/3proxy

ekzorchik@srv-home:~$

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

Шаг №12: Логи подключения к сервису 3proxy можно увидеть:

ekzorchik@srv-home:~$ sudo ls -l /var/log/3proxy

lrwxrwxrwx 1 root root 27 Mar 17 13:53 /var/log/3proxy -> ../../usr/local/3proxy/logs

ekzorchik@srv-home:~$

ekzorchik@srv-home:~$ sudo tail -f /usr/local/3proxy/logs/3proxy-250317.log

1742209926.523 ADMIN.8080 00000 - 0.0.0.0:8080 0.0.0.0:0 0 0 0 Accepting_connections_[101670/365274688]

1742209926.688 PROXY.3128 00000 - 0.0.0.0:0 0.0.0.0:0 0 0 0 Exiting_thread

1742209926.690 SOCKS.1080 00000 - 0.0.0.0:0 0.0.0.0:0 0 0 0 Exiting_thread

1742209926.690 ADMIN.8080 00000 - 0.0.0.0:8080 0.0.0.0:0 0 0 0 Exiting_thread

1742209935.529 PROXY.3128 00000 - 0.0.0.0:0 0.0.0.0:0 0 0 0 Exiting_thread

1742209935.532 SOCKS.1080 00000 - 0.0.0.0:0 0.0.0.0:0 0 0 0 Exiting_thread

1742209935.533 ADMIN.8080 00000 - 0.0.0.0:8080 0.0.0.0:0 0 0 0 Exiting_thread

1742209940.362 PROXY.3128 00000 - 0.0.0.0:0 0.0.0.0:0 0 0 0 Accepting_connections_[101688/4062488128]

1742209940.363 SOCKS.1080 00000 - 0.0.0.0:0 0.0.0.0:0 0 0 0 Accepting_connections_[101688/4062434880]

1742209940.364 ADMIN.8080 00000 - 0.0.0.0:8080 0.0.0.0:0 0 0 0 Accepting_connections_[101688/4062381632]

^C

ekzorchik@srv-home:~$

Шаг №13: Дабы моим прокси не пользовались другие я посредством firewall-cmd ограничиваю кто может к нему подключаться:

ekzorchik@srv-vps01:~$ sudo -u proxy nano /usr/local/3proxy/conf/3proxy.cfg

nscache 65536

nserver 8.8.8.8

nserver 8.8.4.4

config /conf/3proxy.cfg

monitor /conf/3proxy.cfg

log /logs/3proxy-%y%m%d.log D

rotate 60

counter /count/3proxy.3cf

#users $/conf/passwd

include /conf/counters

include /conf/bandlimiters

#auth strong

#deny * * 127.0.0.1

#allow *

#proxy -n

#socks

#flush

#allow admin

#admin -p8080

allow *

parent 1000 http 127.0.0.1 8118

maxconn 1000

proxy -n -p50001 -iWANIPSERVER -e127.0.0.1

auth strong

ekzorchik@srv-vps01:~$ sudo firewall-cmd --new-zone=proxy --permanent

ekzorchik@srv-vps01:~$ sudo firewall-cmd --zone=public --add-port=50001/tcp --permanent

ekzorchik@srv-vps01:~$ sudo firewall-cmd --permanent --zone=proxy --add-source=WAN1-IP/MASK

ekzorchik@srv-vps01:~$ sudo firewall-cmd --permanent --zone=proxy --add-source=WAN1-IP/MASK

ekzorchik@srv-vps01:~$ sudo firewall-cmd --reload

ekzorchik@srv-vps01:~$ sudo firewall-cmd --zone=proxy --list-all

proxy (active)

  target: default

  icmp-block-inversion: no

  interfaces:

  sources: WAN1-IP/MASK WAN2-IP/MASK

  services:

  ports: 50001/tcp 22816/tcp 8118/tcp

  protocols:

  forward: no

  masquerade: no

  forward-ports:

  source-ports:

  icmp-blocks:

  rich rules:

ekzorchik@srv-vps01:~$

Итого пока делаю вывод что все работает. На этом пока все, с уважением автор блога ekzorchik.