Giriş Kayıt ol

VPS üzerinde kendi proxy sunucunuz: 3proxy kurulumu ve test

Yeni başlayanlar için adım adım: hazır bash betiğiyle VPS'e 3proxy kurun, erişimi dışarıdan test edin, tarayıcıyı bağlayın. Ve ne zaman gerekmediği.

Sıcak ışıklı küçük ev sunucusu ve gece şehrine uzanan kablo

Linux konsolunu hiç açmamış olsanız bile kişisel proxy sunucusu kurabilirsiniz: yükleyicinin kendisi bir dakikaya sığar. Aşağıda adım adım kılavuz var: VPS kiralayın, hazır betiği çalıştırın, erişimi dışarıdan test edin ve tarayıcıyı bağlayın. Sonuç, kullanıcı adı ve parolayla korunan HTTP ve SOCKS5'li tek bir kalıcı IP'dir.

Yazının sonunda kişisel sunucunun hizmete hangi işlerde yenildiğini ele alacağız. Biz de proxy satıyoruz, bu yüzden bunu açıkça söylüyoruz.

Neler gerekli

NeHangisi
Sunucu1 çekirdek ve 512 MB bellekli VPS: kişisel proxy için en küçük tarife yeter
Sistemtemiz Ubuntu 22.04 veya 24.04, Debian 12 veya 13
Erişimroot kullanıcısı ve barındırma firmasının e-postasındaki parola
TerminalWindows 10 ve 11'de PowerShell, macOS ve Linux'ta Terminal

VPS ülkesini baştan işe göre seçin: proxy adresi o ülkeden olacak ve yalnızca başka sunucuya taşınarak değiştirilebilir.

Bu yazıdaki tüm komutları tablodaki dört sistemin temiz imajlarında, her birine 512 MB bellek ve bir çekirdek vererek çalıştırdık. Kurulum 10 ila 31 saniye sürdü, 3proxy yüksüz durumda 8 MB'tan az yer tuttu.

3proxy kuracağız. Tek program hem HTTP hem SOCKS5'e hizmet eder, az bellek harcar ve tek dosyayla ayarlanır. Squid yalnızca HTTP proxy, Dante yalnızca SOCKS olarak çalışır, onlarla iki hizmet ayarlamak gerekirdi. Ubuntu depolarında 3proxy paketi yoktur, bu yüzden betik geliştiricinin resmî paketini alır ve sağlama toplamını doğrular.

Adım 1. Sunucuya bağlanın

Terminal açın ve barındırma firmasının e-postasındaki adresi yazarak komutu girin:

Bilgisayarınız
ssh root@SERVER_IP

İlk girişte sistem sunucuya güvenip güvenmediğinizi sorar: yes yazın. Parola yazılırken görünmez, bu kasıtlıdır. Körlemesine yazın veya yapıştırıp Enter'a basın. Firma root yerine normal kullanıcı verdiyse girişten sonra sudo -i çalıştırın.

Adım 2. Yükleyiciyi çalıştırın

Kopyala'ya basın, bloğun tamamını terminal penceresine yapıştırın ve Enter'a basın. Dosyayı kendisi oluşturur ve çalıştırır.

Sunucu: kurulum
cat > install-proxy.sh <<'SCRIPT'
#!/usr/bin/env bash
# Installs 3proxy with HTTP and SOCKS5, login and password required.
# Ubuntu 22.04+ or Debian 12+. Run as root on a clean server.
set -euo pipefail

VERSION="1.0.2"
CONF_DIR="/usr/local/3proxy/conf"

if [ "$(id -u)" -ne 0 ]; then
  echo "Run as root: sudo bash install-proxy.sh"
  exit 1
fi

