Alibaba Cloud HTTPDNS hizmeti, TLS ile şifrelenmiş bir HTTPS bağlantısı üzerinden RFC 8484 uyumlu DNS çözümlemesi sunar. Bu özellik, tarayıcılar gibi kullanım senaryoları için idealdir.
DoT/DoH uç noktasını alma
Alibaba Cloud DNS - HTTPDNS adresine gidin.
Access Configuration sekmesinde Method 3: DoT/DoH-based access seçeneğini seçin.
-
DoT/DoH, kısa adres ve özel şifreli adres olmak üzere iki erişim yöntemini destekler.
ÖnemliDaha yüksek güvenlik için şifreli adres kullanmanızı öneririz.
Add an encrypted URL seçeneğine tıklayın. Açılan iletişim kutusunda benzersiz bir uç nokta oluşturmak için özel bir dize girin.
-
Şifreli uç noktayı etkinleştirmek için anahtarı açın.
UyarıHTTPDNS hizmetine erişmek için DoH kullanımını durdurmak isterseniz anahtarı kapatın.
Hizmet askıya alma özelliğini dikkatli kullanın. Hizmet askıya alındığında hesabınız ücretsiz kullanıcı statüsüne düşer. Faturalandırma durur; konsol raporları ve diğer özellikler kullanılamaz hale gelir. HTTPDNS hizmetiniz artık bir SLA kapsamına girmez; sorgu kısıtlamaları ve reddetme işlemleri uygulanabilir.
Askıya alınmış bir hizmeti yeniden başlatırsanız önceki yapılandırmanız geri yüklenir ve faturalandırma devam eder.
Son kullanıcılar için DoH
DoH uç noktanızın https://5***4-2h*****ynx3tls.alidns.com/dns-query olduğunu varsayalım.
Bu bölümde Chrome tarayıcısında DoH'nin nasıl yapılandırılacağı gösterilmektedir.
Chrome'u açın ve Settings sayfasına gidin.
Arama kutusuna "DNS" yazın ve arama sonuçlarında Security öğesinin yanındaki genişletme okuna tıklayın.
Sayfanın en altına inin. Advanced bölümünü bulun ve Use secure DNS seçeneğini etkinleştirin. Ardından Custom kutusuna
https://5***4-2h*****ynx3tls.alidns.com/dns-queryadresini girin.
Geliştiriciler için DoH hizmeti
Geliştiriciler, RFC 8484 standartlarına uygun bir DoH HTTP isteği oluşturup bunu DoH hizmet adresine göndermelidir.
DoH hem GET hem de POST yöntemlerini destekler. POST yöntemi kullanıldığında DNS sorgu mesajı HTTP isteğinin gövdesinde yer alır. GET yöntemi kullanıldığında ise "dns" adlı tek bir değişkene base64url kodlu DNS isteği içeriği atanır.
Kod örnekleri (Python ve Golang)
GET yöntemini kullanarak bir DoH sorgusu başlatmak için ikili DNS mesajı önce base64url ile kodlanarak DNS sorgu parametresi elde edilir. Bu parametre kullanılarak tam DoH HTTP URL'si oluşturulur ve ardından DNS yanıt mesajını almak üzere bir HTTP isteği gönderilir.
-
Aşağıdaki Python kodu, geliştiricilerin
alibaba.comalan adını sorgulamak için DoH'yi nasıl kullanabileceğini gösterir.import dns.message import requests import base64 import json doh_url = "https://5***4-2h*****ynx3tls.alidns.com/dns-query" domain = "alibaba.com" rr = "A" result = [] message = dns.message.make_query(domain, rr) dns_req = base64.urlsafe_b64encode(message.to_wire()).decode("UTF8").rstrip("=") r = requests.get(doh_url + "?dns=" + dns_req, headers={"Content-type": "application/dns-message"}) for answer in dns.message.from_wire(r.content).answer: dns = answer.to_text().split() result.append({"Query": dns[0], "TTL": dns[1], "RR": dns[3], "Answer": dns[4]}) print(json.dumps(result))Çıktı aşağıdaki gibidir:
$ python test_doh.py [{"Answer": "106.11.XXX.XXX", "Query": "alibaba.com.", "RR": "A", "TTL": "133"}] -
Aşağıdaki Go kodu, geliştiricilerin
alibaba.comalan adını sorgulamak için DoH'yi nasıl kullanabileceğini gösterir.package main import ( "encoding/base64" "fmt" "github.com/miekg/dns" "io/ioutil" "net/http" "os" ) func main() { query := dns.Msg{} query.SetQuestion("www.taobao.com.", dns.TypeA) msg, _ := query.Pack() b64 := base64.RawURLEncoding.EncodeToString(msg) resp, err := http.Get("https://5***4-2h*****ynx3tls.alidns.com/dns-query?dns=" + b64) if err != nil { fmt.Printf("Send query error, err:%v\n", err) os.Exit(1) } defer resp.Body.Close() bodyBytes, _ := ioutil.ReadAll(resp.Body) response := dns.Msg{} response.Unpack(bodyBytes) fmt.Printf("Dns answer is :%v\n", response.String()) }Çıktı aşağıdaki gibidir:
Sent Get query https://dns.alidns.com/dns-query?dns=xzEBAAABAAAAAAAAA3d3dwZ0YW9iYW8DY29tAAABAAE Dns answer is :;; opcode: QUERY, status: NOERROR, id: 5***3 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.taobao.com. IN A ;; ANSWER SECTION: www.taobao.com. 15 IN CNAME www.taobao.com.danuoyi.tbcache.com. www.taobao.com.danuoyi.tbcache.com. 15 IN A 221.229.XXX.XXX www.taobao.com.danuoyi.tbcache.com. 15 IN A 221.229.XXX.XXX ;; ADDITIONAL SECTION: ;; OPT PSEUDOSECTION: ; EDNS: version 0; flags: ; udp: 4096