Я не понимаю, зачем мне нужен и преобразователь DNS, и DNS-сервер?
Это не то различие, которое вы должны проводить.
Важное различие в DNS-серверах заключается между:
- авторитетный сервер имен
- рекурсивный сервер имен
(и вы можете найти другие, такие как «тупиковый» преобразователь и их комбинации; полные определения см. в RFC 8499).
Авторитетный сервер имен имеет полные данные об одной или нескольких зонах (а зоны обычно имеют два, а иногда и более авторитетных сервера имен для балансировки нагрузки/отработки отказа).
Рекурсивный сервер имен в основном не имеет данных (при запуске) и будет выполнять запросы от имени клиента и рекурсивно следовать всем делегированиям и записям CNAME, пока не обнаружит ошибку или ответ на запрос клиента.
Рекурсивный сервер имен, который вы используете (либо на вашем компьютере, либо у вашего интернет-провайдера, либо на каком-то удаленном сервере, таком как Google Public DNS или Cloudflare, или другие) знает о корневых серверах имен и свяжется с ними, чтобы получить данные о серверах имен TLD и т. д. и так далее, чтобы наконец разрешить нужное вам имя.
Каждый полномочный сервер имен имеет данные только для зон, которые он администрирует. Если вы запросите его для чего-либо еще, он может либо отказаться отвечать (ответить на уровне DNS с кодом REFUSED), либо ответить делегированием, чтобы вы знали, что вы (здесь вы являетесь рекурсивным сервером имен, выполняющим запрос) должны связаться с другим авторитетный сервер имен.
«DNS-преобразователь» и «DNS-сервер» неоднозначны. «DNS-преобразователь» также является «DNS-сервером» в том смысле, что он запускает программное обеспечение «DNS», действующее как сервер (принимающий запросы и отвечающий). DNS устроен так, что один и тот же порт (53) используется как для авторитетных, так и для рекурсивных операций, что приводит к некоторой путанице (в именовании проблем для компьютеров нет).
Некоторое программное обеспечение серверов имен является авторитетным только по дизайну (например, NSD, Yadifa, KnotDNS), некоторые только рекурсивные (например, Unbound), а некоторые могут быть настроены в любом режиме (например, Bind, PowerDNS), даже если рекомендуется не смешивать оба режима работы внутри одного и того же процесса.
RFC 8499 — настоящий кладезь информации, и его рекомендуется прочитать.