case "$(dpkg --print-architecture)" in
  amd64) ARCH="x86_64"; SHA="d42c0a15ab7bc2e129de2e72fedfb6c908bfc1f7b7f4be15368c56eeb21e9a08" ;;
  arm64) ARCH="arm64";  SHA="e7b8f21bc527b30e9b7fd2ebd5889a11eb14889bb45f71074c94c865fc1b2556" ;;
  *) echo "Only amd64 and arm64 servers are supported"; exit 1 ;;
esac

echo "==> Installing packages"
export DEBIAN_FRONTEND=noninteractive NEEDRESTART_SUSPEND=1
APT="apt-get -o DPkg::Lock::Timeout=300"
$APT update -qq
$APT install -y -qq curl openssl ca-certificates >/dev/null

DEB="/tmp/3proxy-$VERSION.$ARCH.deb"
curl -fsSL -o "$DEB" "https://github.com/3proxy/3proxy/releases/download/$VERSION/3proxy-$VERSION.$ARCH.deb"
echo "$SHA  $DEB" | sha256sum -c --quiet -
$APT install -y -qq "$DEB" >/dev/null
rm -f "$DEB"

echo "==> Creating login, password and ports"
LOGIN="user$(openssl rand -hex 3)"
PASS="$(openssl rand -hex 12)"
HTTP_PORT="$(shuf -i 20000-59999 -n 1)"
SOCKS_PORT="$((HTTP_PORT + 1))"

echo "$LOGIN:CL:$PASS" > "$CONF_DIR/passwd"

cat > "$CONF_DIR/3proxy.cfg" <<EOF
nscache 65536
nserver 1.1.1.1
nserver 8.8.8.8
log /logs/3proxy.log D
rotate 7
maxconn 200
users \$/conf/passwd
auth strong
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
deny * * * 25
allow *
proxy -a -p$HTTP_PORT
socks -p$SOCKS_PORT
EOF

chown proxy:proxy "$CONF_DIR/passwd" "$CONF_DIR/3proxy.cfg"
chmod 640 "$CONF_DIR/passwd" "$CONF_DIR/3proxy.cfg"

if command -v ufw >/dev/null && ufw status | grep -q "Status: active"; then
  echo "==> Opening ports in ufw"
  ufw allow "$HTTP_PORT/tcp" >/dev/null
  ufw allow "$SOCKS_PORT/tcp" >/dev/null
fi

echo "==> Starting the service"
systemctl enable 3proxy >/dev/null 2>&1
systemctl restart 3proxy
sleep 2

if ! systemctl is-active --quiet 3proxy; then
  echo "3proxy did not start. Details: journalctl -u 3proxy -n 30"
  exit 1
fi

SERVER_IP=""
for URL in https://ifconfig.me https://api.ipify.org; do
  SERVER_IP="$(curl -s --max-time 20 -x "http://$LOGIN:$PASS@127.0.0.1:$HTTP_PORT" "$URL" || true)"
  [ -n "$SERVER_IP" ] && break
done

if [ -z "$SERVER_IP" ]; then
  echo "The proxy runs but its test request failed. Details: tail /usr/local/3proxy/logs/3proxy.log.*"
  exit 1
fi

umask 077
cat > /root/proxy.txt <<EOF
Server:     $SERVER_IP
HTTP port:  $HTTP_PORT
SOCKS port: $SOCKS_PORT
Login:      $LOGIN
Password:   $PASS

curl -x "http://$LOGIN:$PASS@$SERVER_IP:$HTTP_PORT" https://ifconfig.me
curl --socks5-hostname "$LOGIN:$PASS@$SERVER_IP:$SOCKS_PORT" https://ifconfig.me
bash check-proxy.sh $SERVER_IP $HTTP_PORT $SOCKS_PORT $LOGIN $PASS
EOF

echo
echo "Done. These details are saved in /root/proxy.txt"
echo
cat /root/proxy.txt
SCRIPT
bash install-proxy.sh

