Shadowsocks ሰነድ
አሰሳ
የ Shadowsocks ውቅር ቅርጸት
ፋይልን ያዋቅሩ
Shadowsocks የJSON ቅርጸት ውቅሮችን ይወስዳል፡-
{
"አገልጋይ":"የእኔ_አገልጋይ_ip",
"የአገልጋይ_ወደብ"፡8388፣
"አካባቢያዊ_ወደብ":1080,
"የይለፍ ቃል":"ባርፉ!",
"ዘዴ":"chacha20-ietf-poly1305"
}
JSON ቅርጸት
- አገልጋይ: የአስተናጋጅ ስምዎ ወይም የአገልጋይ አይፒ (IPv4/IPv6)።
- server_port: የአገልጋይ ወደብ ቁጥር.
- local_port: የአካባቢ ወደብ ቁጥር.
- የይለፍ ቃል፡ ማስተላለፍን ለማመስጠር የሚያገለግል የይለፍ ቃል።
- ዘዴ: የምስጠራ ዘዴ.
የምስጠራ ዘዴ
ሰርቨሮቻችንን እናዋቅራለን እና chacha20-ietf-poly1305 AEAD cipher መጠቀም በጣም ጠንካራው የምስጠራ ዘዴ ስለሆነ እንመክራለን።
የራስዎን የ shadowsocks አገልጋይ ካዋቀሩ ከ"chacha20-ietf-poly1305" ወይም "aes-256-gcm" መምረጥ ይችላሉ።
URI እና QR ኮድ
Shadowsocks ለ አንድሮይድ/አይኦኤስ እንዲሁ በ BASE64 የተመሰጠረ የዩአርአይ ቅርፀት ውቅሮችን ይወስዳል፡-
ss://BASE64-የተቀየረ-ሕብረ-ቁምፊ-ያለ ማሸጊያ#TAG
ግልጽው URI፡ ss:// method:password@hostname:port መሆን አለበት።
ከላይ ያለው URI RFC3986 አይከተልም። በዚህ ጉዳይ ላይ ያለው የይለፍ ቃል ግልጽ ጽሑፍ እንጂ በመቶኛ የተቀመጠ መሆን የለበትም።
ምሳሌ፡ 192.168.100.1፡8888 ላይ አገልጋይ እየተጠቀምን ነው። በመጠቀም bf-cfb የምስጠራ ዘዴ እና የይለፍ ቃል ፈተና/!@#:.
ከዚያ ከቀላል ዩአርአይ ጋር ss://bf-cfb:ፈተና/!@#:@192.168.100.1:8888የ BASE64 ኮድ URI መፍጠር እንችላለን፡-
> console.log ("ss://" + btoa("bf-cfb:test/!@#:@192.168.100.1:8888"))
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
እነዚህን ዩአርአይዎች ለማደራጀት እና ለመለየት ለማገዝ ከBASE64 ኮድ ከተቀመጠው ሕብረቁምፊ በኋላ መለያ ማከል ይችላሉ፡
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
አድራሻ ማድረግ
Shadowsocks በ SOCKS5 አድራሻ ቅርፀት የሚገኙትን አድራሻዎች ይጠቀማል፡-
[1-ባይት ዓይነት][ተለዋዋጭ-ርዝመት አስተናጋጅ][2-ባይት ወደብ]
የተገለጹት የአድራሻ ዓይነቶች እነሆ፡-
- 0x01፡ አስተናጋጅ ባለ 4-ባይት IPv4 አድራሻ ነው።
- 0x03: አስተናጋጅ ተለዋዋጭ ርዝመት ሕብረቁምፊ ነው, በ 1-ባይት ርዝመት ይጀምራል, እና ከፍተኛው 255-ባይት የጎራ ስም ይከተላል.
- 0x04፡ አስተናጋጅ ባለ 16-ባይት IPv6 አድራሻ ነው።
የወደብ ቁጥሩ ባለ2-ባይት ትልቅ-ኤንዲያን ያልተፈረመ ኢንቲጀር ነው።
TCP
የss-local ደንበኛ የተመሰጠረ ውሂብን ከዒላማው አድራሻ በመጀመር ከክፍያ ጭነት መረጃ ጋር በመላክ ከኤስኤስ-ርቀት ጋር ግንኙነት ይጀምራል። ምስጠራው በተጠቀመው ምስጠራ ላይ በመመስረት የተለየ ይሆናል።
[የዒላማ አድራሻ] [የክፍያ ጭነት]
የኤስኤስ-ርቀት መቆጣጠሪያው ኢንክሪፕት የተደረገውን መረጃ ይቀበላል፣ከዚያም ዲክሪፕት አድርጎ የዒላማ አድራሻውን ይተነትናል። ከዚያ ከዒላማው ጋር አዲስ የ TCP ግንኙነት ይፈጥራል እና የክፍያ ጭነት ውሂብ ወደ እሱ ያስተላልፋል። ss-remote ከዒላማው ምላሽ ከተቀበለ በኋላ ውሂቡን በማመስጠር ግንኙነቱ እስኪቋረጥ ድረስ ወደ ss-local ያስተላልፋል።
ለመደበቅ ዓላማዎች የአካባቢ እና የርቀት መቆጣጠሪያ የመጨባበጥ መረጃን ከተወሰነ ጭነት ጋር በመጀመሪያው ፓኬት መላክ አለባቸው።
UDP
ss-local ኢንክሪፕትድ የተደረገውን የዳታ ፓኬት ኢላማ አድራሻውን እና ክፍያውን ወደ ኤስኤስ-ርቀት ይልካል።
[የዒላማ አድራሻ] [የክፍያ ጭነት]
ኢንክሪፕት የተደረገው ፓኬት አንዴ ከደረሰ፣ ss-remote ዲክሪፕት አድርጎ የዒላማ አድራሻውን ይተነትናል። ከዚያም አዲስ የውሂብ ፓኬት ከክፍያ ጋር ወደ ዒላማው ይልካል. ss-remote የውሂብ እሽጎችን ከዒላማው ይቀበላል እና የዒላማውን አድራሻ በእያንዳንዱ ፓኬት ውስጥ ካለው ጭነት ጋር ያዘጋጃል። የተመሰጠሩ ቅጂዎች ወደ ss-local ይላካሉ።
[የዒላማ አድራሻ] [የክፍያ ጭነት]
ይህ ሂደት የአውታረ መረብ አድራሻን ለ ss-local በማከናወን ወደ ኤስኤስ-ርቀት መቀቀል ይቻላል።