Dokumentacja Shadowsocks

Format konfiguracji Shadowsocks

Plik konfiguracyjny

Shadowsocks przyjmuje konfiguracje formatu JSON:

{

    „serwer”: „my_server_ip”,

    „port_serwera”:8388,

    „lokalny_port”:1080,

    „hasło”: „barfu!”,

    „metoda”: „chacha20-ietf-poly1305″

}

formacie JSON

  • serwer : nazwa hosta lub adres IP serwera (IPv4/IPv6).
  • server_port: numer portu serwera.
  • local_port: numer portu lokalnego.
  • hasło: hasło używane do szyfrowania transferu.
  • metoda: metoda szyfrowania.

Metoda szyfrowania

Konfigurujemy nasze serwery i zalecamy korzystanie z szyfru AEAD chacha20-ietf-poly1305, ponieważ jest to najsilniejsza metoda szyfrowania. 

Konfigurując własny serwer shadowsocks, możesz wybrać „chacha20-ietf-poly1305” lub „aes-256-gcm”.

URI i kod QR

Shadowsocks na Androida / IOS obsługuje również konfiguracje formatu URI zakodowane w BASE64:

ss://BASE64-ENCODED-STRING-BEZ-WYPEŁNIENIA#TAG

 

Zwykły identyfikator URI powinien mieć postać: ss://method:password@hostname:port

Powyższy identyfikator URI nie jest zgodny z RFC3986. Hasło w tym przypadku powinno być zwykłym tekstem, a nie zakodowanym procentowo.



Przykład: Używamy serwera pod adresem 192.168.100.1:8888 za pomocą bf-cfb sposób szyfrowania i hasło test/!@#:

 

Następnie za pomocą zwykłego identyfikatora URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, możemy wygenerować URI zakodowany w BASE64: 

 

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

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

Aby ułatwić organizowanie i identyfikowanie tych identyfikatorów URI, możesz dołączyć tag po ciągu zakodowanym w BASE64:

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

Adresowanie

Shadowsocks używa adresów znalezionych w formacie adresu SOCKS5:

[typ 1-bajtowy][host o zmiennej długości][port 2-bajtowy]

 

Oto zdefiniowane typy adresów:

  • 0x01 : host to 4-bajtowy adres IPv4.
  • 0x03 : host to łańcuch o zmiennej długości, zaczynający się od długości 1 bajta, po którym następuje maksymalnie 255-bajtowa nazwa domeny.
  • 0x04 : host to 16-bajtowy adres IPv6.

 

Numer portu to 2-bajtowa liczba całkowita bez znaku typu big-endian.

TCP

Klient ss-local inicjuje połączenie z ss-remote, wysyłając zaszyfrowane dane, zaczynając od adresu docelowego, po którym następują dane ładunku. Szyfrowanie będzie się różnić w zależności od użytego szyfru.

[adres docelowy][ładunek]

Pilot ss odbiera zaszyfrowane dane, a następnie odszyfrowuje i analizuje adres docelowy. Następnie tworzy nowe połączenie TCP z celem i przekazuje do niego dane ładunku. ss-remote otrzymuje odpowiedź od celu, a następnie szyfruje dane i przekazuje je z powrotem do ss-local, dopóki nie zostanie rozłączony.

W celu zaciemnienia, lokalni i zdalni powinni wysyłać dane uzgadniania z pewnym ładunkiem w pierwszym pakiecie.

UDP

ss-local wysyła zaszyfrowany pakiet danych zawierający adres docelowy i ładunek do ss-remote.

[adres docelowy][ładunek]

Po odebraniu zaszyfrowanego pakietu ss-remote odszyfrowuje i analizuje adres docelowy. Następnie wysyła nowy pakiet danych z ładunkiem do celu. ss-remote odbiera pakiety danych od celu i dołącza adres docelowy do ładunku w każdym pakiecie. Zaszyfrowane kopie są odsyłane z powrotem do ss-local.

[adres docelowy][ładunek]

Ten proces można sprowadzić do ss-remote wykonującego translację adresu sieciowego dla ss-local.

Rozpocznij 5-dniowy bezpłatny okres próbny