تسجيل الدخول إنشاء حساب

خادم بروكسي خاص على VPS: تثبيت 3proxy والفحص خطوة بخطوة

دليل للمبتدئين خطوة بخطوة: ثبّت 3proxy على VPS بسكربت bash جاهز، وافحص الوصول من الخارج، ووصل المتصفح. وبصدق: متى لا تحتاج إليه.

خادم منزلي صغير بإضاءة دافئة وكابل يمتد نحو مدينة ليلية

يمكنك إنشاء خادم بروكسي شخصي حتى لو لم تفتح وحدة تحكم Linux من قبل: يستغرق المثبت نفسه دقيقة. فيما يلي دليل بالخطوات: استأجر VPS، وشغّل سكربتًا جاهزًا، وافحص الوصول من الخارج، ووصل المتصفح. النتيجة IP دائم واحد مع HTTP وSOCKS5 باسم مستخدم وكلمة مرور.

في نهاية المقال سنبين في أي مهام يخسر الخادم الشخصي أمام الخدمة. نحن نبيع البروكسي بأنفسنا، لذلك نقول هذا صراحة.

ما تحتاج إليه

ماذاأي
الخادمVPS بنواة واحدة و512 MB ذاكرة: تكفي أصغر خطة لبروكسي شخصي
النظامUbuntu 22.04 أو 24.04 أو Debian 12 أو 13 نظيف
الوصولالمستخدم root وكلمة المرور من رسالة الاستضافة
الطرفيةPowerShell في Windows 10 و11، وTerminal في macOS وLinux

اختر بلد VPS حسب المهمة من البداية: سيكون عنوان البروكسي من هذا البلد، ولا يتغير إلا بالانتقال إلى خادم آخر.

شغّلنا كل أوامر هذا المقال على صور نظيفة للأنظمة الأربعة في الجدول، مع 512 MB ذاكرة ونواة واحدة لكل منها. استغرق التثبيت من 10 إلى 31 ثانية، وشغل 3proxy دون حمل أقل من 8 MB.

سنثبت 3proxy. برنامج واحد يخدم HTTP وSOCKS5، ويستهلك ذاكرة قليلة، ويُضبط بملف واحد. يعمل Squid كبروكسي HTTP فقط وDante كـ SOCKS فقط، فمعهما يلزم ضبط خدمتين. لا توجد حزمة 3proxy في مستودعات Ubuntu، لذا يأخذ السكربت الحزمة الرسمية من المطور ويتحقق من مجموعها الاختباري.

الخطوة 1. اتصل بالخادم

افتح الطرفية وأدخل الأمر مع العنوان من رسالة الاستضافة:

حاسوبك
ssh root@SERVER_IP

عند الدخول الأول يسأل النظام هل تثق بالخادم: اكتب yes. لا تظهر كلمة المرور أثناء الكتابة، وهذا مقصود. اكتبها دون رؤية أو ألصقها واضغط Enter. إذا أعطتك الاستضافة مستخدمًا عاديًا بدل root فنفذ sudo -i بعد الدخول.

الخطوة 2. شغّل المثبت

اضغط «نسخ»، وألصق الكتلة كاملة في نافذة الطرفية واضغط Enter. سينشئ الملف ويشغله بنفسه.

الخادم: التثبيت
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

هذا ما يفعله السكربت بالترتيب:

  • يثبت حزمة 3proxy ويتحقق من أن الملف نُزل دون عبث؛
  • ينشئ اسم مستخدم وكلمة مرور عشوائيين ومنفذين من النطاق العلوي، حيث تنظر الماسحات أقل مما في 3128 و1080؛
  • يمنع الاتصال دون اسم مستخدم ويغلق الوصول من البروكسي إلى عناوين الخادم الداخلية وعناوين خدمة السحابة؛
  • يحظر منفذ البريد 25، كي لا يُدخل مرسلو البريد المزعج عنوانك في القوائم السوداء عند تسرب كلمة المرور؛
  • يزيل من ترويسات HTTP بيانات العميل: لن يرى الموقع عنوان IP الحقيقي؛
  • يفعّل التشغيل التلقائي بعد إعادة التشغيل ويفتح المنافذ في ufw إذا كان هذا الجدار الناري نشطًا.

في النهاية يظهر تقرير كهذا، لكن بقيمك:

مثال على الإخراج
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

انسخ هذه البيانات عندك. توجد على الخادم في الملف /root/proxy.txt، ويعرضها الأمر cat /root/proxy.txt مجددًا.

الخطوة 3. افتح المنافذ في لوحة الاستضافة

تضع بعض شركات الاستضافة أمام الخادم جدارها الناري الشبكي، ويُضبط في لوحة العميل. إذا كان لديك واحد فاسمح هناك بالمنفذين عبر TCP. وإذا لم يكن في اللوحة قسم كهذا فيمكنك تخطي هذه الخطوة.

الخطوة 4. افحص البروكسي من الخارج

