Alibaba Cloud HTTPDNS résout les noms DNS conformément à la norme RFC 8484 via une connexion HTTPS chiffrée par TLS, une solution idéale pour les navigateurs.
Obtenir l'endpoint DoT/DoH
Accédez à Alibaba Cloud DNS - HTTPDNS.
Sous l'onglet Access Configuration, sélectionnez Method 3: DoT/DoH-based access.
-
Le protocole DoT/DoH prend en charge deux méthodes d'accès : l'adresse courte et l'adresse chiffrée personnalisée.
ImportantPour renforcer la sécurité, nous vous recommandons d'utiliser l'adresse chiffrée.
Cliquez sur Add an encrypted URL. Dans la boîte de dialogue, saisissez une chaîne personnalisée pour générer un endpoint unique.
-
Activez le commutateur pour activer l'endpoint chiffré.
AvertissementPour cesser d'utiliser DoH afin d'accéder à HTTPDNS, désactivez le commutateur.
Utilisez la fonctionnalité de suspension du service avec prudence. Une fois le service suspendu, votre compte passe au statut d'utilisateur gratuit. La facturation s'arrête et les rapports de la console ainsi que d'autres fonctionnalités deviennent indisponibles. Votre service HTTPDNS n'est plus couvert par un SLA et subit des limitations de débit et des rejets de requêtes.
Si vous redémarrez un service suspendu, votre configuration d'origine est restaurée et la facturation reprend.
DoH pour les utilisateurs finaux
Supposons que votre endpoint DoH soit https://5***4-2h*****ynx3tls.alidns.com/dns-query.
Cette rubrique explique comment configurer DoH dans Chrome.
Ouvrez Chrome et accédez à Settings.
Dans la zone de recherche, saisissez « DNS ». Dans les résultats, cliquez sur la flèche de développement située à droite de Security.
Faites défiler la page jusqu'en bas. Localisez la section Advanced et activez Use secure DNS. Ensuite, saisissez
https://5***4-2h*****ynx3tls.alidns.com/dns-querydans la zone Custom.
Service DoH pour les développeurs
Les développeurs doivent générer une requête HTTP DoH conformément à la norme RFC 8484 et l'envoyer à l'adresse du service DoH.
Le protocole DoH prend en charge les méthodes GET et POST. Avec la méthode POST, le message de requête DNS figure dans le corps de la requête HTTP. Avec la méthode GET, une variable unique nommée « dns » contient le contenu de la requête DNS encodé en base64url.
Exemples de code (Python et Golang)
Pour initier une requête DoH via la méthode GET, encodez d'abord le message DNS binaire en base64url afin d'obtenir le paramètre de requête DNS. Utilisez ce paramètre pour construire l'URL HTTP DoH complète, puis envoyez-la via une requête HTTP pour récupérer la réponse DNS.
-
Le code Python suivant montre comment utiliser DoH pour interroger le domaine
alibaba.com.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))Le résultat est le suivant :
$ python test_doh.py [{"Answer": "106.11.XXX.XXX", "Query": "alibaba.com.", "RR": "A", "TTL": "133"}] -
Le code Go suivant montre comment utiliser DoH pour interroger le domaine
alibaba.com.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()) }Le résultat est le suivant :
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