תיעוד של 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.

התחל את תקופת הניסיון בחינם למשך 5 ימים