Nyaraka za Shadowsocks

Umbizo la Usanidi wa Shadowsocks

Sanidi Faili

Shadowsocks huchukua usanidi wa umbizo la JSON:

{

    "server":"my_server_ip",

    "bandari_ya_seva":8388,

    "bandari_ya_ndani":1080,

    "nenosiri":"barfoo!",

    "mbinu":"chacha20-ietf-poly1305"

}

Umbizo la JSON

  • seva: jina lako la mwenyeji au IP ya seva (IPv4/IPv6).
  • seva_bandari: nambari ya mlango wa seva.
  • local_port: nambari ya bandari ya ndani.
  • nenosiri: nenosiri linalotumiwa kusimba uhamishaji kwa njia fiche.
  • njia: njia ya usimbaji fiche.

Mbinu ya Usimbaji

Tunasanidi seva zetu na kupendekeza kwamba utumie misimbo ya chacha20-ietf-poly1305 AEAD kwa sababu ndiyo njia thabiti zaidi ya usimbaji fiche. 

Ikiwa unasanidi seva yako ya shadowsocks, unaweza kuchagua kutoka kwa "chacha20-ietf-poly1305" au "aes-256-gcm".

URI na Msimbo wa QR

Shadowsocks za Android / IOS pia huchukua usanidi wa muundo wa URI uliosimbwa wa BASE64:

ss://BASE64-ENCODED-STRING-BILA-PADDING#TAG

 

URI dhahiri inapaswa kuwa: ss://method:password@hostname:port

URI iliyo hapo juu haifuati RFC3986. Nenosiri katika kesi hii linapaswa kuwa maandishi wazi, sio kusimbwa kwa asilimia.



Mfano: Tunatumia seva katika 192.168.100.1:8888 kutumia bf-cfb njia ya usimbaji fiche na nenosiri mtihani/!@#:

 

Kisha, na URI wazi ss://bf-cfb:test/!@#:@192.168.100.1:8888, tunaweza kutoa URI iliyosimbwa ya BASE64: 

 

> console.log( “ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”) )

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

Ili kusaidia kupanga na kutambua URI hizi, unaweza kuongeza lebo baada ya mfuatano uliosimbwa wa BASE64:

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

Akizungumza

Shadowsocks hutumia anwani zinazopatikana katika umbizo la anwani SOCKS5:

[aina ya baiti [aina ya baiti] [kipangishi cha urefu unaobadilika][mlango wa baiti 1]

 

Hapa kuna aina za anwani zilizofafanuliwa:

  • 0x01 : mwenyeji ni anwani ya IPv4 ya baiti 4.
  • 0x03 : mwenyeji ni mfuatano wa urefu unaobadilika, unaoanza na urefu wa baiti 1, ukifuatwa na jina la kikoa cha juu cha baiti 255.
  • 0x04 : mwenyeji ni anwani ya IPv16 ya baiti 6.

 

Nambari ya bandari ni nambari kamili ya baiti 2 isiyo na saini.

TCP

Kiteja cha ss-local huanzisha muunganisho wa ss-remote kwa kutuma data iliyosimbwa kwa njia fiche kuanzia anwani lengwa ikifuatiwa na data ya upakiaji. Usimbaji fiche utakuwa tofauti kulingana na msimbo uliotumika.

[anwani lengwa][payload]

ss-remote hupokea data iliyosimbwa, kisha kusimbua na kuchanganua anwani lengwa. Kisha huunda muunganisho mpya wa TCP kwa lengo na kupeleka data ya upakiaji kwake. ss-remote hupokea jibu kutoka kwa lengwa kisha husimba data kwa njia fiche na kuipeleka mbele kwa ss-local hadi ikakatishwe.

Kwa madhumuni ya kutatiza, ya ndani na ya mbali inapaswa kutuma data ya kupeana mkono ikiwa na kiasi fulani cha malipo kwenye pakiti ya kwanza.

UDP

ss-local hutuma pakiti ya data iliyosimbwa kwa njia fiche iliyo na anwani lengwa na mzigo wa malipo kwa ss-remote.

[anwani lengwa][payload]

Mara tu pakiti iliyosimbwa inapopokelewa, ss-remote inasimbua na kuchanganua anwani inayolengwa. Kisha hutuma pakiti mpya ya data na mzigo wa malipo kwa lengo. ss-remote hupokea pakiti za data kutoka kwa lengwa na kutanguliza anwani lengwa kwa upakiaji katika kila pakiti. Nakala zilizosimbwa kwa njia fiche hurejeshwa kwa ss-local.

[anwani lengwa][payload]

Mchakato huu unaweza kuchemshwa hadi ss-remote kutekeleza utafsiri wa anwani ya mtandao kwa ss-local.

Anza kujaribu bila malipo kwa siku 5