Dokumentasi Shadowsocks

Format Konfigurasi Shadowsocks

File Konfigurasi

Shadowsocks mengambil konfigurasi format JSON:

{

    "server":"my_server_ip",

    "Server_port":8388,

    "port_lokal":1080,

    "kata sandi": "barfoo!",

    “metode”:”chacha20-ietf-poly1305″

}

Format JSON

  • pelayan : nama host atau IP server Anda (IPv4/IPv6).
  • server_port: nomor port server.
  • local_port: nomor port lokal.
  • kata sandi: kata sandi yang digunakan untuk mengenkripsi transfer.
  • metode: metode enkripsi.

Metode Enkripsi

Kami mengonfigurasi server kami dan menyarankan agar Anda menggunakan cipher AEAD chacha20-ietf-poly1305 karena ini adalah metode enkripsi terkuat. 

Jika mengonfigurasi server shadowsocks Anda sendiri, Anda dapat memilih dari "chacha20-ietf-poly1305" atau "aes-256-gcm".

URI & Kode QR

Shadowsocks untuk Android / iOS juga menggunakan konfigurasi format URI yang disandikan BASE64:

ss://BASE64-ENCODED-STRING-TANPA-PADDING#TAG

 

URI biasa harus: ss://method:password@hostname:port

URI di atas tidak mengikuti RFC3986. Kata sandi dalam hal ini harus berupa teks biasa, bukan persen yang disandikan.



Contoh: Kami menggunakan server di 192.168.100.1:8888 menggunakan bf-cfb metode enkripsi dan kata sandi uji/!@#:

 

Kemudian, dengan URI biasa ss://bf-cfb:tes/!@#:@192.168.100.1:8888, kita dapat membuat URI yang disandikan BASE64: 

 

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

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

Untuk membantu mengatur dan mengidentifikasi URI ini, Anda dapat menambahkan tag setelah string berenkode BASE64:

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

Pengalamatan

Shadowsocks menggunakan alamat yang ditemukan dalam format alamat SOCKS5:

[tipe 1-byte][host dengan panjang variabel][port 2-byte]

 

Berikut adalah jenis alamat yang ditentukan:

  • 0x01 : host adalah alamat IPv4 4-byte.
  • 0x03 : host adalah string panjang variabel, dimulai dengan panjang 1-byte, diikuti dengan nama domain maksimal 255-byte.
  • 0x04 : host adalah alamat IPv16 6-byte.

 

Nomor port adalah 2-byte big-endian unsigned integer.

TCP

Klien ss-local memulai koneksi ke ss-remote dengan mengirimkan data terenkripsi dimulai dengan alamat target diikuti oleh data payload. Enkripsi akan berbeda tergantung pada cipher yang digunakan.

[alamat target][muatan]

ss-remote menerima data terenkripsi, kemudian mendekripsi dan mem-parsing alamat target. Kemudian ia membuat koneksi TCP baru ke target dan meneruskan data payload ke target tersebut. ss-remote menerima balasan dari target kemudian mengenkripsi data dan meneruskannya kembali ke ss-local hingga terputus.

Untuk tujuan kebingungan, lokal dan jarak jauh harus mengirimkan data jabat tangan dengan beberapa muatan di paket pertama.

UDP

ss-local mengirimkan paket data terenkripsi yang berisi alamat target dan payload ke ss-remote.

[alamat target][muatan]

Setelah paket terenkripsi diterima, ss-remote mendekripsi dan mem-parsing alamat target. Kemudian mengirimkan paket data baru dengan payload ke target. ss-remote menerima paket data dari target dan menambahkan alamat target ke payload di setiap paket. Salinan terenkripsi dikirim kembali ke ss-local.

[alamat target][muatan]

Proses ini dapat diringkas menjadi ss-remote melakukan terjemahan alamat jaringan untuk ss-local.

Mulai uji coba gratis 5 hari Anda