====== Установка 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