Клиент не может разрешить мой ответ сервера DoH

Я делаю собственный сервер DoH, который должен по-другому разрешать некоторые TLD. Я использую NodeJS для его реализации. Для большинства доменов он просто проксирует их в DoH Google, и это работает. Но когда я пытаюсь разрешить некоторые пользовательские домены, например

mydomain.customtld

Я хочу указать на

bafybeie5nqv6kd3qnfjupgvz34woh3oksc3iau6abmyajn7qvtf6d2ho34.ipfs.dweb.link

Я сам попытался сформировать ответ DNS, и это не удалось. Итак, я прибег к разрешению упомянутой ссылки (т.е. bafybeie5nqv6kd3qnfjupgvz34woh3oksc3iau6abmyajn7qvtf6d2ho34.ipfs.dweb.link) через Google DoH или какой-либо другой сервер DoH и перенаправил ее клиенту в качестве ответа.

Итак, я сделал следующее:

  • Я использую библиотеку dohjs nodejs
  • Я разрешаю указанную ссылку следующим образом:
       const doh = require('dohjs');
const resolver = new doh.DohResolver('https://dns.google/dns-query');

let dnsAnswer = await resolver.query(`bafybeie5nqv6kd3qnfjupgvz34woh3oksc3iau6abmyajn7qvtf6d2ho34.ipfs.dweb.link`, 'A');

И получаю такой ответ:

      {
  id: 0,
  type: 'response',
  flags: 384,
  flag_qr: true,
  opcode: 'QUERY',
  flag_aa: false,
  flag_tc: false,
  flag_rd: true,
  flag_ra: true,
  flag_z: false,
  flag_ad: false,
  flag_cd: false,
  rcode: 'NOERROR',
  questions: [
    {
      name: 'bafybeie5nqv6kd3qnfjupgvz34woh3oksc3iau6abmyajn7qvtf6d2ho34.ipfs.dweb.link',
      type: 'A',
      class: 'IN'
    }
  ],
  answers: [
    {
      name: 'bafybeie5nqv6kd3qnfjupgvz34woh3oksc3iau6abmyajn7qvtf6d2ho34.ipfs.dweb.link',
      type: 'A',
      ttl: 59,
      class: 'IN',
      flush: false,
      data: '209.94.90.1'
    }
  ],
  authorities: [],
  additionals: []
}

Это похоже на действительный пакет DNS, но после его кодирования и пересылки клиенту (в данном случае Chrome) он не может его разрешить.

Единственное, о чем я мог подумать, это то, что в ответе отсутствуют дополнительные элементы, но я не уверен ... Конкретная ошибка, которую я получаю, - это DNS_PROBE_FINISHED_NXDOMAIN.

Итак, как я мог это решить?

1 ответ

Решение

Итак, как оказалось, мой ответный пакет DNS был действителен. Проблема заключалась в том, что URL-адрес в строке URL-адреса браузера не совпадал с URL-адресом, возвращаемым в разделах вопросов и ответов DNS-пакета, и это представляет проблему для браузера. Вероятно, это связано с безопасностью, но когда я изменил имя в разделах ответов и вопросов, мой DNS-пакет был принят браузером. Вопрос определенно неправильный и несоответствующий, но я сохраню его, так как этот ответ может помочь кому-то с той же проблемой при написании пользовательского DoH для использования браузерами.

Приветствую и спасибо за полезные комментарии, которые в конечном итоге помогли мне понять, что с пакетом все в порядке и что проблема была где-то в другом месте.

Другие вопросы по тегам