Smart Dialer belirli bir test alan adı listesi için DNS ve TLS engellemesini kaldıran bir strateji arar. Aralarından seçim yapılacak birden fazla stratejiyi tanımlayan bir yapılandırma seçer.
Smart Dialer için YAML yapılandırması
Smart Dialer'ın aldığı yapılandırma YAML biçimindedir. Örnek:
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
DNS Yapılandırması
dns
alanı, test edilecek DNS çözümleyicilerin listesini belirtir.- Her bir DNS çözümleyicinin türü şunlardan biri olabilir:
system
: Sistemdeki çözümleyiciyi kullanın. Boş bir nesne ile belirtin.https
: Şifrelenmiş bir DNS over HTTPS (DoH) çözümleyici kullanın.tls
: Şifrelenmiş bir DNS over TLS (DoT) çözümleyici kullanın.udp
: UDP çözümleyici kullanın.tcp
: TCP çözümleyici kullanın.
DNS-over-HTTPS (DoH) Çözümleyici
https:
name: dns.google
address: 8.8.8.8
name
: DoH sunucusunun alan adı.address
: DoH sunucusunun ana makine:bağlantı noktası bilgisi. Varsayılan değername
:443'tür.
DNS-over-TLS (DoT) Çözümleyici
tls:
name: dns.google
address: 8.8.8.8
name
: DoT sunucusunun alan adı.address
: DoT sunucusunun ana makine:bağlantı noktası bilgisi. Varsayılan değername
:853'tür.
UDP Çözümleyici
udp:
address: 8.8.8.8
address
: UDP çözümleyicinin ana makine:bağlantı noktası bilgisi.
TCP Çözümleyici
tcp:
address: 8.8.8.8
address
: TCP çözümleyicinin ana makine:bağlantı noktası bilgisi.
TLS Yapılandırması
tls
alanı, test edilecek TLS araçlarının listesini belirtir.- Her bir TLS aracı, kullanılacak aracı belirten bir dizedir.
- Örneğin
override:host=cloudflare.net|tlsfrag:1
, Cloudflare ve TLS parçasıyla alan adı ön yüzünü değiştirme işlemini kullanan bir araç belirtir. Ayrıntılar için yapılandırma belgelerine bakın.
Yedek Yapılandırma
Yedek yapılandırma, proxy'siz stratejilerin hiçbiri bağlantı kuramadığında kullanılır. Örneğin, kullanıcının bağlantısını denemek için bir yedek proxy sunucusu belirtebilir. Önce diğer DNS/TLS stratejilerinin başarısız olması/zaman aşımına uğraması gerektiğinden, yedek yapılandırma kullanımının başlatılması yavaş olur.
Yedek dizeler şu özellikleri taşımalıdır:
configurl
içinde tanımlandığı gibi geçerli birStreamDialer
yapılandırmasıpsiphon
alanının bir alt öğesi olarak geçerli bir Psiphon yapılandırması
Shadowsocks sunucusu ile ilgili örnek
fallback:
- ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1
SOCKS5 sunucusu ile ilgili örnek
fallback:
- socks5://[USERINFO]@[HOST]:[PORT]
Psiphon yapılandırması ile ilgili örnek
Psiphon ağını kullanmak için:
- Psiphon ekibi ile iletişime geçerek ağlarına erişim sağlayan bir yapılandırma alın. Bunun için bir sözleşmenizin olması gerekebilir.
- Aldığınız Psiphon yapılandırmasını, Smart Dialer yapılandırmanızın
fallback
bölümüne ekleyin. JSON YAML ile uyumlu olduğundan, Psiphon yapılandırmanızıfallback
bölümüne şu şekilde doğrudan yapıştırabilirsiniz:
fallback:
- psiphon: {
"PropagationChannelId": "FFFFFFFFFFFFFFFF",
"SponsorId": "FFFFFFFFFFFFFFFF",
"DisableLocalSocksProxy" : true,
"DisableLocalHTTPProxy" : true,
...
}
Smart Dialer'ı Kullanma
Smart Dialer'ı kullanmak için bir StrategyFinder
nesnesi oluşturun ve NewDialer
yöntemini çağırın. Bunun için test alan adları listesini ve YAML yapılandırmasını sağlamanız gerekir.
NewDialer
yöntemi bir transport.StreamDialer
değeri döndürür. Bu değer, bulunan stratejiyle bağlantı oluşturmak için kullanılabilir. Örneğin:
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.
Bu basit bir örnek olup kendi kullanım alanınıza göre uyarlanması gerekebilir.