Penyamaran Awalan Koneksi

Mulai versi 1.9.0 Outline Client, kunci akses mendukung opsi "prefix". "Awalan" adalah daftar byte yang digunakan sebagai byte pertama dari salt koneksi Shadowsocks. Hal ini dapat membuat koneksi terlihat seperti protokol yang diizinkan di jaringan, sehingga menghindari firewall yang menolak protokol yang tidak dikenalinya.

Kapan saya harus mencobanya?

Jika Anda menduga pengguna deployment Outline Anda masih diblokir, Anda mungkin ingin mempertimbangkan untuk mencoba beberapa awalan yang berbeda.

Petunjuk

Awalan tidak boleh lebih dari 16 byte. Awalan yang lebih panjang dapat menyebabkan tabrakan salt, yang dapat membahayakan keamanan enkripsi dan menyebabkan koneksi terdeteksi. Gunakan awalan terpendek yang dapat Anda gunakan untuk melewati pemblokiran yang Anda alami.

Port yang Anda gunakan harus sesuai dengan protokol yang ditiru oleh awalan Anda. IANA menyimpan transport protocol port number registry yang memetakan protokol dan nomor port.

Beberapa contoh awalan TCP yang efektif dan terlihat seperti protokol umum:

Port yang Direkomendasikan Di-encode YAML Dienkode URL
Permintaan HTTP 80 (http) "POST " POST%20
Respons HTTP 80 (http) "HTTP/1.1 " HTTP%2F1.1%20
Permintaan DNS-over-TCP 53 (dns) "\u0005\u00DC\u005F\u00E0\u0001\u0020" %05%C3%9C_%C3%A0%01%20
ClientHello TLS 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) "\u0016\u0003\u0001\u0000\u00a8\u0001\u0001" %16%03%01%00%C2%A8%01%01
Data Aplikasi TLS 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) "\u0013\u0003\u0003\u003F" %13%03%03%3F
ServerHello TLS 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) "\u0016\u0003\u0003\u0040\u0000\u0002" %16%03%03%40%00%02
SSH 22 (ssh), 830 (netconf-ssh), 4334 (netconf-ch-ssh), 5162 (snmpssh-trap) "SSH-2.0\r\n" SSH-2.0%0D%0A

Beberapa contoh awalan UDP yang efektif yang terlihat seperti protokol umum:

Port yang Direkomendasikan Di-encode YAML
Permintaan DNS 53 (dns) "\u006b\u007b\u0001\u0020" (catatan: acak dua byte pertama)
Respons DNS 53 (dns) "\u006b\u007b\u0081\u00a0\u0000\u0001" (catatan: acak dua byte pertama)
Inisialisasi Klien QUIC 443 (https) "\u00cd\u0000\u0000\u0000\u0001"

Kunci Akses Dinamis

Untuk menggunakan fitur awalan dengan Kunci Akses Dinamis (ssconf://), tambahkan kunci "prefix" ke objek YAML, dengan nilai yang dienkode YAML yang merepresentasikan awalan yang Anda inginkan_ (lihat contoh dalam tabel di atas)_. Anda dapat menggunakan kode escape (seperti \u00FF) untuk merepresentasikan titik kode Unicode yang tidak dapat dicetak dalam rentang U+0 hingga U+FF. Contoh:

transport:
  $type: tcpudp
  tcp:
    <<: &shared
      $type: shadowsocks
      endpoint: 147.182.248.224:20478
      secret: cqXYJ2BtMyNHneQHjpIXyg
      cipher: chacha20-ietf-poly1305
    prefix: "\u0013\u0003\u0003\u003F"
  udp:
    <<: *shared
    prefix: "\u006b\u007b\u0001\u0020"

Kunci Akses Statis

Untuk menggunakan awalan dengan Kunci Akses Statis (ss://), Anda harus mengubah kunci yang ada sebelum mendistribusikannya. Jika Anda memiliki Kunci Akses Statis yang dibuat oleh Outline Manager, ambil versi URL-encoded dari awalan Anda (lihat contohnya di tabel di atas) dan tambahkan ke akhir kunci akses seperti ini:

ss://Z34nthataITHiTNIHTohithITHbVBqQ1o3bkk@127.0.0.1:33142/?outline=1&prefix=<your url-encoded prefix goes here>

Awalan dalam format URL hanya berfungsi untuk koneksi TCP.

Untuk pengguna tingkat lanjut, Anda dapat menggunakan fungsi encodeURIComponent() browser untuk mengonversi awalan berenkode JSON menjadi awalan berenkode URL. Untuk melakukannya, buka konsol web inspector (*Developer > Javascript Web Console *di Chrome), lalu ketik berikut:

encodeURIComponent("<your json-encoded prefix goes here>")

Tekan enter. Nilai yang dihasilkan akan berupa versi yang *dienkode ke URL*. Contoh:

encodeURIComponent("\u0016\u0003\u0001\u0000\u00a8\u0001\u0001")
'%16%03%01%00%C2%A8%01%01'