Дакументацыя Shadowsocks

Фармат канфігурацыі Shadowsocks

Файл канфігурацыі

Shadowsocks прымае канфігурацыі фармату JSON:

{

    «сервер»: «IP-адрас майго_сервера»,

    «порт_сервера»:8388,

    «лакальны_порт»:1080,

    «пароль»: «Барфу!»,

    «метад»: «chacha20-ietf-poly1305»

}

Фармат JSON

  • сервер: ваша імя хаста або IP-адрас сервера (IPv4/IPv6).
  • server_port: нумар порта сервера.
  • лакальны_порт: лакальны нумар порта.
  • пароль: пароль, які выкарыстоўваецца для шыфравання перадачы.
  • метад: метад шыфравання.

Метад шыфравання

Мы наладжваем нашы серверы і рэкамендуем вам выкарыстоўваць шыфр chacha20-ietf-poly1305 AEAD, таму што гэта самы моцны метад шыфравання. 

Калі вы наладжваеце свой уласны сервер shadowsocks, вы можаце выбраць «chacha20-ietf-poly1305» або «aes-256-gcm».

URI і QR-код

Shadowsocks для Android / 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:тэст/!@#:@192.168.100.1:8888, мы можам стварыць закадаваны URI BASE64: 

 

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

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

Каб дапамагчы арганізаваць і ідэнтыфікаваць гэтыя URI, вы можаце дадаць тэг пасля радка ў кадзіроўцы BASE64:

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

адрасаванне

Shadowsocks выкарыстоўвае адрасы ў фармаце SOCKS5:

[1-байтны тып][хост зменнай даўжыні][2-байтны порт]

 

Вось вызначаныя тыпы адрасоў:

  • 0x01 : хост - гэта 4-байтны адрас IPv4.
  • 0x03 : хост - гэта радок зменнай даўжыні, пачынаючы з даўжыні 1 байт, за якой варта максімум 255-байтавае даменнае імя.
  • 0x04 : хост - гэта 16-байтны адрас IPv6.

 

Нумар порта - гэта 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-дзённую бясплатную пробную версію