Alibaba Cloud HTTPDNS oferece resolução de DNS compatível com a RFC 8484 por meio de uma conexão HTTPS criptografada com TLS, ideal para casos de uso como navegadores.
Obter o endpoint de DoT/DoH
Acesse Alibaba Cloud DNS - HTTPDNS.
Na aba Access Configuration, selecione Method 3: DoT/DoH-based access.
-
O DoT/DoH oferece suporte a dois métodos de acesso: endereço curto e endereço criptografado personalizado.
ImportantePara maior segurança, recomendamos o uso do endereço criptografado.
Clique em Add an encrypted URL. Na caixa de diálogo, insira uma string personalizada para gerar um endpoint exclusivo.
-
Ative a chave para habilitar o endpoint criptografado.
AvisoPara interromper o acesso ao HTTPDNS via DoH, desative a chave.
Use o recurso de suspensão de service com cautela. Após a suspensão do service, sua conta será rebaixada para usuário gratuito. O faturamento é interrompido e os relatórios do console, além de outros recursos, ficam indisponíveis. Seu HTTPDNS deixará de ser coberto por um SLA e estará sujeito a limitação de taxa e rejeição de consultas.
Ao reiniciar um service suspenso, a configuração original é restaurada e o faturamento é retomado.
DoH para usuários finais
Considere que seu endpoint de DoH seja https://5***4-2h*****ynx3tls.alidns.com/dns-query.
Esta seção demonstra como configurar o DoH no Chrome.
Abra o Chrome e acesse Settings.
Na caixa de pesquisa, insira "DNS" e, nos resultados da busca, clique em na seta de expansão à direita de Security.
Role até o final da página. Localize a seção Advanced e ative Use secure DNS. Em seguida, insira
https://5***4-2h*****ynx3tls.alidns.com/dns-queryno campo Custom.
Service de DoH para desenvolvedores
Desenvolvedores devem gerar uma solicitação HTTP de DoH conforme os padrões da RFC 8484 e enviá-la ao endereço do service de DoH.
O DoH aceita tanto o método GET quanto o POST. Ao utilizar o método POST, a mensagem de consulta DNS é incluída no corpo da solicitação HTTP. Já no método GET, uma única variável chamada "dns" recebe o conteúdo da solicitação DNS codificado em base64url.
Exemplos de código (Python e Golang)
Para iniciar uma consulta DoH com o método GET, codifique primeiro a mensagem binária de DNS em base64url para obter o parâmetro de consulta DNS. Esse parâmetro compõe a URL HTTP completa do DoH, enviada via solicitação HTTP para recuperar a mensagem de resposta DNS.
-
O código Python abaixo ilustra como usar o DoH para consultar o domínio
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))A saída é a seguinte:
$ python test_doh.py [{"Answer": "106.11.XXX.XXX", "Query": "alibaba.com.", "RR": "A", "TTL": "133"}] -
O código Go a seguir mostra como consultar o domínio
alibaba.comusando DoH.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()) }A saída é a seguinte:
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