Как интерпретировать тип записи DNS SVCB / HTTPS в Cloudflare?

#https #dns

#https #dns

Вопрос:

Из недавней статьи Cloudflare, автоматически добавляющей записи DNS SVCB / HTTPS, я пытаюсь интерпретировать то, что они публикуют в записи DNS.

Текущий черновик для SVCB или HTTPS выглядит как «черновик-ietf-dnsop-svcb-https-01».

Использование dig для получения записи DNS блога cloudflare:

 dig blog.cloudflare.com -t TYPE65
  

Ответ на запрос:

 ;; ANSWER SECTION:
blog.cloudflare.com.    300 IN  TYPE65  # 76 000100000100150568332D32390568332D32380568332D3237026832 0004000868121A2E68121B2E00060020260647000000000000000000 68121A2E26064700000000000000000068121B2E
  

Возвращает формат ответа в кодировке RFC3597.

Было бы неплохо узнать, что он говорит. Что это говорит?

Ответ №1:

drill Команда поддерживает HTTPS RR (тип 65) в последней версии git [1]. Чтобы использовать его, создайте с помощью ldns --enable-rrtype-svcb-https . Вот примеры использования:

 $ drill HTTPS blog.cloudflare.com | grep ^blog
blog.cloudflare.com.    300     IN      HTTPS   1 . alpn=h3-29,h3-28,h3-27,h2 ipv4hint=104.18.26.46,104.18.27.46 ipv6hint=2606:4700::6812:1a2e,2606:4700::6812:1b2e

$ drill HTTPS crypto.cloudflare.com | grep ^crypto
crypto.cloudflare.com.  237     IN      HTTPS   1 . alpn=h2 ipv4hint=162.159.135.79,162.159.136.79 echconfig=AEj CgBEhwAgACA8RalVTTRgfQYqMSqwX4GiBa6kftXcUcQZIkqhwe0PLwAEAAEAAQAAABNjbG91ZGZsYXJlLWVzbmkuY29tAAA= ipv6hint=2606:4700:7::a29f:874f,2606:4700:7::a29f:884f
  

Обновление 2021/09/05: dig теперь также поддерживает записи HTTPS в последней версии git [2]. Вот примеры использования:

 $ dig HTTPS blog.cloudflare.com | grep ^blog    
blog.cloudflare.com.    242     IN      HTTPS   1 . alpn="h3,h3-29,h3-28,h3-27,h2" ipv4hint=104.18.26.46,104.18.27.46 ipv6hint=2606:4700::6812:1a2e,2606:4700::6812:1b2e

$ dig HTTPS crypto.cloudflare.com | grep ^crypto
crypto.cloudflare.com.  285     IN      HTTPS   1 . alpn="h2" ipv4hint=162.159.135.79,162.159.136.79 ech=AEb DQBCmwAgACA5ysTCbPox2yTLTsrGuJ8QHfwHjqZLcNGTA7xAiBJNSQAEAAEAAQATY2xvdWRmbGFyZS1lc25pLmNvbQAA ipv6hint=2606:4700:7::a29f:874f,2606:4700:7::a29f:884f
  

[1] https://github.com/NLnetLabs/ldns/pull/115

[2] https://gitlab.isc.org/isc-projects/bind9/-/merge_requests/2135

Комментарии:

1. dnscrypt-proxy -resolve Команда также отображает записи HTTPS по умолчанию.

2. Двоичный файл детализации в Ubuntu 23.04 теперь поддерживает запись DNS HTTPS. Детализация компиляции — это кошмар, поэтому самый простой способ получить этот двоичный файл sudo docker run -it ubuntu:devel bash

Ответ №2:

Мне удалось вручную расшифровать первую его часть:

 # 76 total length
0001 priority
00 full registered name, null, "."
0001 alpn key type
0015 alpn value length
05 alpn-id length
68332D3239 alpn-id: h3-29
05 alpn-id length
68332D3238 alpn-id: h3-28
05 alpn-id length
68332D3237 alpn-id: h3-27
02 alpn-id length
6832 alpn-id: h2
  

Возможно, я проработаю остальное позже, но интересно посмотреть типы ALPN h3-29, 28 и 27.

Я также обнаружил, что dnspython поддерживает тип записи в master, а некоторые другие программы выполняют это в соответствии с этим списком: https://github.com/MikeBishop/dns-alt-svc/blob/master/svcb-implementations.md

Ответ №3:

Похоже, что Wireshark 3.4.0 теперь поддерживает декодирование записей HTTPS, если вы можете перехватить пакет.

Это показывает мне, что Cloudflare предоставляет подсказки IPv4 и IPv6, а также информацию ALPN.

Комментарии:

1. Спасибо за обновление! Если бы вы могли включить копию какого-либо вывода, я думаю, это было бы полезно для других, помимо необработанных заметок в другом ответе.