Betiğin sırayla yaptıkları:

  • 3proxy paketini kurar ve dosyanın değiştirilmeden indiğini doğrular;
  • rastgele kullanıcı adı, parola ve tarayıcıların 3128 ve 1080'e göre daha az baktığı üst aralıktan iki port üretir;
  • kullanıcı adısız bağlantıyı yasaklar, proxy'den sunucunun iç adreslerine ve bulutun hizmet adreslerine erişimi kapatır;
  • e-posta portu 25'i engeller, parola sızarsa spam gönderenler adresinizi kara listelere sokamaz;
  • HTTP başlıklarından istemci bilgilerini kaldırır: site gerçek IP'nizi görmez;
  • yeniden başlatma sonrası otomatik başlatmayı açar, ufw güvenlik duvarı etkinse portları açar.

Sonunda buna benzer bir rapor görünür, yalnızca sizin değerlerinizle:

Örnek çıktı
Done. These details are saved in /root/proxy.txt

Server:     203.0.113.10
HTTP port:  34512
SOCKS port: 34513
Login:      user4f2a9c
Password:   8c1f0e77a2d94b36c5e1a07d

curl -x "http://user4f2a9c:8c1f0e77a2d94b36c5e1a07d@203.0.113.10:34512" https://ifconfig.me
curl --socks5-hostname "user4f2a9c:8c1f0e77a2d94b36c5e1a07d@203.0.113.10:34513" https://ifconfig.me
bash check-proxy.sh 203.0.113.10 34512 34513 user4f2a9c 8c1f0e77a2d94b36c5e1a07d

Bu bilgileri kendinize kopyalayın. Sunucuda /root/proxy.txt dosyasında durur, cat /root/proxy.txt komutu yeniden gösterir.

Adım 3. Firma panelinde portları açın

Bazı firmalar sunucunun önüne müşteri panelinden ayarlanan kendi ağ güvenlik duvarını koyar. Sizde varsa iki portu da TCP için orada açın. Panelde böyle bölüm yoksa bu adımı atlayabilirsiniz.

Adım 4. Proxy'yi dışarıdan test edin

Test kendi bilgisayarınızdan yapılır: sunucuyu dış dünyanın gözüyle görürsünüz. Linux ve macOS'ta bloğu terminale yapıştırın: check-proxy.sh dosyasını oluşturur. Sonra yükleyici raporunun son satırını yapıştırıp çalıştırın, verileriniz zaten içindedir.

Bilgisayarınız: test
cat > check-proxy.sh <<'SCRIPT'
#!/usr/bin/env bash
# Usage: bash check-proxy.sh HOST HTTP_PORT SOCKS_PORT LOGIN PASSWORD
# Run it from your own computer: only an outside check shows the real picture.
set -u
if [ "$#" -ne 5 ]; then
  echo "Usage: bash check-proxy.sh HOST HTTP_PORT SOCKS_PORT LOGIN PASSWORD"
  exit 2
fi
HOST="$1"; HTTP_PORT="$2"; SOCKS_PORT="$3"; LOGIN="$4"; PASS="$5"
URL="https://ifconfig.me"
FAILED=0

pass() { echo "[ OK ] $1"; }
fail() { echo "[FAIL] $1"; FAILED=$((FAILED + 1)); }
info() { echo "[INFO] $1"; }