يجب الفحص من حاسوبك: هكذا ترى الخادم بعيون العالم الخارجي. في Linux وmacOS ألصق الكتلة في الطرفية: ستنشئ الملف check-proxy.sh. ثم ألصق وشغّل السطر الأخير من تقرير المثبت، ففيه بياناتك بالفعل.

حاسوبك: الفحص
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

إذا كان كل شيء مضبوطًا فسيكون الإخراج هكذا:

مثال على الإخراج
[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 يعمل السكربت في Git Bash. ودونه يكفي أمران في PowerShell، وعلى كل منهما طباعة عنوان خادمك. اكتب curl.exe بالضبط: مجرد curl في PowerShell يستدعي أمرًا آخر.

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

إذا لم ينجح الفحص

ما تراهما السببماذا تفعل
السطران «gave no answer»، الرمز 000المنافذ مغلقة في الطريق إلى الخادمافتحها في لوحة الاستضافة وفي ufw، وطابق عنوان الخادم
رد البروكسي على الخادم نفسه فقطجدار ناري للاستضافة أو المزودكرر الخطوة 3، واكتب إلى دعم الاستضافة
الرمز 407 بكلمة مرور صحيحةخطأ في اسم المستخدم أو كلمة المرور، أو عنوانك غير مسموحطابق مع /root/proxy.txt والسطر allow في الإعدادات
يسمح SOCKS5 بالدخول دون اسم مستخدمغُيرت الإعدادات يدويًاشغّل المثبت من جديد، وستحصل على بيانات جديدة
يكتب المثبت «did not start»لم تبدأ الخدمةانظر السبب: journalctl -u 3proxy -n 30
يكتب المثبت «test request failed»الخدمة تعمل، لكن الخادم لا يخرج إلى الإنترنت عبر البروكسيانظر السجل: tail /usr/local/3proxy/logs/3proxy.log.*
خطأ تبعيات عند التثبيتالنظام أقدم من Ubuntu 22.04 وDebian 12أعد تثبيت نظام حديث في لوحة الاستضافة

الخطوة 5. وصل البروكسي

في المتصفح استخدم منفذ HTTP: لا يستطيع Chrome وFirefox دون إضافات إدخال اسم المستخدم وكلمة المرور لـ SOCKS5. أين تدخل ماذا مشروح في مقال إعداد البروكسي يدويًا. تقبل البرامج عادة سطرًا بصيغة IP:PORT:LOGIN:PASSWORD، وإذا احتاجت إلى صيغة أخرى فسيعيد محول البروكسي كتابته.

اتصلت؟ افتح فحص إخفاء الهوية عبر البروكسي: تعرض الصفحة أي عنوان وترويسات يراها الموقع. كيف يختلف HTTP عن SOCKS5 وأي منفذ تأخذ لبرنامج معين مشروح في مقارنة البروتوكولات.

كيف تدير الخادم

كل الأوامر أدناه تُنفذ على الخادم. حالة الخدمة وسجل اتصالات اليوم. ينشئ 3proxy ملفًا جديدًا كل يوم ويحتفظ بها أسبوعًا. للخروج من السجل استخدم Ctrl+C:

الخادم
systemctl status 3proxy --no-pager
tail -f "$(ls -t /usr/local/3proxy/logs/* | head -1)"

تغيير كلمة المرور. ضع اسم المستخدم من التقرير بدل LOGIN. يعرض الأمر كلمة المرور الجديدة، وتتوقف القديمة فورًا، وتبقى في /root/proxy.txt البيانات السابقة:

الخادم
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

إضافة مستخدم ثانٍ:

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

السماح من عنوانك فقط إذا كان دائمًا. ضع IP الخاص بك بدل YOUR_IP. من العناوين الأخرى سيرد البروكسي بالرمز 407 حتى بكلمة مرور صحيحة:

الخادم
sed -i 's/^allow \*$/allow * YOUR_IP/' /usr/local/3proxy/conf/3proxy.cfg
systemctl restart 3proxy

حذف كل شيء عندما لا تحتاج إلى الخادم:

الخادم
systemctl disable --now 3proxy
apt-get purge -y 3proxy </dev/null
rm -rf /usr/local/3proxy /etc/3proxy /root/proxy.txt

قائمة الأمان

يصبح البروكسي ذو الخطأ في ضبط الوصول عامًا. تجوب الماسحات عناوين الاستضافات باستمرار، ويدخل المنفذ المفتوح سريعًا إلى القوائم المجانية: وبعدها تنتظرك بيانات الغرباء والقناة المستهلكة والشكاوى إلى الاستضافة. يغلق السكربت الأساسيات، والباقي عليك:

  1. فعّل الجدار الناري بالأمر أدناه مع منافذ التقرير: يبقى للخارج SSH والبروكسي فقط.
  2. فعّل التحديثات التلقائية للنظام. 3proxy حزمة منفصلة، لذا افحص كل بضعة أشهر هل صدرت نسخة جديدة.
  3. تذكر أن اسم المستخدم وكلمة مرور البروكسي يُنقلان دون تشفير. في شبكة عامة قد يعترضهما جار، لذا في المقاهي والمطارات اتصل بالبروكسي عبر VPN أو قيّد الوصول بعنوانك. التفاصيل في تحليل Wi-Fi العام.
  4. مرة في الشهر راجع السجل بحثًا عن عناوين مجهولة وافحص IP الخادم في القوائم السوداء RBL.
الخادم
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 لديك على منفذ آخر فاستبدل 22 به قبل التشغيل، وإلا فقدت الوصول إلى الخادم.

ما تكسبه وما تخسره

VPS خاصخدمة بروكسي
التحكم والسجلاتلك بالكامللدى المشغل
العناوينواحد، بضعة كحد أقصىمجموعات بآلاف العناوين
نوع العنوانمركز بيانات الاستضافةمن مراكز البيانات إلى المنزلية والجوال
الموقعبلد VPS الخاص بكاختيار البلد، والمدينة في السكني
التدويرلا، العنوان دائملكل طلب أو حسب الجلسة
الصيانةالتحديثات واستمرار العمل عليكضمن السعر
سعر البدءإيجار VPS مع الوقتمن اشتراك بالساعة

أهم ما هنا سطر نوع العنوان. يعيش VPS في شبكة فرعية للاستضافة، ويرى أي موقع ذلك من النظام المستقل: افحص خادمك عبر فحص ASN. تتعامل منصات التسوق والشبكات الاجتماعية بحذر مع هذه النطاقات، ولن يغير الخادم الشخصي شيئًا هناك. لن يصبح عنوانه منزليًا أو جوالًا.

ولا أوهام في المال أيضًا. يتقاسم VPS الرخيص المعالج والقناة مع الجيران، لذا تراجع السرعة مساءً أمر معتاد. كثير من الاستضافات تحد البيانات، والتجاوز يكلف أكثر بوضوح من غيغابايت لدى خدمة بروكسي.

متى يكون البروكسي الخاص مبررًا

  • IP دائم لخدماتك. لوحات الإدارة والداخلية مفتوحة من عنوان واحد فقط: يعطيه VPS برخص ولمدة طويلة.
  • نفق بين أجهزتك. المكتب والخادم متصلان مباشرة، وأنت تقرر ما يمر عبر هذه النقطة.
  • متطلبات السجلات. يجب أن تبقى سجلات البيانات لديك وحدك.
  • التعلم. أنشئ واكسر وأصلح: هكذا تفهم بأسرع طريقة كيف يعمل البروكسي من الداخل.

متى تحتاج إلى خدمة

يخرج الخادم الشخصي من اللعبة بمجرد أن تحتاج المهمة إلى أكثر من عنوان أو تدوير أو نوع IP محدد: صيانة مئات VPS أغلى من أي خطة. يعيش الكشط ومراقبة الأسعار والعمل بالحسابات وفحص الإعلانات على المجموعات. تناسبها خططنا: باقات بقائمة ip:port وعناوين سكنية مع اختيار البلد. كثيرون يحتفظون بالاثنين: خادم شخصي للوصول إلى أنظمتهم ومجموعة خدمة لمهام العمل.

اقرأ أيضًا

مدينة مظلمة بها ظلال معابد وأبراج حديثة تربطها أقواس مضيئة

البروكسي

بروكسي الصين: من يحتاج إلى IP صيني وماذا يقدم له فعليًا

يعيش القسم الصيني من الشبكة وفق قواعده، والنظر إليه من الخارج شبه عديم الفائدة: بعض المواقع لا تستجيب إلا لعناوين من الصين، والأسعار والنتائج تختلف عن العالمية. نشرح المهام التي تتطلب IP صينيًا، وما…

4 دقائق قراءة
ثلاثة أنفاق مضيئة بأشكال مختلفة تلتقي عند قوس واحد في مركز بيانات مظلم

البروكسي

أنواع خوادم البروكسي: كيف يختلف HTTP عن SOCKS5 عمليًا

يقرر البروتوكول كيف يمرر البرنامج الطلب إلى البروكسي: يقرأه بروكسي HTTP كاملًا، ويفتح CONNECT نفقًا لـ TLS، وينقل SOCKS5 التدفق ويدعم UDP. نشرح البروتوكولات الأربعة بمخطط وجداول: أين يهم socks5h،…

6 دقائق قراءة
خريطة بارزة داكنة لأوروبا بخيوط مضيئة بين المدن

البروكسي

بروكسي أوروبا: من يحتاج إلى IP أوروبي وأي خيار تأخذ

تربط المواقع المحتوى ببلد الزائر أكثر فأكثر: تختلف الأسعار والنتائج والمخزون والإعلانات بين برلين وباريس. نستعرض المهام التي تتطلب عنوانًا أوروبيًا ونختار لكل منها أداة: مجمع أوروبا في الباقات للفحوص…

4 دقائق قراءة

كل المقالات

الأسعار جرّب ساعة مجانًا