Инструменты пользователя

Инструменты сайта


3proxy

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
3proxy [2026/10/08 09:23] – bonterkoz3proxy [2026/10/13 09:10] (текущий) – bonterkoz
Строка 1: Строка 1:
 ====== Установка 3proxy на Debian ====== ====== Установка 3proxy на Debian ======
 +
 +
 +<code>
 +Тест: 
 +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!
 +
 +</code>
 +
 +<code>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" <<EOF
 +[Unit]
 +Description=3proxy tiny proxy server
 +After=network-online.target
 +Wants=network-online.target
 +
 +[Service]
 +Type=simple
 +User=$SVC_USER
 +Group=$SVC_USER
 +ExecStart=$BIN $CONF
 +Restart=on-failure
 +RestartSec=5
 +LimitNOFILE=65536
 +AmbientCapabilities=CAP_NET_BIND_SERVICE
 +CapabilityBoundingSet=CAP_NET_BIND_SERVICE
 +NoNewPrivileges=true
 +ProtectSystem=strict
 +ProtectHome=true
 +PrivateTmp=true
 +ReadOnlyPaths=$CONF_DIR
 +ReadWritePaths=$LOG_DIR
 +
 +[Install]
 +WantedBy=multi-user.target
 +EOF
 +
 +systemctl daemon-reload
 +systemctl enable -q 3proxy
 +systemctl restart 3proxy
 +sleep 2
 +systemctl is-active --quiet 3proxy || { journalctl -u 3proxy -n 30 --no-pager; die "3proxy не запустился"; }
 +ok "Сервис запущен"
 +
 +PORTS=("$PROXY_PORT"); [[ -n "$SOCKS_PORT" ]] && PORTS+=("$SOCKS_PORT")
 +if command -v ufw >/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
 +</code>
 +Удаление позже тоже одной строкой:
 +<code>
 +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
 +</code>
  
 <code> <code>
Строка 45: Строка 185:
 </code> </code>
  
 +
 +Удаление позже тоже одной строкой:
 +<code>
 +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
 +</code>
  
 <code> <code>
Строка 54: Строка 199:
 </code> </code>
  
-<code> 
-Тест:  
-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! 
- 
-</code> 
  
  
3proxy.1791440619.txt.gz · Последнее изменение: — bonterkoz

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution 4.0 International
CC Attribution 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki