Önceden, web tabanlı uygulamalarda gelişmiş uygulamalar kullanmak için tarayıcı uzantıları gerekiyordu DANE, DNS-SD hizmet keşfi gibi DNS özellikleri ve hatta (MX kayıtları gibi) IP adreslerinden başka her şey. SSHFP kayıtları gibi DNSSEC'ye bağlı özellikleri kullanmak için bu tür uzantılar DNSSEC'yi kendisinin doğrulaması gerekir. Çünkü tarayıcı veya işletim sistemi bunu doğrulamayabilir.
Google Public DNS, 2016'dan beri DNSSEC ile DoH için web dostu bir API sunuyor Tarayıcı veya işletim sistemi yapılandırması ya da uzantıları gerektirmeyen doğrulama. Basit GET sorgu parametreleri ve JSON yanıtları, istemcilerin arama sonuçlarında görünmesini sağlayın ve karmaşık DNS ileti biçimi ayrıntıları gibi alan adları için işaretçi sıkıştırma.
DoH hakkında bilgi edinmek için genel DoH dokümanları sayfasını inceleyin. ve HTTP üstbilgileri, yönlendirme işleme, gizlilikle ilgili en iyi uygulamalar ve HTTP durum kodları.
Güvenli Aktarım sayfasında
DoH için curl
komut satırı örnekleri ve DoH ve DNS üzerinden ortak bilgiler
TLS (DoT) sağlayın. Örneğin, TLS desteği ve DNS kesme.
JSON API Spesifikasyonu
Tüm API çağrıları, HTTP GET istekleridir. Yinelenen parametreler söz konusu olduğunda yalnızca ilk değer kullanılır.
Desteklenen parametreler
- ad
dize, gerekli
Zorunlu tek parametre. RFC 4343 ters eğik çizgi çıkışları kabul edilir.
- Uzunluk (ters eğik çizgi kaçışları değiştirildikten sonra) 1 ile arasında olmalıdır 253 (varsa, isteğe bağlı sondaki nokta dikkate alınmaz).
- Tüm etiketler (noktalar arasındaki adın kısımları) 1 ila 63 bayt uzunluğunda olmalıdır.
.example.com
,example..com
veya boş dize gibi geçersiz adlar 400 Hatalı İstek.- ASCII olmayan karakterler punycode olmalıdır (
ελ
değil,xn--qxam
).
- tür
dize, varsayılan:
1
RR türü, [1, 65535] içindeki bir sayı veya standart bir dizeyle temsil edilebilir (ör.
A
veyaaaaa
) büyük/küçük harfe duyarlı değil.255
değerini "HERHANGİ BİRİ" için kullanabilirsiniz ancak bunun bir değil yerine kullanın. Yetkili alan adı sunucularının bu tür sorgular için tüm kayıtları döndürmesi gerekmez; bazıları yanıt vermez, bazılarıysa (cloudflare.com gibi) yalnızca HINFO döndürür.- cd
boole, varsayılan:
false
CD (İşaretleme Devre Dışı) işareti. DNSSEC doğrulamasını devre dışı bırakmak için
cd=1
veyacd=true
kullanın; DNSSEC doğrulamasını etkinleştirmek içincd=0
,cd=false
veyacd
parametresi kullanmayın.- adt
dize, varsayılan: boş
İstenen içerik türü seçeneği.
ct=application/dns-message
komutunu kullanarak JSON metni yerine yanıt HTTP gövdesi. JSON metnini açıkça istemek içinct=application/x-javascript
kullanın. Diğer içerik türü değerleri yoksayılır ve varsayılan JSON içeriği döndürülür.- yap
boole, varsayılan:
false
DO (DNSSEC OK) işareti. DNSSEC kayıtlarını (RRSIG, NSEC, NSEC3) eklemek için
do=1
veyado=true
kullanın. DNSSEC kayıtlarını atlamak içindo=0
,do=false
veyado
parametresi kullanmayın.Uygulamalar tüm DNSSEC'leri işlemeli (ve gerekirse bunları yoksaymalıdır) diğer uygulamalar her zaman bunları içerebileceğinden, JSON yanıtlarında kayıt ve JSON yanıtlarının varsayılan davranışını ileride değiştirebiliriz. (İkili DNS ileti yanıtları her zaman DO işareti değerine uyar.)
- edns_client_subnet
dize, varsayılan: boş
edns0-client-subnet seçeneği. Biçim, alt ağ maskesine sahip bir IP adresidir. Örnekler:
1.2.3.4/24
,2001:700:300::/48
.Gizlilikle ilgili endişeler nedeniyle DNS-over-HTTPS kullanıyorsanız ve IP adresinizin yetkili alan adı sunucularına gönderilecek herhangi bir bölümü coğrafi konum doğruluğu için
edns_client_subnet=0.0.0.0/0
kullanın. Google Açık DNS normalde yaklaşık ağ bilgilerini gönderir (genellikle IPv4 adresinizin son kısmı sıfırlanır).- random_padding
dize, yoksayıldı
Bu parametrenin değeri yoksayılır. Örnek:
XmkMw~o_mgP2pf.gpw-Oi5dK
.HTTPS GET isteklerinin paket boyutları, bunu tüm istekleri tam olarak isteklerine göre aynı boyutta seçimler yapmak için kullanılır. URL'nin yanlış yorumlanmasını önlemek için dolgu karakterlerini kısıtlayın ayrılmamış URL karakterlerine ekleyin: büyük ve küçük harfler, rakamlar, kısa çizgi, nokta, alt çizgi ve yaklaşık işareti içermelidir.
JSON'de DNS yanıtı
Başarılı bir yanıt (buraya eklenen yorumlar gerçek yanıtlarda yoktur):
{
"Status": 0, // NOERROR - Standard DNS response code (32 bit integer).
"TC": false, // Whether the response is truncated
"RD": true, // Always true for Google Public DNS
"RA": true, // Always true for Google Public DNS
"AD": false, // Whether all response data was validated with DNSSEC
"CD": false, // Whether the client asked to disable DNSSEC
"Question":
[
{
"name": "apple.com.", // FQDN with trailing dot
"type": 1 // A - Standard DNS RR type
}
],
"Answer":
[
{
"name": "apple.com.", // Always matches name in the Question section
"type": 1, // A - Standard DNS RR type
"TTL": 3599, // Record's time-to-live in seconds
"data": "17.178.96.59" // Data for A - IP address as text
},
{
"name": "apple.com.",
"type": 1,
"TTL": 3599,
"data": "17.172.224.47"
},
{
"name": "apple.com.",
"type": 1,
"TTL": 3599,
"data": "17.142.160.59"
}
],
"edns_client_subnet": "12.34.56.78/0" // IP address / scope prefix-length
}
RFC 7871 (EDNS İstemci Alt Ağı) ile ilgili daha fazla bilgi "kapsam ön eki uzunluğu" ve bunun önbelleğe almayı nasıl etkilediği hakkında ayrıntılar.
Teşhis bilgilerini içeren bir hata yanıtı:
{
"Status": 2, // SERVFAIL - Standard DNS response code (32 bit integer).
"TC": false, // Whether the response is truncated
"RD": true, // Always true for Google Public DNS
"RA": true, // Always true for Google Public DNS
"AD": false, // Whether all response data was validated with DNSSEC
"CD": false, // Whether the client asked to disable DNSSEC
"Question":
[
{
"name": "dnssec-failed.org.", // FQDN with trailing dot
"type": 1 // A - Standard DNS RR type
}
],
"Comment": "DNSSEC validation failure. Please check http://dnsviz.net/d/dnssec-failed.org/dnssec/."
}
Yerleştirilmiş tırnak işaretleri ve alan adı sunucusu özellikleri içeren SPF ve TXT kayıtları:
{
"Status": 0, // NOERROR - Standard DNS response code (32 bit integer).
"TC": false, // Whether the response is truncated
"RD": true, // Always true for Google Public DNS
"RA": true, // Always true for Google Public DNS
"AD": false, // Whether all response data was validated with DNSSEC
"CD": false, // Whether the client asked to disable DNSSEC
"Question": [
{
"name": "*.dns-example.info.", // FQDN with trailing dot
"type": 99 // SPF - Standard DNS RR type
}
],
"Answer": [
{
"name": "*.dns-example.info.", // Always matches name in Question
"type": 99, // SPF - Standard DNS RR type
"TTL": 21599, // Record's time-to-live in seconds
"data": "\"v=spf1 -all\"" // Data for SPF - quoted string
}
],
"Comment": "Response from 216.239.38.110"
// Uncached responses are attributed to the authoritative name server
}
{
"Status": 0, // NOERROR - Standard DNS response code (32 bit integer).
"TC": false, // Whether the response is truncated
"RD": true, // Always true for Google Public DNS
"RA": true, // Always true for Google Public DNS
"AD": false, // Whether all response data was validated with DNSSEC
"CD": false, // Whether the client asked to disable DNSSEC
"Question": [
{
"name": "s1024._domainkey.yahoo.com.", // FQDN with trailing dot
"type": 16 // TXT - Standard DNS RR type
}
],
"Answer": [
{
"name": "s1024._domainkey.yahoo.com.", // Always matches Question name
"type": 16, // TXT - Standard DNS RR type
"data": "\"k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz+QfiWYui/E9UGSXau/2P8LjnTD8V4Unn+2FAZVGE3kL23bzeoULYv4PeleB3gfm\"\"JiDJOKU3Ns5L4KJAUUHjFwDebt0NP+sBK0VKeTATL2Yr/S3bT/xhy+1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj/+XcwIDAQAB; n=A 1024 bit key;\""
// Data for TXT - multiple quoted strings
}
],
}
DNS dizeleri
Tüm TXT kayıtları, daha uzun TXT kullanımları da dahil olmak üzere tek bir JSON dizesi olarak kodlanır kayıt formatları RFC 4408 (SPF) veya RFC 4871 (DKIM).
EDNS
Genel EDNS uzantı mekanizması desteklenmez. EDNS İstemci Alt Ağı seçeneği (edns-client-subnet), GET isteği ve JSON yanıtında üst düzey bir alan.