Shadowsocks הוא פרוטוקול פרוקסי מוצפן קל משקל, מבוסס SOCKS5, שתוכנן במקור כדי לעקוף עיצוב וחסימה של תעבורה ברשתות רגילות. שלא כמו VPN מלא, הוא מעביר פרוקסי רק לתעבורה שאפליקציה שולחת אליו במפורש, כמעט ואין לו תקורה של פרוטוקול, ועובד היטב גם בחיבורים מוגבלים. הוא לא מנסה לחקות לחיצת יד אמיתית של TLS כמו שעושה VLESS+Reality - הכוח שלו הוא פשטות, תמיכה רחבה בלקוחות (נתבים, טלפונים, דפדפנים) והשהיה נמוכה מאוד, במחיר של קלות יחסית לאיתור טביעות אצבע לפי דפוס תעבורה ברשת שנבדקת בקפידה.
ישנם שני מימושים של שרתים המתוחזקים באופן פעיל:
- shadowsocks-rust - מימוש הייחוס המודרני של ארגון shadowsocks, שנכתב ב-Rust. הוא תומך במשפחת הצפנים החדשה יותר של AEAD-2022, מפותח באופן פעיל, והוא המימוש שמדריך זה מתקין ומגדיר בפירוט.
- shadowsocks-libev - מימוש C ישן יותר. הוא עדיין מתוחזק לצורך תיקוני באגים, נשלח כחבילת apt מוכנה עם יחידות systemd משלה, והוא בחירה טובה אם אתם רוצים את ההתקנה הפשוטה ביותר ללא טיפול ידני בקבצים בינאריים. מדריך זה מכסה אותו כנתיב התקנה חלופי בסעיף 3.
מדריך זה מתאר כיצד להגדיר את השרת באופן ידני דרך שורת הפקודה - מבלי להשתמש בפאנל אינטרנט או ב-Docker. בכל מקום בו מופיע השדה "כתובת IP", החליפו אותו בכתובת ה-IP האמיתית של ה-VPS שלכם.
מה תצטרכו: VPS שמריץ Ubuntu 22.04/24.04 או Debian 11/12, גישת root, כתובת ה-IP של ה-VPS שלכם, ופורט UDP/TCP פנוי (מדריך זה משתמש ב-8388, ברירת המחדל של Shadowsocks).
עדיין אין לכם שרת? ראו כיצד להזמין שרת ולשלם עבורו.
האם כדאי להשוות זאת לאפשרויות אחרות של אירוח עצמי? עיינו במדריך Xray VLESS Reality לחלופה מבוססת TLS-camouflage, במדריך AmneziaWG Server Deployment לאפשרות מבוססת WireGuard, או במדריך Hysteria2 ו-TUIC לשני פרוטוקולי פרוקסי מודרניים אחרים.
התחברות לשרת
חלונות (PuTTY)
פתחו את PuTTY, הזינו את כתובת ה-IP של ה-VPS שלכם בשדה שם המארח, הגדירו את הפורט ל-22, והתחברו כ-root באמצעות הסיסמה ששלח לכם ספק ה-VPS שלכם בדוא"ל.
כתובת IP של השרת: כתובת ה-IP שלך
התחברות בתור: root
סיסמה: הסיסמה שלך
לקבלת מדריך מפורט לגבי התחברות דרך PuTTY/SSH, ראה כיצד להתחבר לשרת לינוקס דרך SSH.
לינוקס / macOS (טרמינל)
ssh root@your_IP_address
כל הפקודות שלהלן מופעלות בשרת, באותו סשן SSH - המכסה את סעיפים 2 עד 7, בנוסף לבדיקות בצד השרת בסעיף 13. סעיפים 8-12 (התקנה וקביעת תצורה של אפליקציות הלקוח) מתרחשים במכשיר Windows/macOS/Linux/Android/iOS שלכם במקום זאת, מכיוון שזה המכשיר שעליו ה-proxy צריך לפעול; כל אחד מהסעיפים הללו מציין במפורש אילו קווים, אם בכלל, עדיין נוגעים בשרת.
הכנת השרת
עדכן את המערכת
לפני התקנת כל דבר, רענן את רשימת החבילות ושדרג את החבילות המותקנות:
apt update -y && apt upgrade -y
אם פעולה זו משדרגת את הליבה, אתחול מחדש הוא רעיון טוב לפני שתמשיך. (לרענון על apt וכיצד מנהלי חבילות בלינוקס פועלים, ראה מנהלי חבילות בלינוקס .) בדוק עם:
cat /var/run/reboot-required
אם הקובץ קיים, אתחל תחילה באמצעות 'reboot', המתן כ-30 שניות, ולאחר מכן התחבר מחדש.
התקן את הכלים בהם משתמש מדריך זה
apt install -y curl wget tar xz-utils ufw qrencode
נדרשים curl/wget ו-tar/xz-utils כדי לאחזר ולפרוק את ארכיון השחרור של shadowsocks-rust; ufw הוא חומת האש שתצורתה מוגדרת להלן; qrencode הופך את קישור הלקוח המוגמר לקוד QR הניתן לסריקה בסעיף 7.
הגדרת חומת האש (UFW)
למידע נוסף על כללי UFW, ראה הגדרת חומת אש בלינוקס.
פתחו את שני הפורטים שתצטרכו: 22/tcp עבור SSH (דלגו על כלל זה ותסתכנו באיבוד גישה לשרת) ו-8388, גם tcp וגם udp — Shadowsocks מבצע פרוקסי גם לחיבורי TCP וגם לאסיוכי UDP (שימושי עבור DNS וכמה משחקים/אפליקציות), כך ששני כיווני הפורט חייבים להיות פתוחים.
ufw allow 22/tcp
ufw allow 8388/tcp
ufw allow 8388/udp
ufw --force enable
ufw status
כל שלושת הכללים אמורים להופיע כ-ALLOW בפלט הסטטוס של ufw. אם תשנו מאוחר יותר את הפורט ב-config.json, עדכנו כללים אלה כך שיתאימו.
התקנת תוכנת השרת
בחרו אחת משתי האפשרויות שלהלן. אפשרות א' (shadowsocks-rust) מומלצת: זהו המימוש המפותח באופן פעיל ותומכת בצפני AEAD-2022 המודרניים שישמשו בהמשך מדריך זה. אפשרות ב' (shadowsocks-libev) היא בחירה טובה אם אתם מעדיפים להשתמש בחבילת apt רגילה עם יחידת systemd מוכנה ואינכם זקוקים ל-AEAD-2022.
אפשרות א' - גרבי צל - חלודה (מומלץ)
Shadowsocks-rust לא שולח חבילת apt עם הגרסאות הנוכחיות, לכן מותקנת על ידי הורדת הקובץ הבינארי הסטטי המובנה מראש מגרסאות GitHub של הפרויקט. יש להביא את תגית הגרסה האחרונה מממשק ה-API של GitHub ולהוריד את ארכיון Linux x86_64 התואם:
SS_VER=$(curl -s https://api.github.com/repos/shadowsocks/shadowsocks-rust/releases/latest | grep -Po '"tag_name": "\K[^"]*')
echo "Latest version: $SS_VER"
cd /root
wget "https://github.com/shadowsocks/shadowsocks-rust/releases/download/${SS_VER}/shadowsocks-${SS_VER}.x86_64-unknown-linux-gnu.tar.xz"
אם ה-VPS שלך הוא arm64 במקום x86_64 (בדוק עם `uname -m`), החלף את x86_64-unknown-linux-gnu ב- aarch64-unknown-linux-gnu בשם הקובץ שלמעלה.
חלץ את הארכיון והתקן את הקבצים הבינאריים בכל המערכת:
tar -xf shadowsocks-*.tar.xz
install -m 755 ssserver ssservice ssmanager ssurl /usr/local/bin/
rm -f shadowsocks-*.tar.xz ssserver ssservice ssmanager ssurl sslocal 2>/dev/null
ודא שהקובץ הבינארי קיים ובדוק את הגרסה המותקנת:
ssserver --version
צור את הספרייה שבה קובץ התצורה ימוקם:
mkdir -p /etc/shadowsocks-rust
מדריך זה מתקין גרסה קבועה במקום להזרים סקריפט מתקין לתוך bash. כדי לשדרג מאוחר יותר, הפעל מחדש את שתי הפקודות לעיל עם חיפוש SS_VER חדש, עצור את השירות, החלף את הקובץ הבינארי והפעל אותו מחדש (סעיף 6).
אפשרות ב' — shadowsocks-libev (חלופה, חבילת apt)
Shadowsocks-libev כלול במאגר היקום של אובונטו (אובונטו 16.10+) ובמאגר הראשי של דביאן (דביאן 8+), כך שאין צורך ב-PPA של צד שלישי בגרסה 22.04/24.04 או דביאן 11/12:
apt install -y shadowsocks-libev
אם apt מדווח שהחבילה לא נמצאה, מאגר היקום מושבת; הפעל אותו ונסה שוב:
add-apt-repository universe && apt update && apt install -y shadowsocks-libev
החבילה מתקינה יחידות systemd משלה (shadowsocks-libev.service עבור תצורת ברירת המחדל, בתוספת [email protected] עבור תצורות בעלות שם לכל מופע) ויוצרת /etc/shadowsocks-libev/config.json באופן אוטומטי - סעיפים 4-6 מציינים את הפקודות והנתיבים הספציפיים ל-libev לצד הפקודות והנתיבים הקודמים. שאר סעיפי הלקוח של מדריך זה (7-13) חלים באופן זהה על כל אחד ממימושי השרת, מכיוון ששניהם משתמשים באותו פרוטוקול Shadowsocks/SIP002 באופן קווי.
יצירת הסיסמה ובחירת צופן
אימות Shadowsocks הוא סיסמה משותפת אחת בתוספת צופן (שיטת הצפנה) ששני הצדדים חייבים להסכים עליו - אין UUID, זוג מפתחות או אישור נפרדים לניהול.
משפחות צופן
- AEAD-2022 (מומלץ, shadowsocks-rust בלבד): 2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm, 2022-blake3-chacha20-poly1305. עיצוב חדש יותר (SIP022) עם הגנה חזקה יותר מפני השמעה חוזרת ותמיכה במספר משתמשים החולקים פורט אחד. הסיסמה חייבת להיות מחרוזת base64 באורך המפתח של הצופן בדיוק (16 בתים עבור גרסאות 128 סיביות, 32 בתים עבור גרסת 256 סיביות).
- AEAD קלאסי (נתמך גם על ידי rust וגם על ידי libev): aes-256-gcm, aes-128-gcm, chacha20-ietf-poly1305. תואם באופן נרחב ללקוחות ישנים יותר ועם shadowsocks-libev; הסיסמה יכולה להיות כל ביטוי סיסמה, מכיוון שהיא מוזנת דרך פונקציית גזירת מפתח ולא משמשת ישירות כחומר מפתח.
מדריך זה משתמש בקובץ 2022-blake3-aes-256-gcm עבור שרת shadowsocks-rust, מכיוון שזוהי האפשרות החזקה והעדכנית ביותר וכל לקוח שמומלץ מאוחר יותר (v2rayN, v2rayNG, Shadowrocket, Streisand, ShadowsocksX-NG) תומך בו. אם התקנתם shadowsocks-libev בסעיף 3, השתמשו ב-chacha20-ietf-poly1305 או aes-256-gcm במקום זאת, מכיוון ש-libev אינו מיישם AEAD-2022.
צור מפתח (shadowsocks-rust)
ssservice genkey -m "2022-blake3-aes-256-gcm"
פעולה זו מדפיסה מחרוזת base64 - זוהי הסיסמה שלך. העתיקו אותה למקום בטוח; תדביקו אותה גם בתצורת השרת בסעיף 5 וגם בקישור הלקוח בסעיף 7.
בחר סיסמה (shadowsocks-libev)
עבור צפני AEAD קלאסיים המשמשים את shadowsocks-libev, כל מחרוזת אקראית ארוכה מספיק עובדת, מכיוון שהיא רצה דרך PBKDF/HKDF במקום להשתמש בה כמפתח גולמי. צור אחד עם:
openssl rand -base64 32
כתיבת תצורת השרת
גרבי צל - חלודה
פתח את קובץ התצורה לעריכה:
nano /etc/shadowsocks-rust/config.json
הדבק את התבנית למטה, והחלף את הסיסמה שלך מסעיף 4 (ואת הפורט מסעיף 2, אם שינית אותו מ-8388):
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "YOUR-GENERATED-KEY-HERE",
"method": "2022-blake3-aes-256-gcm",
"mode": "tcp_and_udp",
"timeout": 300,
"nofile": 51200
}
לחצו Ctrl+O (WriteOut) כדי לשמור את הקובץ, לחצו Enter כדי לאשר את שם הקובץ, לאחר מכן לחצו Ctrl+X כדי לצאת מ-nano.
השדות החשובים: server listens on all interfaces (0.0.0.0); server_port הוא הפורט שנפתח בסעיף 2; password/method הם פרטי הגישה והצופן מסעיף 4; mode מאפשר העברת TCP ו-UDP כאחד; timeout הוא זמן הקצוב לחיבור במצב סרק בשניות; nofile מעלה את מגבלת תיאור הקבצים עבור שרתים עסוקים.
ודא שה-JSON מקבל אותו לפני חיבורו ל-systemd:
ssserver -c /etc/shadowsocks-rust/config.json --help >/dev/null && echo "binary OK"
python3 -m json.tool /etc/shadowsocks-rust/config.json >/dev/null && echo "JSON OK"
צור את יחידת systemd (shadowsocks-rust)
הגרסה הבינארית לא שולחת יחידת systemd, לכן צור אחת:
nano /etc/systemd/system/ssserver.service
[Unit]
Description=Shadowsocks-Rust Server
Documentation=https://github.com/shadowsocks/shadowsocks-rust
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks-rust/config.json
Restart=on-failure
RestartSec=5s
LimitNOFILE=51200
User=root
[Install]
WantedBy=multi-user.target
שמור וצא כפי שנאמר לעיל, לאחר מכן אמור ל-systemd לאסוף את קובץ היחידה החדש:
systemctl daemon-reload
גרבי צל-ליבב
חבילת apt כבר יצרה את /etc/shadowsocks-libev/config.json עם תצורת ברירת מחדל (loopback בלבד, סיסמה אקראית) ויחידת systemd משלה. פתח אותה לעריכה:
nano /etc/shadowsocks-libev/config.json
החלף את התוכן ב:
{
"server":"0.0.0.0",
"server_port":8388,
"password":"YOUR-PASSPHRASE-HERE",
"method":"chacha20-ietf-poly1305",
"mode":"tcp_and_udp",
"timeout":300
}
תצורת ברירת המחדל משתמשת בשרת: ["::1", "127.0.0.1"] (לולאה חוזרת בלבד); שינוי זה ל-"0.0.0.0" הוא מה שהופך את השרת לנגיש מה-IP הציבורי - אל תדלגו על זה אם העתקתם את קובץ הסטנדרט במקום את התבנית למעלה.
הפעלת השירות והפעלת הפעלה אוטומטית
גרבי צל - חלודה
systemctl enable --now ssserver
systemctl status ssserver --no-pager
הסטטוס אמור להראות פעיל (פועל). יש לאשר שמשהו באמת מאזין בפורט (שני הפרוטוקולים):
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'
אם השירות נכשל, הדרך המהירה ביותר לראות מדוע היא יומן systemd (לרקע על קריאת יומני לינוקס באופן כללי, ראו כיצד לקרוא יומני לינוקס והיכן למצוא אותם ):
journalctl -u ssserver -n 50 --no-pager
גרבי צל-ליבב
systemctl restart shadowsocks-libev
systemctl enable shadowsocks-libev
systemctl status shadowsocks-libev --no-pager
בדוק את הפורט והיומנים באותו אופן כמו עבור shadowsocks-rust, תוך החלפת שם השירות:
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'
journalctl -u shadowsocks-libev -n 50 --no-pager
בניית קישור חיבור הלקוח
לקוחות Shadowsocks מייבאים קישור שיתוף יחיד מסוג ss:// (בפורמט URL של SIP002) במקום קובץ הגדרות. הקישור מקודד את הצופן והסיסמה כ-base64 בחלק userinfo של כתובת ה-URL:
ss://base64(method:password)@your_IP_address:port#label
בנה את חלק base64 על השרת (זה מונע שגיאות כתיב כתוצאה מקידוד ידני):
METHOD="2022-blake3-aes-256-gcm"
PASSWORD="YOUR-GENERATED-KEY-HERE"
USERINFO=$(echo -n "${METHOD}:${PASSWORD}" | base64 -w0)
echo "ss://${USERINFO}@your_IP_address:8388#My-SS-Server"
פלט לדוגמה (עם מקש מציין מיקום):
ss://MjAyMi1ibGFrZTMtYWVzLTI1Ni1nY206eHl6X2V4YW1wbGVfa2V5X2hlcmU=@your_IP_address:8388#My-SS-Server
הטקסט שאחרי # הוא רק תווית תצוגה שניתן לשנות את שמה בחופשיות בכל לקוח. עבור שרת shadowsocks-libev, יש להחליף את METHOD="chacha20-ietf-poly1305" (או aes-256-gcm) ואת סיסמתו מסעיף 4.
הפכו אותו לקוד QR כדי שלקוחות ניידים יוכלו לסרוק אותו ישירות:
qrencode -o ~/ss-client.png "ss://${USERINFO}@your_IP_address:8388#My-SS-Server"
העתיקו את קובץ ה-PNG למחשב שלכם באמצעות scp, הפעילו אותו מהטרמינל של המחשב (או PowerShell ב-Windows), לא מהשרת:
scp root@your_IP_address:~/ss-client.png .
התחברות מ-Windows
כל מה שמופיע בסעיף זה קורה במחשב Windows שלך, לא דרך SSH - הלקוח צריך לרוץ על המכשיר שישתמש בפועל בפרוקסי.
התקנת v2rayN
הורידו את קובץ ה-.zip של Windows 64-bit (בנייה עצמאית אינה זקוקה לזמן ריצה נפרד של .NET נכון לגרסאות v2rayN האחרונות), חלצו אותה מכל מקום והפעילו את v2rayN.exe.
ייבא את השרת
העתיקו את הקישור ss:// שנבנה בסעיף 7 ללוח שלכם (או העתיקו את קובץ ה-PNG של ה-QR באמצעות scp ופתחו אותו), לאחר מכן ב-v2rayN בחרו Servers → Import bulk URL from clipboard (או סרקו את קוד ה-QR באמצעות הסורק המובנה). פרופיל השרת החדש מופיע ברשימה עם התווית שהגדרתם אחרי הסימן #.
לחצו לחיצה ימנית על הפרופיל ובחרו אותו כפעיל, לאחר מכן הפעילו את פרוקסי המערכת (או מצב TUN, לניתוב כל המכונה) מסרגל הכלים של החלון הראשי.
התחברות מ-macOS
כל מה שמופיע בסעיף הזה קורה במחשב ה-Mac שלך, לא דרך SSH.
התקנת ShadowsocksX-NG
ShadowsocksX-NG הוא לקוח ממשק משתמש ממשק משתמש מקורי ותיק של macOS עבור Shadowsocks; סדרת המהדורות הנוכחית כוללת גרסת סיליקון מקורית של Apple לצד אינטל. הורידו את ה-.dmg העדכני ביותר מדף המהדורות.
פתחו את קובץ ה-.dmg וגררו את ShadowsocksX-NG לתוך Applications, לאחר מכן הפעילו אותו - הוא מופיע כסמל בשורת התפריטים.
ייבא את השרת
העתיקו את הקישור ss:// מסעיף 7 ללוח, לאחר מכן לחצו על סמל שורת התפריטים ← שרתים ← העדפות שרת ← ה-+ בפינה השמאלית התחתונה, ובחרו "ייבוא מלוח" (או סרקו את קוד ה-QR באמצעות "סרוק קוד QR מהמסך" לאחר פתיחת קובץ ה-PNG). בחרו את הפרופיל החדש מהתפריט הנפתח של שורת התפריטים, לאחר מכן הפעילו את האפשרות "Shadowsocks: מופעל" ובחרו במצב ניתוב "PAC Auto" או "Global" מאותו תפריט.
התחברות משולחן עבודה של לינוקס
כל מה שמופיע בסעיף הזה קורה במחשב הלינוקס שלך, לא בשרת ה-VPS.
התקן את הלקוח המקומי
אם התקנתם את shadowsocks-rust בשרת בסעיף 3, אותו ארכיון גרסה מכיל את sslocal, לקוח פרוקסי מקומי של SOCKS5/HTTP. הורידו והתקינו אותו באותו אופן כמו הקובץ הבינארי של השרת (התאימו את הסיומת OS/arch עבור שולחן העבודה שלכם אם היא לא x86_64-unknown-linux-gnu):
SS_VER=$(curl -s https://api.github.com/repos/shadowsocks/shadowsocks-rust/releases/latest | grep -Po '"tag_name": "\K[^"]*')
wget "https://github.com/shadowsocks/shadowsocks-rust/releases/download/${SS_VER}/shadowsocks-${SS_VER}.x86_64-unknown-linux-gnu.tar.xz"
tar -xf shadowsocks-*.tar.xz
sudo install -m 755 sslocal /usr/local/bin/
הגדרה והפעלה
צור קונפיגורציה מקומית קטנה שמאזינה ל- 127.0.0.1:1080 כפרוקסי של SOCKS5:
mkdir -p ~/.config/shadowsocks-rust
cat > ~/.config/shadowsocks-rust/local.json << 'EOF'
{
"server": "your_IP_address",
"server_port": 8388,
"password": "YOUR-GENERATED-KEY-HERE",
"method": "2022-blake3-aes-256-gcm",
"local_address": "127.0.0.1",
"local_port": 1080,
"mode": "tcp_and_udp"
}
EOF
sslocal -c ~/.config/shadowsocks-rust/local.json
כוון את הגדרות הדפדפן או רשת המערכת שלך לפרוקסי SOCKS5 בכתובת 127.0.0.1:1080. עבור ממשק משתמש גרפי, פורקים בסגנון Nekoray או ShadowsocksX-Qt5 יכולים לייבא את אותו קישור ss:// מסעיף 7 ולנהל את sslocal עבורך במקום להריץ אותו ידנית.
התחברות מאנדרואיד
הכל כאן קורה במכשיר האנדרואיד שלך, לא דרך SSH.
התקנת לקוח
שתי אפשרויות טובות:
- Shadowsocks לאנדרואיד - הלקוח הרשמי של ארגון shadowsocks. התקינו אותו מ-Google Play (חפשו "Shadowsocks"), או הורידו את ה-APK ישירות מדף הגרסאות של הפרויקט אם Play אינו זמין במערכת שלכם. אזור.
- v2rayNG - המקבילה של v2rayN באנדרואיד, תומכת ב- Shadowsocks לצד VLESS/VMess/Trojan; שימושי אם אתם רוצים אפליקציה אחת עבור פרוטוקולים מרובים סוגים.
ייבא את השרת
בכל אחת מהאפליקציות: הקישו על כפתור ה-+, בחרו "ייבוא מהלוח" לאחר העתקת הקישור ss:// מסעיף 7, או "סריקת קוד QR" וכוונו את המצלמה אל קובץ ה-PNG. הקישו על הפרופיל המיובא כדי לבחור אותו, לאחר מכן הקישו על כפתור החיבור. אנדרואיד יבקש הרשאת VPN בפעם הראשונה - אשרו אותו כדי ליצור את המנהרה.
התחברות מ-iOS
הכל כאן קורה באייפון או באייפד שלך, לא דרך SSH.
התקנת לקוח תואם Shadowsocks
Shadowrocket הוא תוכנת iOS הנפוצה ביותר עם תמיכה ב-Shadowsocks; זוהי אפליקציה בתשלום ברוב חנויות האפליקציות. חפשו אותה ב-App Store, או פתחו אותה.
Streisand היא אלטרנטיבה חינמית בקוד פתוח שתומכת גם ב- Shadowsocks לצד VLESS, Trojan ופרוטוקולים אחרים.
קטלוגים של App Store משתנים בהתאם לחנות/אזור ויכולים להשתנות עם הזמן; אם אף אחד מהם אינו גלוי בחנות שלך, חפש ב-App Store "Shadowsocks" או "V2Box".
ייבא את השרת
העתיקו את הקישור ss:// ללוח, פתחו את הלקוח והשתמשו באפשרות הוספה/ייבוא מהלוח, או סרקו את קוד ה-QR מסעיף 7 באמצעות הסורק המובנה של הלקוח. הפעילו את הפרופיל החדש; iOS יבקש הרשאה להגדרת VPN בפעם הראשונה, אותה תצטרכו לאשר באמצעות Face ID, Touch ID או קוד הגישה שלכם.
אימות החיבור
כאשר המנהרה פעילה מסעיפים 8, 9, 10, 11 או 12, חזור למכשיר שלך (לא לסשן ה-SSH) ופתח כל בודק "מה ה-IP שלי" בדפדפן - הכתובת המוצגת צריכה להתאים לכתובת ה-IP של ה-VPS שלך, your_IP_address.
כדי לאמת מצד השרת, בדקו את יומן systemd עבור פעילות חיבור ואשרו הפעלות שהוקמו בפורט (השתמשו ב-ssserver עבור יומן rust, או ב-shadowsocks-libev עבור יומן libev):
journalctl -u ssserver -n 50 --no-pager
ss -tnp | grep ':8388'
התייחסות:
|
שדה |
ערך |
|
כתובת |
כתובת ה-IP הציבורית של ה-VPS שלך |
|
נָמָל |
8388 (אותו נמל שנפתח בסעיף 2) |
|
סיסמה |
המפתח/סיסמה שנוצרו בסעיף 4 |
|
שִׁיטָה |
2022-blake3-aes-256-gcm (rust) או chacha20-ietf-poly1305 (libev) — חייב להתאים בדיוק משני הצדדים |
|
מצב |
tcp_and_udp - מאפשר גם פרוקסי TCP וגם ממסר UDP (DNS, בחלק מהמשחקים) |
|
חיבור |
אף אחד מהם לא נעשה בו שימוש במדריך זה — Shadowsocks אינו זקוק ל-SNI, אישור או תוסף תחבורה כדי לתפקד. |
סיכום
ביצוע מדריך זה משאיר את ה-VPS שלכם מפעיל שרת Shadowsocks משלו - בין אם shadowsocks-rust עם צופן AEAD-2022 מודרני, או shadowsocks-libev מהמאגר של Ubuntu/Debian עצמו - כשירות systemd ששורד אתחול מחדש ללא כל פעולה מצידכם.
הוספת משתמשים נוספים:
- הכי פשוט: צור סיסמה שנייה (סעיף 4) והרץ מופע שני של ssserver/shadowsocks-libev בפורט אחר עם קובץ הגדרות ויחידת systemd משלו, לאחר מכן חזור על סעיפים 5-7 עבור פורט זה.
- shadowsocks-rust עם צופן AEAD-2022 תומך גם במספר משתמשים החולקים פורט אחד ומפתח גזירת סיסמה דרך המערך "users" ב-config.json (כותרות זהות מורחבות, SIP022) - עיין בסעיף התצורה של קובץ README של shadowsocks-rust לקבלת התחביר המדויק אם אתה זקוק לחשבונאות תעבורה לפי משתמש בפורט יחיד.
כמה הרגלים שכדאי לשמור עליהם לאחר שהשרת פועל:
- שמרו על עדכון השרת. עבור shadowsocks-rust, הפעילו מחדש מעת לעת את שלבי ההורדה וההתקנה מסעיף 3 עם חיפוש גרסה חדש, ולאחר מכן הפעילו מחדש את ssserver באמצעות systemctl. עבור shadowsocks-libev, תוכנית apt upgrade רגילה מכסה זאת.
- גבה את config.json במקום פרטי מחוץ לשרת. הוא שומר את הסיסמה של כל לקוח; אובדן שלו פירושו יצירת אישורים מחדש עבור כל מכשיר.
- יש לסובב את הסיסמה אם מכשיר אבד או שלקוח נפרץ: יש ליצור סיסמה חדשה (סעיף 4), לעדכן את config.json, להפעיל מחדש את השירות ולבנות מחדש את קישור הלקוח (סעיף 7) עבור כל מכשיר שנותר.
אם החיבור לא מתחבר, בדוק לפי הסדר:
- סטטוס השירות (systemctl status ssserver --no-pager, או shadowsocks-libev) והיומן (journalctl -u ssserver -n 50 --no-pager)
- כללי חומת האש (מצב ufw - הפורט חייב להיות פתוח גם עבור tcp וגם עבור udp)
- שהפורט אינו מחויב כבר לשירות אחר (ss -lntp | grep ':8388' אמור להציג רק ssserver/ss-server)
- שהסיסמה, המתודה והפורט בלקוח תואמים בדיוק ל- config.json - תו יחיד שאינו תואם נכשל בלחיצת היד באופן שקט, בדרך כלל מוצג כפסק זמן לחיבור ולא כשגיאה מפורשת.
- מצב זה מוגדר ל-tcp_and_udp בשרת אם הלקוח זקוק ל-UDP (DNS-over-proxy, משחקים/אפליקציות מסוימים) ולא רק tcp_only
השוואה בין Shadowsocks לאפשרויות אחרות? עיינו במדריך Xray VLESS Reality Guide לפרוטוקול מבוסס TLS-camouflage שקשה יותר לאתר טביעות אצבע ברשת מסוננת היטב, במדריך AmneziaWG Server Deployment Guide ובמדריך כיצד להגדיר Wireguard VPN בשרת שלכם עבור חלופות מבוססות WireGuard, או בהגדרת Hysteria2 ו-TUIC עבור שני פרוטוקולים שנבנו עבור רשתות עם אובדן נתונים או רשתות עם סינון חזק. אם אתם זקוקים רק לפרוקסי פשוט במקום הגדרת מנהור מלאה, תצורת 3proxy ב-CentOS/ArchLinux היא אלטרנטיבה קלה בהרבה, והגדרת שרת ה-VPN הישנה יותר ב-Linux: PPTP או OpenVPN? מכסה פרוטוקולים שקל יותר להגדיר אך קלים בהרבה ל-DPI לאתר ולחסום אותם. להקשחת שרתים כללית לאחר שהפרוקסי פעיל, עיינו במשתמשי לינוקס: ניהול והרשאות.