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

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


3proxy

Это старая версия документа!


Установка 3proxy на Debian

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
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==
Тест: 
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!
Обновление 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
3proxy.1791559311.txt.gz · Последнее изменение: — bonterkoz

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