Shadowsocks документтери
багыттоо
Shadowsocks конфигурация форматы
Конфигурация файлы
Shadowsocks JSON формат конфигурацияларын алат:
{
“server”:”my_server_ip”,
"server_port":8388,
"жергиликтүү_порт":1080,
"пароль":"барфу!",
"ыкма":"chacha20-ietf-poly1305"
}
JSON форматы
- сервер: сиздин хост аты же сервер IP (IPv4/IPv6).
- server_port: сервер портунун номери.
- local_port: жергиликтүү порт номери.
- сырсөз: которууну шифрлөө үчүн колдонулган сырсөз.
- ыкмасы: шифрлөө ыкмасы.
Шифрлөө ыкмасы
Биз серверлерибизди конфигурациялайбыз жана chacha20-ietf-poly1305 AEAD шифрин колдонууну сунуштайбыз, анткени ал шифрлөөнүн эң күчтүү ыкмасы.
Эгер өзүңүздүн shadowsocks сервериңизди конфигурацияласаңыз, сиз "chacha20-ietf-poly1305" же "aes-256-gcm" ичинен тандай аласыз.
URI & QR коду
Android / IOS үчүн Shadowsocks ошондой эле BASE64 коддолгон URI формат конфигурацияларын алат:
ss://BASE64-КОДДАЛГАН-САТР-ТОЛТУРУУСУЗ#TAG
Жөнөкөй URI болушу керек: ss://method:password@hostname:port
Жогорудагы URI RFC3986га ылайык келбейт. Бул учурда сырсөз пайыздык коддолгон эмес, жөнөкөй текст болушу керек.
Мисал: Биз 192.168.100.1:8888 серверин колдонуп жатабыз колдонуу менен bf-cfb шифрлөө ыкмасы жана сырсөз test/!@#:.
Андан кийин, жөнөкөй URI менен ss://bf-cfb:test/!@#:@192.168.100.1:8888, биз BASE64 коддолгон URI түзө алабыз:
> 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-локалдык кардары максаттуу даректен баштап, андан кийин пайдалуу жүктөө маалыматтары менен шифрленген маалыматтарды жөнөтүү менен ss-remote менен байланышты баштайт. Шифрлөө колдонулган шифрге жараша ар кандай болот.
[максаттуу дарек][пайдалуу жүк]
ss-ремоте шифрленген маалыматтарды кабыл алат, андан кийин максаттуу даректи чечмелейт жана талдайт. Андан кийин ал максатка жаңы TCP байланышын түзөт жана ага пайдалуу жүк берилиштерин жөнөтөт. ss-remote бутадан жооп алат, андан кийин маалыматтарды шифрлейт жана аны ажыратылганга чейин кайра ss-localге жөнөтөт.
Түшүндүрмө максатында, жергиликтүү жана алыскы кол кармашуу маалыматтарын биринчи пакетте кандайдыр бир пайдалуу жүк менен жөнөтүшү керек.
UDP
ss-local максаттуу даректи жана пайдалуу жүктү камтыган шифрленген маалымат пакетин ss-remoteга жөнөтөт.
[максаттуу дарек][пайдалуу жүк]
Шифрленген пакет алынгандан кийин, ss-remote максаттуу даректи чечмелейт жана талдайт. Андан кийин ал максатка пайдалуу жүк менен жаңы маалымат пакетин жөнөтөт. ss-remote бутадан маалымат пакеттерин алат жана максаттуу даректи ар бир пакеттеги пайдалуу жүктүн алдына коёт. Шифрленген көчүрмөлөр кайра ss-localге жөнөтүлөт.
[максаттуу дарек][пайдалуу жүк]
Бул процессти ss-remote үчүн ss-local үчүн тармак дарегин которууну ишке ашырууга чейин кайнатууга болот.