שרת פרוקסי משלכם על 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, כך שאיתם היה צריך להגדיר שני שירותים. במאגרי Ubuntu אין חבילת 3proxy, ולכן הסקריפט לוקח את החבילה הרשמית של המפתח ומאמת את סכום הביקורת שלה.
שלב 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 קורא לפקודה אחרת.
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 עם סיסמה נכונה | טעות בשם המשתמש או בסיסמה, או שה-IP שלכם לא ברשימת המותרים | השוו מול /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גישה רק מהכתובת שלכם, אם היא קבועה. במקום YOUR_IP כתבו את ה-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רשימת אבטחה
פרוקסי עם טעות בהגדרת הגישה הופך לציבורי. סורקים עוברים על כתובות של ספקים כל הזמן, ופורט פתוח מגיע מהר לרשימות חינמיות: ואז מחכים לכם תעבורה זרה, ערוץ אכול ותלונות לספק. הסקריפט סוגר את העיקר, והשאר עליכם:
- הפעילו חומת אש בפקודה למטה עם הפורטים מהדוח: החוצה יישארו רק SSH והפרוקסי.
- הפעילו עדכונים אוטומטיים של המערכת. 3proxy הוא חבילה נפרדת, אז אחת לכמה חודשים בדקו אם יצאה גרסה חדשה.
- זכרו ששם המשתמש והסיסמה של הפרוקסי עוברים בלי הצפנה. ברשת ציבורית שכן יכול ליירט אותם, לכן בבתי קפה ובשדות תעופה התחברו לפרוקסי דרך VPN או הגבילו גישה ל-IP שלכם. עוד בניתוח של Wi-Fi ציבורי.
- פעם בחודש עברו על היומן בחיפוש כתובות לא מוכרות ובדקו את ה-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 דק׳ קריאה