Документация на Shadowsocks

Конфигурационен формат на Shadowsocks

Конфигурационен файл

Shadowsocks приема конфигурации на JSON формат:

{

    “сървър”:”моят_сървър_ip”,

    "Server_port": 8388,

    "Local_port": 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 код

Shadowsocks за Android / IOS също приема конфигурации на URI формат, кодиран с BASE64:

ss://BASE64-КОДИРАН-НИЗ-БЕЗ-ПАДИНГ#ТАГ

 

Обикновеният URI трябва да бъде: ss://method:password@hostname:port

Горният URI не следва RFC3986. Паролата в този случай трябва да е обикновен текст, а не процентно кодирана.



Пример: Използваме сървър на 192.168.100.1:8888 използвайки bf-cfb метод на криптиране и парола тест/!@#:

 

След това с обикновения URI ss://bf-cfb:тест/!@#:@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-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-дневен безплатен пробен период