Дакументацыя 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.