Хочу обновить развертывание 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.