Добавьте запись DNAME в файл конфигурации dnsmasq, используя dns-rr

Я использую dnsmasq на своем домашнем маршрутизаторе для управления только некоторыми локальными Записи DNS и создание ответов split-horizon для личного общедоступного доменного имени. Я также недавно добавил настройки synth-domain для создания записей стиля ip-192-168-0-1.net.home.arpa и vm-1.vm.home.arpa с использованием нового home.arpa (см. подробности, если интересно).

Я хотел бы попробовать использовать запись DNAME, чтобы делегировать зону internal.home.arpa в псевдоним существующей зоны общедоступного домена с разделенным горизонтом (это означает, что каждый поиск в основном будет CNAME для одной и той же записи в моем общедоступном домене), но dnsmasq не имеет явной поддержки записей DNAME.

Мой вопрос: как я могу использовать настройку dns-rr для создания записи DNAME? Я знаю, что тип записи 39, но я не знаю, как генерировать необработанные шестнадцатеричные данные.


person Greg Bray    schedule 18.08.2018    source источник


Ответы (1)


Изменив скрипт Python, найденный здесь, я могу сгенерировать необработанные шестнадцатеричные данные:

#!/usr/bin/env python3
import dns.rdata
import io
import binascii

name = "example.home.arpa"
rclass = dns.rdataclass.IN
rtype = dns.rdatatype.DNAME
rdata = 'example.com.'


rd = dns.rdata.from_text(rclass, rtype, rdata)
f = io.BytesIO()
rd.to_wire(f)
wire_data = f.getvalue()
print("dnsmasq option: --dns-rr=" + name + "," + str(rtype) + "," + binascii.hexlify(wire_data).decode("ascii"))

Что приводит к следующим настройкам /etc/dnsmasq.d/home.conf:

local=/home.arpa/
dns-rr=example.home.arpa,39,076578616d706c6503636f6d00

Однако я не работаю так, как ожидалось. Я вижу ответ DNAME, но dnsmasq не отвечает на другие запросы для этой зоны с ожидаемыми записями псевдонимов:

$ nslookup -type=any example.home.arpa
Server:     127.0.1.1
Address:    127.0.1.1#53

example.home.arpa   dname = example.com.


$ nslookup -type=a www.example.home.arpa
Server:     127.0.1.1
Address:    127.0.1.1#53

** server can't find www.example.home.arpa: NXDOMAIN


$ nslookup -type=a www.example.com
Server:     127.0.1.1
Address:    127.0.1.1#53

Non-authoritative answer:
Name:   www.example.com
Address: 93.184.216.34

Это наводит меня на мысль, что dnsmasq в настоящее время не поддерживает зоны хостинга, использующие DNAME. Возможно, в следующий раз я попытаюсь перенаправить эти запросы на другой DNS-сервер, такой как coredns, или привязать с помощью server=/example.home.arpa/192.168.0.53/ и посмотреть, сработает ли это.

ОБНОВЛЕНИЕ: использование ядерных серверов для размещения записи DNAME, а затем пересылка zone из dnsmasq с использованием server=, похоже, работает. Но лучше всего я могу сказать, что dnsmasq изначально не поддерживает записи DNAME.

person Greg Bray    schedule 18.08.2018
comment
DNAME означает специальную обработку DNS-сервером, это не просто запись. См. tools.ietf.org/html/rfc6672#section-3. инструмент, который не запрограммирован со специальной логикой для DNAME, не будет обрабатывать DNAME, как указано в RFC, а просто доставит запись, как и любой другой, что бесполезно. - person Patrick Mevzek; 21.08.2018