Dokumentasyon ng Shadowsocks

Format ng Configuration ng Shadowsocks

I-configure ang File

Kinukuha ng Shadowsocks ang mga configuration ng format ng JSON:

{

    “server”:”my_server_ip”,

    "server_port":8388,

    "local_port": 1080,

    “password”:”barfoo!”,

    “paraan”:”chacha20-ietf-poly1305″

}

Format ng JSON

  • server : ang iyong hostname o server IP (IPv4/IPv6).
  • server_port: numero ng port ng server.
  • local_port: lokal na port number.
  • password: isang password na ginamit upang i-encrypt ang paglipat.
  • paraan: paraan ng pag-encrypt.

Paraan ng Pag-encrypt

Kino-configure namin ang aming mga server at inirerekomenda na gamitin mo ang chacha20-ietf-poly1305 AEAD cipher dahil ito ang pinakamalakas na paraan ng pag-encrypt. 

Kung iko-configure ang iyong sariling shadowsocks server, maaari kang pumili mula sa alinman sa "chacha20-ietf-poly1305" o "aes-256-gcm".

URI at QR Code

Ang Shadowsocks para sa Android / IOS ay kumukuha din ng BASE64 na naka-encode na mga URI format na config:

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

 

Ang simpleng URI ay dapat na: ss://method:password@hostname:port

Ang URI sa itaas ay hindi sumusunod sa RFC3986. Ang password sa kasong ito ay dapat na plain text, hindi percent-encoded.



Halimbawa: Gumagamit kami ng server sa 192.168.100.1:8888 paggamit bf-cfb paraan ng pag-encrypt at password pagsusulit/!@#:

 

Pagkatapos, gamit ang simpleng URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, maaari tayong bumuo ng BASE64 na naka-encode na URI: 

 

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

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

Upang makatulong na ayusin at matukoy ang mga URI na ito, maaari kang magdagdag ng tag pagkatapos ng BASE64 na naka-encode na string:

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

Pagtugon

Ginagamit ng Shadowsocks ang mga address na makikita sa format ng address na SOCKS5:

[1-byte type][variable-length host][2-byte port]

 

Narito ang mga uri ng address na tinukoy:

  • 0x01 : ang host ay isang 4-byte na IPv4 address.
  • 0x03 : ang host ay isang variable na haba ng string, na nagsisimula sa isang 1-byte na haba, na sinusundan ng isang max 255-byte na domain name.
  • 0x04 : ang host ay isang 16-byte na IPv6 address.

 

Ang port number ay isang 2-byte big-endian na unsigned integer.

TCP

Ang ss-local na kliyente ay nagpasimula ng isang koneksyon sa ss-remote sa pamamagitan ng pagpapadala ng naka-encrypt na data na nagsisimula sa target na address na sinusundan ng data ng payload. Magiiba ang encryption depende sa cipher na ginamit.

[target na address][payload]

Natatanggap ng ss-remote ang naka-encrypt na data, pagkatapos ay i-decrypt at i-parse ang target na address. Pagkatapos ay gagawa ito ng bagong koneksyon sa TCP sa target at ipinapasa ang data ng payload dito. Ang ss-remote ay tumatanggap ng tugon mula sa target pagkatapos ay i-encrypt ang data at ipapasa ito pabalik sa ss-local hanggang sa ito ay madiskonekta.

Para sa mga layunin ng obfuscation, dapat ipadala ng lokal at remote ang data ng handshake na may ilang payload sa unang packet.

UDP

Ipinapadala ng ss-local ang naka-encrypt na data packet na naglalaman ng target na address at payload sa ss-remote.

[target na address][payload]

Kapag ang naka-encrypt na packet ay natanggap, ss-remote decrypts at parses ang target na address. Pagkatapos ay nagpapadala ito ng bagong data packet na may payload sa target. Ang ss-remote ay tumatanggap ng mga data packet mula sa target at inilalagay ang target na address sa payload sa bawat packet. Ang mga naka-encrypt na kopya ay ipinadala pabalik sa ss-local.

[target na address][payload]

Ang prosesong ito ay maaaring i-boiled down sa ss-remote na gumaganap ng isang network address translation para sa ss-local.

Simulan ang iyong 5-araw na Libreng pagsubok