Dokumentasi Shadowsocks
navigation
Format Konfigurasi Shadowsocks
Fail Konfigurasi
Shadowsocks mengambil konfigurasi format JSON:
{
“server”:”my_server_ip”,
“server_port”:8388,
“local_port”:1080,
“kata laluan”:”barfoo!”,
“kaedah”:”chacha20-ietf-poly1305″
}
Format JSON
- pelayan: nama hos atau IP pelayan anda (IPv4/IPv6).
- server_port: nombor port pelayan.
- local_port: nombor port tempatan.
- kata laluan: kata laluan yang digunakan untuk menyulitkan pemindahan.
- kaedah: kaedah penyulitan.
Kaedah Penyulitan
Kami mengkonfigurasi pelayan kami dan mengesyorkan agar anda menggunakan sifir AEAD chacha20-ietf-poly1305 kerana ia adalah kaedah penyulitan yang paling kuat.
Jika mengkonfigurasi pelayan shadowsocks anda sendiri, anda boleh memilih sama ada "chacha20-ietf-poly1305" atau "aes-256-gcm".
URI & Kod QR
Shadowsocks untuk Android / IOS juga mengambil konfigurasi format URI yang dikodkan BASE64:
ss://BASE64-ENCODED-STRING-TANPA-PADDING#TAG
URI biasa hendaklah: ss://method:password@hostname:port
URI di atas tidak mengikut RFC3986. Kata laluan dalam kes ini hendaklah teks biasa, bukan dikodkan peratus.
Contoh: Kami menggunakan pelayan di 192.168.100.1:8888 menggunakan bf-cfb kaedah penyulitan dan kata laluan ujian/!@#:.
Kemudian, dengan URI biasa ss://bf-cfb:test/!@#:@192.168.100.1:8888, kita boleh menjana URI yang dikodkan BASE64:
> console.log( “ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”) )
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
Untuk membantu mengatur dan mengenal pasti URI ini, anda boleh menambahkan teg selepas rentetan yang dikodkan BASE64:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
Menangani
Shadowsocks menggunakan alamat yang terdapat dalam format alamat SOCKS5:
[jenis 1-bait][hos panjang pembolehubah][port 2-bait]
Berikut ialah jenis alamat yang ditakrifkan:
- 0x01 : hos ialah alamat IPv4 4-bait.
- 0x03 : hos ialah rentetan panjang berubah-ubah, bermula dengan panjang 1-bait, diikuti dengan nama domain maksimum 255-bait.
- 0x04 : hos ialah alamat IPv16 6-bait.
Nombor port ialah integer tak bertanda big-endian 2-bait.
TCP
Pelanggan ss-local memulakan sambungan ke ss-remote dengan menghantar data yang disulitkan bermula dengan alamat sasaran diikuti dengan data muatan. Penyulitan akan berbeza bergantung pada sifir yang digunakan.
[alamat sasaran][muatan]
ss-remote menerima data yang disulitkan, kemudian menyahsulit dan menghuraikan alamat sasaran. Kemudian ia mencipta sambungan TCP baharu ke sasaran dan memajukan data muatan kepadanya. ss-remote menerima balasan daripada sasaran kemudian menyulitkan data dan memajukannya kembali ke ss-local sehingga ia diputuskan.
Untuk tujuan mengelirukan, setempat dan jauh harus menghantar data jabat tangan dengan beberapa muatan dalam paket pertama.
UDP
ss-local menghantar paket data yang disulitkan yang mengandungi alamat sasaran dan muatan ke ss-remote.
[alamat sasaran][muatan]
Sebaik sahaja paket yang disulitkan diterima, ss-remote menyahsulit dan menghuraikan alamat sasaran. Ia kemudian menghantar paket data baharu dengan muatan ke sasaran. ss-remote menerima paket data daripada sasaran dan menambah alamat sasaran kepada muatan dalam setiap paket. Salinan yang disulitkan dihantar semula ke ss-local.
[alamat sasaran][muatan]
Proses ini boleh dipecahkan kepada ss-remote melaksanakan terjemahan alamat rangkaian untuk ss-local.