MY_IP=$(curl -4 -s --max-time 10 "$URL" || curl -4 -s --max-time 10 https://api.ipify.org || true)
info "Your own IP: ${MY_IP:-unknown}"

HTTP_IP=$(curl -s --max-time 20 -x "http://$LOGIN:$PASS@$HOST:$HTTP_PORT" "$URL" || true)
if [ -n "$HTTP_IP" ]; then pass "HTTP proxy works, exit IP $HTTP_IP"; else fail "HTTP proxy gave no answer"; fi

SOCKS_IP=$(curl -s --max-time 20 --socks5-hostname "$LOGIN:$PASS@$HOST:$SOCKS_PORT" "$URL" || true)
if [ -n "$SOCKS_IP" ]; then pass "SOCKS5 proxy works, exit IP $SOCKS_IP"; else fail "SOCKS5 proxy gave no answer"; fi

if [ -n "$HTTP_IP" ] && [ "$HTTP_IP" = "$MY_IP" ]; then
  info "Exit IP equals your IP: fine on the server itself, a problem anywhere else"
fi

CODE=$(curl -s --max-time 20 -o /dev/null -w "%{http_code}" -x "http://$HOST:$HTTP_PORT" "http://ifconfig.me" || true)
if [ "$CODE" = "407" ]; then pass "HTTP without login is refused (407)"; else fail "HTTP without login returned $CODE, expected 407"; fi

CODE=$(curl -s --max-time 20 -o /dev/null -w "%{http_code}" -x "http://$LOGIN:wrong-$PASS@$HOST:$HTTP_PORT" "http://ifconfig.me" || true)
if [ "$CODE" = "407" ]; then pass "HTTP with a wrong password is refused (407)"; else fail "HTTP with a wrong password returned $CODE, expected 407"; fi

if [ -n "$SOCKS_IP" ]; then
  if curl -s --max-time 20 -o /dev/null --socks5-hostname "$HOST:$SOCKS_PORT" "$URL"; then
    fail "SOCKS5 lets you in without a login: the proxy is open"
  else
    pass "SOCKS5 without login is refused"
  fi
fi

if [ -n "$MY_IP" ] && [ -n "$HTTP_IP" ] && [ "$HTTP_IP" != "$MY_IP" ]; then
  if curl -s --max-time 20 -x "http://$LOGIN:$PASS@$HOST:$HTTP_PORT" "http://ifconfig.me/all" | grep -qF "$MY_IP"; then
    fail "The site can see your own IP in the proxy headers"
  else
    pass "Your own IP is not visible in the headers"
  fi
fi

echo
if [ "$FAILED" -eq 0 ]; then
  echo "All checks passed."
else
  echo "Failed checks: $FAILED"
  exit 1
fi
SCRIPT

Her şey doğru ayarlandıysa çıktı şöyle olur:

Örnek çıktı
[INFO] Your own IP: 198.51.100.7
[ OK ] HTTP proxy works, exit IP 203.0.113.10
[ OK ] SOCKS5 proxy works, exit IP 203.0.113.10
[ OK ] HTTP without login is refused (407)
[ OK ] HTTP with a wrong password is refused (407)
[ OK ] SOCKS5 without login is refused
[ OK ] Your own IP is not visible in the headers

All checks passed.

Windows'ta betik Git Bash'te çalışır. Onsuz PowerShell'de iki komut yeter, her biri sunucunuzun adresini yazdırmalıdır. Tam olarak curl.exe yazın: PowerShell'de sadece curl başka bir komut çağırır.

PowerShell
curl.exe -x "http://LOGIN:PASSWORD@HOST:HTTP_PORT" https://ifconfig.me
curl.exe --socks5-hostname "LOGIN:PASSWORD@HOST:SOCKS_PORT" https://ifconfig.me

Test başarısız olursa

Ne görüyorsunuzSorun nedirNe yapmalı
İki satır da "gave no answer", kod 000sunucuya giden yolda portlar kapalıfirma panelinde ve ufw'de açın, sunucu adresini denetleyin
Proxy yalnızca sunucunun kendisinde yanıt verdifirma veya sağlayıcı güvenlik duvarıadım 3'ü tekrarlayın, firma desteğine yazın
Doğru parolayla kod 407kullanıcı adı veya parolada hata ya da IP'niz izinliler arasında değil/root/proxy.txt ve ayarlardaki allow satırıyla karşılaştırın
SOCKS5 kullanıcı adısız içeri alıyorayarlar elle değiştirilmişyükleyiciyi yeniden çalıştırın, yeni bilgiler verilir
Yükleyici "did not start" yazıyorhizmet başlamadınedene bakın: journalctl -u 3proxy -n 30
Yükleyici "test request failed" yazıyorhizmet çalışıyor ama sunucu proxy üzerinden internete çıkmıyorgünlüğe bakın: tail /usr/local/3proxy/logs/3proxy.log.*
Kurulumda bağımlılık hatasısistem Ubuntu 22.04 ve Debian 12'den eskifirma panelinde güncel bir işletim sistemi kurun

Adım 5. Proxy'yi bağlayın

Tarayıcıda HTTP portunu kullanın: eklentisiz Chrome ve Firefox SOCKS5 için kullanıcı adı ve parola giremez. Nereye ne yazılacağı elle proxy kurulumu yazısında anlatıldı. Programlar genellikle IP:PORT:LOGIN:PASSWORD biçiminde satır kabul eder, başka biçim gerekirse proxy dönüştürücü satırı yeniden yazar.

Bağlandınız mı? Proxy üzerinden anonimlik testini açın: sayfa bir sitenin hangi adresi ve başlıkları gördüğünü gösterir. HTTP'nin SOCKS5'ten farkını ve hangi yazılım için hangi portu alacağınızı protokol karşılaştırmasında anlattık.

Sunucu nasıl yönetilir

Aşağıdaki tüm komutlar sunucuda çalıştırılır. Hizmet durumu ve bugünün bağlantı günlüğü. 3proxy her gün yeni dosya açar ve bir hafta saklar. Günlükten Ctrl+C ile çıkılır:

Sunucu
systemctl status 3proxy --no-pager
tail -f "$(ls -t /usr/local/3proxy/logs/* | head -1)"

Parolayı değiştirme. LOGIN yerine rapordaki kullanıcı adını yazın. Komut yeni parolayı gösterir, eskisi hemen çalışmaz olur, /root/proxy.txt dosyasında önceki bilgiler kalır:

Sunucu
NEW="$(openssl rand -hex 12)"
sed -i "s/^LOGIN:CL:.*/LOGIN:CL:$NEW/" /usr/local/3proxy/conf/passwd
systemctl restart 3proxy
cat /usr/local/3proxy/conf/passwd

İkinci kullanıcı ekleme:

Sunucu
echo "friend:CL:$(openssl rand -hex 12)" >> /usr/local/3proxy/conf/passwd
systemctl restart 3proxy
cat /usr/local/3proxy/conf/passwd

Yalnızca kendi adresinizden izin verme, kalıcıysa. YOUR_IP yerine IP'nizi yazın. Başka adreslerden proxy doğru parolayla bile 407 koduyla yanıt verir:

Sunucu
sed -i 's/^allow \*$/allow * YOUR_IP/' /usr/local/3proxy/conf/3proxy.cfg
systemctl restart 3proxy

Sunucu artık gerekmediğinde her şeyi kaldırma:

Sunucu
systemctl disable --now 3proxy
apt-get purge -y 3proxy </dev/null
rm -rf /usr/local/3proxy /etc/3proxy /root/proxy.txt

Güvenlik listesi

Erişim ayarı hatalı proxy herkese açık hale gelir. Tarayıcılar firma adreslerini sürekli dolaşır ve açık port hızla ücretsiz listelere düşer: sonra sizi başkalarının trafiği, tükenen kanal ve firmaya şikâyetler bekler. Betik temel şeyleri kapatır, gerisi size kalır:

  1. Aşağıdaki komutla rapordaki portları yazarak güvenlik duvarını açın: dışarıya yalnızca SSH ve proxy kalır.
  2. Sistemin otomatik güncellemelerini açın. 3proxy ayrı pakettir, bu yüzden birkaç ayda bir yeni sürüm çıkıp çıkmadığına bakın.
  3. Proxy kullanıcı adı ve parolasının şifresiz iletildiğini unutmayın. Halka açık ağda komşu onları yakalayabilir, bu yüzden kafe ve havalimanlarında proxy'ye VPN üzerinden bağlanın veya erişimi kendi IP'nizle sınırlayın. Ayrıntı halka açık Wi-Fi incelemesinde.
  4. Ayda bir günlükte tanımadık adreslere bakın ve sunucu IP'sini RBL kara listelerinden geçirin.
Sunucu
DEBIAN_FRONTEND=noninteractive apt-get install -y ufw unattended-upgrades </dev/null
printf 'APT::Periodic::Update-Package-Lists "1";\nAPT::Periodic::Unattended-Upgrade "1";\n' > /etc/apt/apt.conf.d/20auto-upgrades
ufw allow 22/tcp
ufw allow HTTP_PORT/tcp
ufw allow SOCKS_PORT/tcp
ufw --force enable

SSH'iniz başka porttaysa çalıştırmadan önce 22'yi onunla değiştirin, yoksa sunucuya erişimi kaybedersiniz.

Ne kazanır, ne kaybedersiniz

Kendi VPS'inizProxy hizmeti
Denetim ve günlüklertamamen sizinoperatör tarafında
Adresbir, en fazla birkaçbinlerce adreslik havuzlar
Adres türüfirmanın veri merkeziveri merkezinden ev ve hücresele
KonumVPS'inizin ülkesiülke seçimi, konutta şehir de
Rotasyonhayır, adres kalıcıistek başına veya oturuma göre
Bakımgüncelleme ve çalışma süresi sizdefiyata dahil
Giriş fiyatıVPS kirası artı zamansaatlik abonelikten

Burada en önemlisi adres türü satırıdır. VPS barındırma alt ağında yaşar ve her site bunu otonom sistemden görür: sunucunuzu ASN sorgusuyla denetleyin. Pazar yerleri ve sosyal ağlar bu aralıklara şüpheyle bakar ve kişisel sunucu orada hiçbir şeyi değiştirmez. Adresi ev veya hücresel olmaz.

Parada da yanılsama yok. Ucuz VPS işlemciyi ve kanalı komşularla paylaşır, bu yüzden akşam hız düşüşleri olağandır. Birçok firma trafiği sınırlar ve aşım, proxy hizmetindeki bir gigabayttan belirgin biçimde pahalıdır.

Kendi proxy'niz ne zaman mantıklı

  • Kendi hizmetleriniz için kalıcı IP. Yönetim ve iç paneller yalnızca tek adresten açılır: VPS bunu ucuza ve uzun süreli verir.
  • Kendi makineleriniz arasında tünel. Ofis ve sunucu doğrudan bağlıdır, bu noktadan neyin geçeceğine siz karar verirsiniz.
  • Günlük şartları. Trafik kayıtları yalnızca sizde kalmalıdır.
  • Öğrenme. Kurun, bozun, onarın: proxy'nin içeriden nasıl çalıştığını anlamanın en hızlı yolu budur.

Hizmet ne zaman gerekir

İş birden fazla adres, rotasyon veya belirli bir IP türü istediği anda kişisel sunucu oyundan çıkar: yüzlerce VPS tutmak her tarifeden pahalıdır. Kazıma, fiyat izleme, hesap işleri ve reklam denetimi havuzlarda yaşar. Onlar için tarifelerimiz uygundur: ip:port listeli paketler ve ülke seçimli konut adresleri. Birçok kişi ikisini de tutar: kendi sistemlerine erişim için kişisel sunucu, iş için hizmet havuzu.

Sıradaki okuma

Farklı biçimlerde üç parlayan tünel karanlık veri merkezinde tek kemerde birleşiyor

Proxy

Proxy sunucu türleri: HTTP'nin SOCKS5'ten farkı nedir

Protokol, yazılımın isteği proxy'ye nasıl ilettiğini belirler: HTTP proxy onu tümüyle okur, CONNECT TLS için tünel açar, SOCKS5 akışı aktarır ve UDP'yi destekler. Dört protokolü şema ve tablolarla…

6 dk okuma

Tüm makaleler

Fiyatlar Bir saat ücretsiz deneyin