Smart Dialer menelusuri strategi yang membatalkan pemblokiran DNS dan TLS untuk daftar domain pengujian tertentu. Fungsi ini memerlukan konfigurasi yang menjelaskan beberapa strategi untuk dipilih.
Konfigurasi YAML untuk Smart Dialer
Konfigurasi yang digunakan Smart Dialer memiliki format YAML. Berikut ini contohnya:
dns:
- system: {}
- https:
name: 8.8.8.8
- https:
name: 9.9.9.9
tls:
- ""
- split:2
- tlsfrag:1
fallback:
- ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1
Konfigurasi DNS
- Kolom
dns
menentukan daftar resolver DNS yang akan diuji. - Setiap resolver DNS dapat berupa salah satu jenis berikut:
system
: Menggunakan resolver sistem. Tentukan dengan objek kosong.https
: Menggunakan resolver DNS-over-HTTPS (DoH) terenkripsi.tls
: Menggunakan resolver DNS terenkripsi melalui TLS (DoT).udp
: Menggunakan resolver UDP.tcp
: Menggunakan resolver TCP.
DNS-over-HTTPS Resolver (DoH)
https:
name: dns.google
address: 8.8.8.8
name
: Nama domain server DoH.address
: host:port server DoH. Defaultnya adalahname
:443.
DNS-over-TLS Resolver (DoT)
tls:
name: dns.google
address: 8.8.8.8
name
: Nama domain server DoT.address
: host:port server DoT. Default-nya adalahname
:853.
Resolver UDP
udp:
address: 8.8.8.8
address
: host:port dari resolver UDP.
Resolver TCP
tcp:
address: 8.8.8.8
address
: host:port dari resolver TCP.
Konfigurasi TLS
- Kolom
tls
menentukan daftar transpor TLS yang akan diuji. - Setiap transpor TLS adalah string yang menentukan transpor yang akan digunakan.
- Misalnya,
override:host=cloudflare.net|tlsfrag:1
menentukan transpor yang menggunakan domain fronting dengan Cloudflare dan fragmentasi TLS. Lihat dokumentasi konfigurasi untuk mengetahui detailnya.
Konfigurasi Penggantian
Konfigurasi penggantian digunakan jika tidak ada strategi tanpa proxy yang dapat terhubung. Misalnya, server proxy cadangan dapat ditentukan untuk mencoba koneksi pengguna. Penggunaan penggantian akan lebih lambat untuk dimulai, karena strategi DNS/TLS lainnya harus gagal/waktu tunggu habis terlebih dahulu.
String penggantian harus:
- String konfigurasi
StreamDialer
yang valid seperti yang ditentukan dalamconfigurl
. - Objek konfigurasi Psiphon yang valid sebagai turunan kolom
psiphon
.
Contoh server Shadowsocks
fallback:
- ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1
Contoh server SOCKS5
fallback:
- socks5://[USERINFO]@[HOST]:[PORT]
Contoh konfigurasi Psiphon
Untuk menggunakan jaringan Psiphon, Anda harus:
- Hubungi tim Psiphon untuk mendapatkan konfigurasi yang memberi Anda akses ke jaringan mereka. Hal ini mungkin memerlukan kontrak.
- Tambahkan konfigurasi Psiphon yang diterima ke bagian
fallback
pada konfigurasi Smart Dialer Anda. Karena JSON kompatibel dengan YAML, Anda dapat menyalin dan menempelkan konfigurasi Psiphon langsung ke bagianfallback
, seperti ini:
fallback:
- psiphon: {
"PropagationChannelId": "FFFFFFFFFFFFFFFF",
"SponsorId": "FFFFFFFFFFFFFFFF",
"DisableLocalSocksProxy" : true,
"DisableLocalHTTPProxy" : true,
...
}
Cara Menggunakan Telepon Pintar
Untuk menggunakan Smart Dialer, buat objek StrategyFinder
dan panggil
metode NewDialer
, dengan meneruskan daftar domain pengujian dan konfigurasi YAML.
Metode NewDialer
akan menampilkan transport.StreamDialer
yang dapat digunakan
untuk membuat koneksi menggunakan strategi yang ditemukan. Contoh:
finder := &smart.StrategyFinder{
TestTimeout: 5 * time.Second,
LogWriter: os.Stdout,
StreamDialer: &transport.TCPDialer{},
PacketDialer: &transport.UDPDialer{},
}
configBytes := []byte(`
dns:
- system: {}
- https:
name: 8.8.8.8
- https:
name: 9.9.9.9
tls:
- ""
- split:2
- tlsfrag:1
fallback:
- ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1
`)
dialer, err := finder.NewDialer(
context.Background(),
[]string{"www.google.com"},
configBytes
)
if err != nil {
// Handle error.
}
// Use dialer to create connections.
Ini adalah contoh dasar dan mungkin perlu disesuaikan untuk kasus penggunaan tertentu.