תיעוד של Shadowsocks
ניווט
פורמט תצורת Shadowsocks
קובץ תצורה
Shadowsocks לוקח תצורות פורמט JSON:
{
"server":"my_server_ip",
"שרת_יציאת":8388,
"local_port":1080,
"סיסמה":"ברפו!",
"שיטה":"chacha20-ietf-poly1305"
}
פורמט JSON
- שרת : שם המארח או ה-IP של השרת שלך (IPv4/IPv6).
- server_port: מספר יציאת שרת.
- local_port: מספר יציאה מקומי.
- סיסמה: סיסמה המשמשת להצפנת העברה.
- שיטה: שיטת הצפנה.
שיטת הצפנה
אנו מגדירים את השרתים שלנו וממליצים להשתמש בצופן chacha20-ietf-poly1305 AEAD מכיוון שזו שיטת ההצפנה החזקה ביותר.
אם אתה מגדיר שרת shadowsocks משלך, אתה יכול לבחור בין "chacha20-ietf-poly1305" או "aes-256-gcm".
URI וקוד QR
Shadowsocks עבור אנדרואיד / IOS לוקחים גם תצורות פורמט URI מקודדות BASE64:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
ה-URI הפשוט צריך להיות: ss://method:password@hostname:port
ה-URI שלמעלה אינו עוקב אחר RFC3986. הסיסמה במקרה זה צריכה להיות טקסט רגיל, לא מקודד באחוזים.
דוגמה: אנו משתמשים בשרת בכתובת 192.168.100.1:8888 באמצעות bf-cfb שיטת הצפנה וסיסמה מִבְחָן/!@#:.
לאחר מכן, עם ה-URI הפשוט ss://bf-cfb:test/!@#:@192.168.100.1:8888, נוכל ליצור את ה-URI המקודד BASE64:
> console.log( “ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”) )
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
כדי לסייע בארגון ובזיהוי URIs אלה, אתה יכול להוסיף תג אחרי המחרוזת המקודדת BASE64:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
פְּנִיָה
Shadowsocks משתמש בכתובות שנמצאות בפורמט הכתובת SOCKS5:
[1-byte type][מארח באורך משתנה][2-byte port]
להלן סוגי הכתובות שהוגדרו:
- 0x01 : המארח הוא כתובת IPv4 של 4 בתים.
- 0x03 : מארח הוא מחרוזת באורך משתנה, שמתחילה באורך של 1 בייט, ואחריה שם דומיין של 255 בייט לכל היותר.
- 0x04 : המארח הוא כתובת IPv16 של 6 בתים.
מספר היציאה הוא מספר שלם של 2 בתים גדול-אנדיאן ללא סימן.
TCP
הלקוח ss-local יוזם חיבור ל-ss-remote על ידי שליחת נתונים מוצפנים המתחילים בכתובת היעד ואחריה נתוני המטען. ההצפנה תהיה שונה בהתאם לצופן שבו נעשה שימוש.
[כתובת יעד][מטען]
ה-ss-remote מקבל את הנתונים המוצפנים, ואז מפענח ומנתח את כתובת היעד. לאחר מכן הוא יוצר חיבור TCP חדש אל היעד ומעביר אליו את נתוני המטען. ss-remote מקבל תשובה מהמטרה ואז מצפין את הנתונים ומעביר אותם בחזרה ל-ss-local עד שהוא מנותק.
למטרות ערפול, מקומי ומרוחק צריכים לשלוח את נתוני לחיצת היד עם מטען מסוים בחבילה הראשונה.
UDP
ss-local שולח את חבילת הנתונים המוצפנת המכילה את כתובת היעד והמטען ל-ss-remote.
[כתובת יעד][מטען]
לאחר קבלת החבילה המוצפנת, ss-remote מפענח ומנתח את כתובת היעד. לאחר מכן הוא שולח חבילת נתונים חדשה עם המטען אל היעד. ss-remote מקבל את מנות הנתונים מהיעד ומצמיד את כתובת היעד למטען בכל מנה. עותקים מוצפנים נשלחים בחזרה ל-ss-local.
[כתובת יעד][מטען]
תהליך זה יכול להיות מצטמצם ל-ss-remote ביצוע תרגום כתובת רשת עבור ss-local.