====== Установка 3proxy на Debian ======
Тест:
curl --connect-to ::speedtest.selectel.ru https://manifest.googlevideo.com/100MB -k -o /dev/null
Должны увидеть, что порт 1234 слушается.
ss -tlnp | grep 1234
Проверка работы прокси
curl -x http://ipinfo.io/ip
curl -x 81.177.140.227:1234 http://ipinfo.io/ip
Проверка открытости/доступности 80 порта с другого VPS:
nc -vz 81.177.140.227 80
Connection to 81.177.140.227 80 port [tcp/http] succeeded!
cat > /tmp/install-3proxy.sh <<'SCRIPT_EOF'
#!/usr/bin/env bash
set -euo pipefail
# ======================= НАСТРОЙКИ =======================
PROXY_PORT="1234" # порт HTTP(S)-прокси
SOCKS_PORT="" # порт SOCKS5, например 1080 (пусто — не поднимать)
PROXY_USER="user" # логин
PROXY_PASS="" # пароль (пусто — сгенерировать)
BLOCK_LOCAL="1" # 1 — запретить через прокси доступ к локальным сетям сервера
# =========================================================
REPO="https://github.com/3proxy/3proxy.git"
SRC_DIR="/usr/local/src/3proxy"
BIN="/usr/local/bin/3proxy"
CONF_DIR="/etc/3proxy"; CONF="$CONF_DIR/3proxy.cfg"
LOG_DIR="/var/log/3proxy"
UNIT="/etc/systemd/system/3proxy.service"
SVC_USER="3proxy"
ok() { echo -e "\e[32m[OK]\e[0m $*"; }
inf() { echo -e "\e[36m[..]\e[0m $*"; }
die() { echo -e "\e[31m[ERR]\e[0m $*" >&2; exit 1; }
[[ $EUID -eq 0 ]] || die "Нужен root"
[[ "$PROXY_USER" =~ ^[A-Za-z0-9._-]+$ ]] || die "Логин: латиница, цифры, . _ -"
[[ -z "$PROXY_PASS" || "$PROXY_PASS" =~ ^[A-Za-z0-9._@%+=-]+$ ]] || die "Недопустимые символы в пароле"
[[ -n "$PROXY_PASS" ]] || PROXY_PASS=$(head -c 64 /dev/urandom | base64 | tr -dc 'A-Za-z0-9' | cut -c1-20)
inf "Установка зависимостей..."
export DEBIAN_FRONTEND=noninteractive
apt-get update -qq
apt-get install -y -qq build-essential git ca-certificates curl >/dev/null
VERSION=$(git ls-remote --tags --refs "$REPO" | awk -F/ '{print $3}' | grep -E '^[0-9]+(\.[0-9]+)+$' | sort -V | tail -n1 || true)
inf "Сборка 3proxy ${VERSION:-master}..."
rm -rf "$SRC_DIR"
git clone -q --depth 1 ${VERSION:+--branch "$VERSION"} "$REPO" "$SRC_DIR"
make -C "$SRC_DIR" -f Makefile.Linux >/tmp/3proxy-build.log 2>&1 || die "Ошибка сборки: /tmp/3proxy-build.log"
systemctl stop 3proxy 2>/dev/null || true
install -m 0755 "$SRC_DIR/bin/3proxy" "$BIN"
ok "Установлен $BIN"
id "$SVC_USER" &>/dev/null || useradd --system --no-create-home --home-dir /nonexistent --shell /usr/sbin/nologin "$SVC_USER"
install -d -m 0750 -o root -g "$SVC_USER" "$CONF_DIR"
install -d -m 0750 -o "$SVC_USER" -g "$SVC_USER" "$LOG_DIR"
[[ -f "$CONF" ]] && cp -a "$CONF" "$CONF.bak.$(date +%Y%m%d-%H%M%S)"
{
echo "nserver 1.1.1.1"
echo "nserver 8.8.8.8"
echo "nscache 65536"
echo "timeouts 1 5 30 60 180 1800 15 60"
echo "log $LOG_DIR/3proxy.log D"
echo 'logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"'
echo "rotate 30"
echo "users $PROXY_USER:CL:$PROXY_PASS"
echo "auth strong"
[[ "$BLOCK_LOCAL" == "1" ]] && echo "deny * * 127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,100.64.0.0/10"
echo "allow $PROXY_USER"
echo "proxy -n -a -p$PROXY_PORT"
[[ -n "$SOCKS_PORT" ]] && echo "socks -p$SOCKS_PORT"
} > "$CONF"
chown root:"$SVC_USER" "$CONF"; chmod 0640 "$CONF"
ok "Конфиг: $CONF"
cat > "$UNIT" </dev/null && ufw status | grep -q "Status: active"; then
for p in "${PORTS[@]}"; do ufw allow "$p/tcp" >/dev/null; done
ok "UFW: открыты порты ${PORTS[*]}"
fi
IP=$(curl -s --max-time 10 -x "http://$PROXY_USER:$PROXY_PASS@127.0.0.1:$PROXY_PORT" https://api.ipify.org || true)
[[ -n "$IP" ]] && ok "Тест через прокси прошёл" || { echo "[!!] Тест не прошёл, см. journalctl -u 3proxy"; IP=$(hostname -I | awk '{print $1}'); }
echo
echo "=============================================================="
echo " HTTP(S): http://$PROXY_USER:$PROXY_PASS@$IP:$PROXY_PORT"
[[ -n "$SOCKS_PORT" ]] && echo " SOCKS5: socks5://$PROXY_USER:$PROXY_PASS@$IP:$SOCKS_PORT"
echo " Конфиг: $CONF Логи: $LOG_DIR/"
echo "=============================================================="
SCRIPT_EOF
sudo bash /tmp/install-3proxy.sh
Удаление позже тоже одной строкой:
sudo systemctl disable --now 3proxy; sudo rm -f /etc/systemd/system/3proxy.service /usr/local/bin/3proxy; sudo systemctl daemon-reload; sudo rm -rf /usr/local/src/3proxy /etc/3proxy /var/log/3proxy; sudo userdel 3proxy
sudo apt install -y build-essential git libevent-dev libssl-dev
cd /usr/local/src
sudo git clone https://github.com/z3APA3A/3proxy.git
cd 3proxy
sudo ln -s Makefile.Linux Makefile
sudo make
sudo make install
sudo mkdir -p /etc/3proxy
sudo mkdir -p /var/log/3proxy
sudo nano /etc/3proxy/3proxy.cfg
uZWGaxpr6TTRNSRmlSNLRfTJcWVxxRkWEIR3akQgIo7xZBxkpp5yyetLD+I6dupafOwWfKho4mTs6dGCcRFlq6xM36fOZR4JndDLuqB6BTnm0vl4EwiS1/wr20hcvPvXet8/7Q8dp470x9RO6ePJipKGTxj+hCgTm2KX8Brkj0mxK0EHaKtJhti1P+PkFJbej3p44eEKQxjz5MCvliyzEKxGilDZk8VWcM1qG9IkYzerYcUjrgBMtxL1WQ4L8S/wCOA/OIuyeHDuaxuJHmQRtN0Idl+Yq4vYFME5UntQauNzlQl4xQkjt14BXPmwhEjyV3A5glbhKiBTo5Ob2EDyGg==
sudo chown -R nobody:nogroup /etc/3proxy
sudo chown -R nobody:nogroup /var/log/3proxy
sudo chmod 600 /etc/3proxy/3proxy.cfg
sudo nano /etc/systemd/system/3proxy.service
[Unit]
Description=3proxy tiny proxy server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/src/3proxy/bin/3proxy /etc/3proxy/3proxy.cfg
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl enable 3proxy
sudo chmod 644 /etc/3proxy/3proxy.cfg
sudo systemctl daemon-reload
sudo systemctl restart 3proxy
sudo systemctl status 3proxy
Удаление позже тоже одной строкой:
sudo systemctl disable --now 3proxy; sudo rm -f /etc/systemd/system/3proxy.service /usr/local/bin/3proxy; sudo systemctl daemon-reload; sudo rm -rf /usr/local/src/3proxy /etc/3proxy /var/log/3proxy; sudo userdel 3proxy
curl -x http://user1:пароль@IP_СЕРВЕРА:8080 https://ifconfig.me
G6pOvs9HySpfoI7OmAscD1woafQszslYehv1qWFPgcx2Hgbz62JsjvYCC7n+Krvd5YVyHGOiU7xGZIw6k1p9T6KYM+GbWlSFYWijC5uBbJDN9lWI/HQ54A==
eTUpzTVDf3PAfAgtVQWwLVR6iQ6xuE0JFTXznjuRya30jcqUf7kHt1EOPK6Sg1lFk/E1sUGtLEElWMVXVBFcMQxHvBZkguaENcjU2PI1suChweW3tRKGNQ==
Обновление Linux
apt-get update
apt update && apt upgrade -y
reboot
sudo apt install -y build-essential git libevent-dev libssl-dev
cd /usr/local/src
*export http_proxy="http://логин:пароль@адрес:порт"
sudo git clone https://github.com/z3APA3A/3proxy.git
cd 3proxy
*ln -sf Makefile.Linux Makefile
sudo ln -s Makefile.Linux Makefile
sudo make
sudo make install
sudo mkdir -p /etc/3proxy
sudo mkdir -p /var/log/3proxy
*sudo apt install nano
sudo nano /etc/3proxy/3proxy.cfg
uZWGaxpr6TTRNSRmlSNLRfTJcWVxxRkWEIR3akQgIo7xZBxkpp5yyetLD+I6dupafOwWfKho4mTs6dGCcRFlq6xM36fOZR4JndDLuqB6BTnm0vl4EwiS1/wr20hcvPvXet8/7Q8dp470x9RO6ePJipKGTxj+hCgTm2KX8Brkj0mxK0EHaKtJhti1P+PkFJbej3p44eEKQxjz5MCvliyzEKxGilDZk8VWcM1qG9IkYzerYcUjrgBMtxL1WQ4L8S/wCOA/OIuyeHDuaxuJHmQRtN0Idl+Yq4vYFME5UntQauNzlQl4xQkjt14BXPmwhEjyV3A5glbhKiBTo5Ob2EDyGg==
Сохраните (Ctrl+O, Enter, Ctrl+X)
sudo find / -type f -name "3proxy.cfg" 2>/dev/null
/etc/3proxy/3proxy.cfg
/root/3proxy/scripts/3proxy.cfg
/usr/local/3proxy/conf/3proxy.cfg
/usr/local/3proxy/conf/3proxy/scripts/3proxy.cfg
*sudo nano /root/3proxy/scripts/3proxy.cfg
sudo nano /etc/3proxy/3proxy.cfg
#!/bin/3proxy
#daemon
chroot /usr/local/3proxy proxy proxy
#include /conf/3proxy.cfg
nserver 8.8.8.8
nserver 8.8.4.4
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
gs2fg3drOP1e2LHjc0SZn9Ov7jpkp6XHoSub+/zAG2Wy3J1NVNXB9g==
auth strong
proxy -n -a -p1234
После сохранения файла (Ctrl+O, Enter, Ctrl+X):
sudo chown -R nobody:nogroup /etc/3proxy
sudo chown -R nobody:nogroup /var/log/3proxy
sudo chmod 600 /etc/3proxy/3proxy.cfg
Найдём, куда установился 3proxy
which 3proxy
find / -name "3proxy" -type f 2>/dev/null
Исправим путь в сервисе
Скорее всего 3proxy лежит в другом месте.
Проверьте вывод find из шага 1 и подставьте правильный путь.
Типичные варианты:
/usr/local/bin/3proxy
/usr/local/3proxy/bin/3proxy
→ /usr/local/src/3proxy/bin/3proxy
ls -la /usr/local/bin/3proxy
→ ls -la /usr/local/src/3proxy/bin/3proxy
Создайте systemd-сервис для автоматического запуска[5]:
sudo nano /etc/systemd/system/3proxy.service
[Unit]
Description=3proxy tiny proxy server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/src/3proxy/bin/3proxy /etc/3proxy/3proxy.cfg
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
включим автозапуск
sudo systemctl enable 3proxy
Перезапустим
sudo chmod 644 /etc/3proxy/3proxy.cfg
sudo systemctl daemon-reload
sudo systemctl restart 3proxy
sudo systemctl status 3proxy
*Удалим старый сервис-файл
sudo systemctl stop 3proxy
sudo rm -f /lib/systemd/system/3proxy.service
Пересоздадим конфиг начисто
sudo bash -c 'cat > /etc/3proxy/3proxy.cfg << EOF
nserver 8.8.8.8
nserver 8.8.4.4
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
A5/YscGlHfY3QUTjoUxxue0vKc6x1ojMRNdQkTPDjPOMXFq5gaTs/Q==
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
auth strong
proxy -n -a -p1234
EOF'
Проверим, что записалось правильно:
cat /etc/3proxy/3proxy.cfg
Вывод должен быть ровно такой (без chroot, без #!):
nserver 8.8.8.8
nserver 8.8.4.4
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
A5/YscGlHfY3QUTjoUxxue0vKc6x1ojMRNdQkTPDjPOMXFq5gaTs/Q==
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
auth strong
proxy -n -a -p1234
Шаг 3: Пересоздадим сервис
sudo bash -c 'cat > /etc/systemd/system/3proxy.service << EOF
[Unit]
Description=3proxy tiny proxy server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF'
Шаг 4: Права и запуск
sudo chmod 644 /etc/3proxy/3proxy.cfg
sudo chmod 644 /etc/systemd/system/3proxy.service
sudo systemctl daemon-reload
sudo systemctl restart 3proxy
sudo systemctl status 3proxy
Проверка скорости
sudo apt update && sudo apt install curl
*curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt update && sudo apt install speedtest -y
speedtest --version
speedtest
Yes
Yes
Должны увидеть, что порт 1234 слушается.
ss -tlnp | grep 1234
Проверка работы прокси
curl -x 94.156.116.115:1234 http://ipinfo.io/ip
sudo apt update
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh # или ваш порт
sudo ufw allow 1234/tcp
sudo ufw enable
sudo ufw status verbose
sudo ufw reset # Сброс
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 91.212.151.141 to any port 22 proto tcp
sudo ufw allow from 91.212.151.141 to any port 1234 proto tcp
sudo ufw allow from 37.110.16.249 to any port 22 proto tcp
sudo ufw allow from 37.110.16.249 to any port 1234 proto tcp
sudo ufw allow from 185.252.144.214 # Все порты с этого IP (TCP/UDP)
sudo ufw enable
Если UFW уже активен
Не используйте reset/enable — добавьте правило на лету:
bash
sudo ufw insert 1 allow from 185.252.144.214 # В начало списка (приоритет)
sudo ufw reload
sudo ufw status numbered
insert 1 ставит правило первым, перезагрузка применит без downtime.
Проверка
sudo ufw status verbose — увидите правило для 185.252.144.214 вверху.
Тест: С этого IP — любой порт OK; с других — только SSH/1234 с разрешённых IP.
удаление правил
sudo ufw delete 1
sudo ufw reload
sudo ufw status numbered