Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Return NS record for xxx.meshname #14

Open
zhoreeq opened this issue Apr 16, 2021 · 11 comments
Open

Return NS record for xxx.meshname #14

zhoreeq opened this issue Apr 16, 2021 · 11 comments
Labels
enhancement New feature or request help wanted Extra attention is needed question Further information is requested

Comments

@zhoreeq
Copy link
Owner

zhoreeq commented Apr 16, 2021

Один из вариантов реализации полноценных поддоменов и служебных записей - возвращать помимо AAAA ещё и NS. Тогда дальнейшая реализация просто выводится за пределы собственно meshname/meship и перенести задачу поддоменов и служебных записей на DNS-сервер, поднимаемый на соответствующем IP

Originally posted by @Scondo in #7 (comment)

@zhoreeq zhoreeq added the enhancement New feature or request label Apr 16, 2021
@zhoreeq
Copy link
Owner Author

zhoreeq commented Apr 16, 2021

@Scondo Вроде как NS запись должна возвращать домен authoritative сервера, а не его IP

https://www.rfc-editor.org/rfc/rfc1035.html

3.3.11. NS RDATA format

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    /                   NSDNAME                     /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

where:

NSDNAME         A <domain-name> which specifies a host which should be
                authoritative for the specified class and domain.

NS records cause both the usual additional section processing to locate
a type A record, and, when used in a referral, a special search of the
zone in which they reside for glue information.

The NS RR states that the named host should be expected to have a zone
starting at owner name of the specified class.  Note that the class may
not indicate the protocol family which should be used to communicate
with the host, although it is typically a strong hint.  For example,
hosts which are name servers for either Internet (IN) or Hesiod (HS)
class information are normally queried using IN class protocols.

@zhoreeq zhoreeq added help wanted Extra attention is needed invalid This doesn't seem right question Further information is requested and removed enhancement New feature or request labels Apr 16, 2021
@zhoreeq
Copy link
Owner Author

zhoreeq commented Apr 16, 2021

Да, IP по стандарту нельзя возвращать, а жаль

https://serverfault.com/questions/764937/why-dont-ns-records-contain-ip-addresses

@zhoreeq zhoreeq closed this as completed Apr 16, 2021
@Scondo
Copy link

Scondo commented Apr 16, 2021

Да, IP по стандарту нельзя возвращать, а жаль

https://serverfault.com/questions/764937/why-dont-ns-records-contain-ip-addresses

Первая же ссылка в ответе говорит о возможности возвращать вместе с NS записью AAAA запись
https://serverfault.com/questions/309622/what-is-a-glue-record

Если по спецификации: в сообщении DNS https://tools.ietf.org/html/rfc1035#page-25 есть помимо секции непосредственно ответа (на запрос NS там будет DNS-имя нашего NS-сервера) есть секция дополнительной информации (последняя - Additional). Вот в этой секции и передаётся A или в нашем случае AAAA запись, связывающая имя из ответа на запрос NS с непосредственно IP-адресом

@Scondo
Copy link

Scondo commented Apr 16, 2021

Другой вопрос - надо внимательнее проанализировать какие запросы формирует система. Возможно NS не хватит, надо будет ещё возвращать SOA запись.

@zhoreeq zhoreeq reopened this Apr 17, 2021
@zhoreeq zhoreeq added enhancement New feature or request and removed invalid This doesn't seem right labels Apr 17, 2021
@zhoreeq
Copy link
Owner Author

zhoreeq commented Apr 17, 2021

https://en.wikipedia.org/wiki/Domain_Name_System#Circular_dependencies_and_glue_records

For example, if the authoritative name server for example.org is ns1.example.org, a computer trying to resolve www.example.org first resolves ns1.example.org. Since ns1 is contained in example.org, this requires resolving example.org first, which presents a circular dependency.
To break the dependency, the nameserver for the org top level domain includes glue along with the delegation for example.org. The glue records are address records that provide IP addresses for ns1.example.org. The resolver uses one or more of these IP addresses to query one of domain's authoritative servers, which allows it to complete the DNS query.

@zhoreeq
Copy link
Owner Author

zhoreeq commented Apr 17, 2021

Значит, на запрос NS xxx.meshname мы отвечаем сразу двумя resource records:

@ xxx.meshname NS ns1.xxx.meshname
ns1.xxx.meshname AAAA 200::abcd

Получается, надо захардкодить сабдомен для NS записи в имплементации или даже зарезервировать его в самом описании протокола meshname? Уже как-то не очень красиво получается.

@Scondo
Copy link

Scondo commented Apr 17, 2021

Ну а что мешает считать собственно корневой домен NS доменом?
Выделение в отдельный домен у существующих серверов нужно потому, что у них это физически отдельные сервера: сервер, который отдаёт главную страницу гугла не тот же, который отвечает за разрешение имён.

@zhoreeq
Copy link
Owner Author

zhoreeq commented Apr 17, 2021

Ну а что мешает считать собственно корневой домен NS доменом?

Сейчас в протоколе написано

"xxx.meshname" name is itself managed by the DNS server derived from "xxx" and can point to any other IPv6 address.

Надо будет вместо этого написать, что xxx.meshname всегда резолвится в AAAA запись c раскодированным IP.

@Scondo
Copy link

Scondo commented Apr 17, 2021

Надо будет вместо этого написать, что xxx.meshname всегда резолвится в AAAA запись c раскодированным IP.

Да. А если уже надо указывать другие адреса - использовать yyy.xxx.meshname, на которые указывает DNS сервер, поднятый на xxx.meshname

Но собственно почему я поднял этот вопрос в рамках альтернативной доменной зоны - поднятие своего DNS-сервера может быть сложнее чем нынешняя настройка, а без собственного DNS-сервера это всё не будет работать.

@zhoreeq
Copy link
Owner Author

zhoreeq commented May 7, 2021

Пока не совсем понятно, как сделать имплементацию, возможно понадобится возвращать SOA+glue record https://www.cloudflare.com/learning/dns/dns-records/dns-soa-record/

@Scondo
Copy link

Scondo commented May 7, 2021

Возможно. Как минимум ради скорости.

То есть возможно SOA с MNAME xxx.meshname приведёт к дальнейшему запросу A|AAAA xxx.meshname у "корневой" зоны meshname. Но если сразу приклеить - будет на 1 запрос короче и ergo быстрее

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants