Andrey Stolyarov

Андрей Викторович Столяров: сайт автора

DNS-сервер для FEDAnet

Wed Sep 10 00:10:00 2025 UTC

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

При этом крайне желательно, чтобы за всеми доменами, кроме .feda, этот DNS-сервер умел ходить к другому DNS-серверу, какой в конфигурации скажут. Хотя без этого можно и обойтись, если эти два сервера поменять местами и основному сказать, что .feda делегирован на тот, который тот -- но это сложнее (ненамного, да, но объяснить это людям, не очень хорошо понимающим в DNS, будет совсем нетривиально — а таких, судя по гостевухе, как-то ненормально до фига).

В идеале это вообще должна быть библиотека (или "фреймворк", чем бы он ни был) для реализации своих собственных DNS-серверов. Ну и написано должно быть на Си.

Кто-нибудь видел что-нибудь подходящее? Наверняка ведь я не первый, кому такое понадобилось: когда в организации десяток тысяч компьютеров, классические DNS-зоны даже если генерить скриптами, всё равно как-то странно будет смотреться.


From Anonymous (unverified) Sat Sep 20 13:19:56 2025 UTC pencil

Адреса

А точно ли это хорошая идея хардкодить дефолтные айпи адреса, пусть даже и для безобидного natcheck? Ясное дело что там можно и свой вставить, но как будто для пущей децентрализации лучше чтоб в коде их вообще не было, а все подставлял пользователь, явно.

parent From Andrey V. Stolyarov profile Sat Sep 20 13:28:22 2025 UTC pencil

userpic

Re: Адреса

Ты вообще о чём, дядя? За базар следует отвечать, или номера строк в моём коде, где дефолтные айпи адреса, или извинения.

parent From Anoyimous (unverified) Sat Sep 20 13:45:01 2025 UTC pencil

Re: Re: Адреса

Да, извините, оговорился, я имел ввиду доменный адрес а не айпи

#define DEFAULT_HOST "nc1.feda.croco.net"

Но сути моего коммента это не меняет.

parent From Andrey V. Stolyarov profile Sat Sep 20 13:56:03 2025 UTC pencil

userpic

Re: Re: Re: Адреса

Предлагаете тупо заставить пользователя всегда указывать хост? И чем это лучше? Между делом, прибитые гвоздями доменные имена встречаются намного чаще, чем вам кажется. Например, в утилите whois — ну, это первое, что в голову пришло.

На самом деле моя задумка такова, что сайтов, посвящённых FEDAnet, должно стать больше одного. Именно поэтому я даже не пытался занять домен fedanet ни в какой из публичных иерархий и планирую в recommended policies включить явный запрет на сайты, посвящённые fedanet и расположенные на доменных именах вида {feda,fedanet,feda-net}.PPP, где PPP — произвольный доменный суффикс, публично доступный для регистрации. Вместо этого все сайты, посвящённые FEDAnet, должны располагаться на поддоменах персональных доменов майнтейнеров.

На каждом таком сайте его владелец может распространять архив исходников со своим собственным DEFAULT_HOST. Можно даже это доменное имя вынести в отдельный файл, подобно тому, как версия берётся из Version при сборке.

parent From Anonymous (unverified) Sat Sep 20 14:17:01 2025 UTC pencil

Re: Re: Re: Re: Адреса

> Предлагаете тупо заставить пользователя всегда указывать хост?

Именно так

> И чем это лучше?

Хотя бы тем, что если вдруг домен feda.croco.net скомпромитируют, это не затронет лавиной подавляющее большинство, и если в случае natcheck ничего серьезного не будет, то вот если сделать дефолтный список бутстрапных нод, а их потом взломают, можно будет много нехороших вещей натворить.

> На самом деле моя задумка такова, что сайтов, посвящённых FEDAnet, должно стать больше одного

Оно то может и должно, но не факт что будет, вот например сколько вы видели альтернативных сайтов, распространяющих tor? Я ни одного, а это между прочим самая популярная наложенная сеть, хоть и хреновая.

> Между делом, прибитые гвоздями доменные имена встречаются намного чаще, чем вам кажется

И это никак подобную практику не оправдывает, js на сайтах тоже встречается часто, популярность подхода вообще не метрика.

parent From Andrey V. Stolyarov profile Sat Sep 20 16:11:02 2025 UTC pencil

userpic

Re: Re: Re: Re: Re: Адреса

> Именно так

Ну так фигушки.

> если вдруг домен feda.croco.net скомпромитируют

Во-первых, скомпромЕтируют, а во-вторых, если его скомпрометируют в текущей реальности, то тут есть два варианта: если я сам как физлицо останусь активен, я как-нибудь найду способ сообщить публике свои новые реквизиты для связи; а вот если кто-то справится домен грохнуть вместе со мной, то софтина в ходе этого катаклизма то ли исчезнет совсем (и тогда уже пофигу, у кого там куда шляпа сдвинута), то ли кто-то её подхватит — но у того, кто подхватит, изменить список дефолтных хостов будет, пожалуй, самой мЕньшей из проблем.

> затронет лавиной подавляющее большинство

Это какое-то пустозвонство, пардон. Какая ещё лавина, каким способом? Хост указать можно, во встроенном help'е написано, как конкретно, в доках в тарболе есть инструкция, как самому поднять систему серверов для natcheck'а. А если nc1.feda.croco.net не просто ляжет, а кто-то, кто его у меня угонит, попытается делать какую-то специально обученную бяку, то мне, честно говоря, не вполне понятно, чего конкрктно он сможет добиться. Как максимум, сервак может сказать, что peer'ы у него есть, но на самом деле никому дейтаграммы не посылать, а в роли самих peer'ов указать... э... я даже не знаю, что. В общем там сразу понятно будет, что с серверами какая-то хрень творится. Ну а в автоматическом режиме проверка условий подключения, видимо, будет происходить об свою ноду, если она на постоянном ip-адресе, или об какую-нибудь дружественную, если своя за NAT'ом. Т.е. там никак это имя хоста задействовано не будет.

> вот если сделать дефолтный список бутстрапных нод

Ткните пальцем, где у меня дефолтный список бустрапных нод. У меня пока что ощущение, что такового нет никакого, ни дефолтного, ни кастомного, ни гвоздями прибитого, ни динамического. Ну вот вообще никакого. Потому что я ещё до его организации не добрался.

Как конкретно этот список будет функционировать, пока не вполне понятно, но уж точно он не будет забит гвоздями в код. Я планировал что-то вроде такого — у каждого держателя бутстрапной ноды в любом случае есть в каком-то виде "честный" IP-адрес, и скорее всего на нём можно поддерживать обычный "ванильный" вебсайт, вот на такие сайты выкладывать (в виде текстового файла) списки адресов, сформированные динамически прямо-таки самой нодой. Ну и ссылки друг на дружку делать, чтобы если кого-то из них кокнут или он сам сдуется, публика знала, куда податься.

> сколько вы видели альтернативных сайтов, распространяющих tor

Моя основная претензия к tor'у как раз и состоит в том, что этот проект полностью контролируется отдельно взятой корпорацией (хоть двести раз "некоммерческой"), и никаких поползновений к смягчению этой ситуации не проявляет. Там, собственно говоря, и стимула никакого нет ни для кого пытаться это всё "подстраховать" альтернативными источниками.

> популярность подхода вообще не метрика

А я не про популярность. Я про то, что сам по себе подход вполне рабочий. И, в отличие от JS, я недостатков не вижу ваще от слова совсем. Сейчас пользователь может указать имя хоста, а так он будет обязан указывать имя хоста. Я как не видел, чем это плохо, так и не вижу.

From Ilya profile Fri Sep 12 12:07:54 2025 UTC pencil

DNS

https://www.nlnetlabs.nl/projects/ldns/about/

Подойдет?

parent From Andrey V. Stolyarov profile Fri Sep 12 12:33:42 2025 UTC pencil

userpic

Re: DNS

Надо смотреть, спасибо

From Глеб Семенов (unverified) Thu Sep 11 20:37:36 2025 UTC pencil

DNS-сервер для FEDAnet

И еще один вариант -- https://serverfault.com/questions/22055/open-source-dns-server-with-database-backend

Дальше пишешь stored-процедуры какие тебе надо.

parent From Andrey V. Stolyarov profile Fri Sep 12 08:47:34 2025 UTC pencil

userpic

Re: DNS-сервер для FEDAnet

Тогда проще генерить зоны. Вообще когда предлагают использовать DBMS (любую, и для любой задачи) — это повод поинтересоваться ментальным здоровьем. А тут об этом вообще речи идти не может, мне бы никогда не пришло в голову предлагать каждому пойнту (или даже каждой ноде, хрен редьки не сильно слаще) майнтейнить ещё и субд. Особенно учитывая, что хранить-то в ней вообще-то нечего.

parent From Глеб Семенов (unverified) Fri Sep 12 11:32:36 2025 UTC pencil

Re: Re: DNS-сервер для FEDAnet

Э.дядь... Тогда надо "точнее формулировать начальные условия". Из твоего описания следует, что тебе нужен DNS-сервер с возможностью проксирования нелокальных зон, при этом запросы в локальную зону следует интеллектуально обрабатывать. И так же из твоего ТЗ неявно следует, что интеллектуальная обработка может меняться время от времени. А из этого, в свою очередь, вытекает то, что скрипт обработки должен быть внешним по отношению к самому серверу.

Если тебе хочется просто как-то интеллектуально обрабатывать запросы в свою зону и обработка "прибита гвоздями", то тупо бери любой проксирующий DNS и прикручивай к нему пару процедур обработки.

Опять же, из твоего ТЗ не следовало, что означенный DNS-сервис должен исполняться на каждой ноде твоей виртуальной сети. Я, грешным делом, полагал, что DNS-сервер -- это таки сервер (возможно с зеркалами), но никак не хрень, размазанная по всем клиентам. А то я б тебя послал бы вон к моему старому приятелю Олегу Ховайко, который Mr. Emercoin. Этот удивительный человек умудрился прикрутить DNS к егонному блокчейну, после чего мы его по дружески троллили, что ты, братан, изобрел /etc/hosts с rsync'om :)

parent From Andrey V. Stolyarov profile Fri Sep 12 11:34:51 2025 UTC pencil

userpic

Re: Re: Re: DNS-сервер для FEDAnet

> никак не хрень, размазанная по всем клиентам

В FEDAnet нода — это уж никак не клиент. Скажем так, ничего "более серверного", чем нода, там просто идеологически быть не может.

parent From Глеб Семенов (unverified) Fri Sep 12 11:46:54 2025 UTC pencil

Re: Re: Re: Re: DNS-сервер для FEDAnet

СУБД SQLite называется. Что ты там мантейнить собрался?

parent From Andrey V. Stolyarov profile Fri Sep 12 11:50:30 2025 UTC pencil

userpic

Re: DNS-сервер для FEDAnet

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

parent From Глеб Семенов (unverified) Fri Sep 12 12:08:41 2025 UTC pencil

Re: Re: DNS-сервер для FEDAnet

SQlite -- второй по популярности пакет после ядра линукса... А задачи для него самые разные. Это просто удобный сторадж для любых данных.

parent From Andrey V. Stolyarov profile Fri Sep 12 12:40:30 2025 UTC pencil

userpic

Re: Re: Re: DNS-сервер для FEDAnet

> SQlite -- второй по популярности пакет после ядра линукса...

В дерьме определённо что-то есть, миллиарды мух не могут ошибаться.

Ещё раз: только конченные дебилы могут применять SQLite. То обстоятельство, что конченных дебилов в мире очень много, никак ситуацию не меняет.

> Это просто удобный сторадж

Ты охуел? Как вообще что бы то ни было с SQLем в пузе может быть хоть для чего-то удобно?

> А задачи для него самые разные.

Для него не существует в природе ни одной задачи. И существовать не может. Разве что есть такая задача — дебилов метить: кто за SQLite схватился, тому на лоб чёрную метку и дел с ним больше не иметь, ибо опасно.

UPD: Так, вот что, всё. Найди себе другой сайт и там продвигай свои бредни, здесь не получится.

parent From Anonymous (unverified) Tue Sep 16 19:17:29 2025 UTC pencil

Re: Re: DNS-сервер для FEDAnet

> оно применяется в таких задачах, для которых никакой SQL не то что не нужен, а просто не может быть нужен в силу ничтожности масштаба

А что, разве существуют такие задачи, для которых SQL все таки нужен?

parent From Andrey V. Stolyarov profile Tue Sep 16 20:12:50 2025 UTC pencil

userpic

Re: Re: Re: DNS-сервер для FEDAnet

SQL как таковой, разумеется, не нужен нигде и никогда, это какой-то жирный кусок бреда и вообще уёбище страшенное, а не язык запросов. Но я в принципе могу себе представить и такие задачи, где нужна СУБД, и такие, где нужен достаточно развесистый язык запросов, позволяющий формулировать логические связи между кортежами разных отношений, только, конечно, это должно быть что-то осмысленное вроде Пролога или Дэйталога. А ещё есть одно вполне тривиальное утверждение: язык запросов, или, точнее, его интерпретатор может быть посредником между живым человеком и СУБД, но никогда — между программой и СУБД. Между тем, обычно в нашем замечательном индустриальном мейнстриме SQL-запросы как раз выдают именно программы, и тут уж всё просто: это однозначный признак стада безмозглых обезьян, которым следует руки оторвать и глаза повыкалывать, чтоб они больше не засирали мир своими подельями.

parent From Vlad A. (unverified) Fri Sep 19 10:27:49 2025 UTC pencil

Re: Re: Re: Re: DNS-сервер для FEDAnet

"SQL не нужен" я даже поддерживаю - синтаксис пытается быть простым для "обычных людей", и по итогу получается нечетким, уродливым и дырявым. Плюс, да, в таком сценарии он почти и не используется, большинство запросов формируется всякими билдерами и ORM-ками. А есть ли вообще какие-то адекватные реляционные СУБД, не использующие SQL?

parent From Andrey V. Stolyarov profile Fri Sep 19 14:06:54 2025 UTC pencil

userpic

Re: DNS-сервер для FEDAnet

Насколько я вижу, адекватных СУБД нет вообще. И я совершенно не уверен, что такое явление вообще возможно.

parent From Vlad A. (unverified) Wed Oct 1 11:08:13 2025 UTC pencil

Re: Re: Re: Re: DNS-сервер для FEDAnet

> язык запросов, или, точнее, его интерпретатор может быть посредником между живым человеком и СУБД, но никогда — между программой и СУБД

Вот здесь интересно ваше мнение, а как же тогда должно строиться взаимодействие между бэкенд-приложением и реляционной СУБД в которой оно хранит данные? API-интерфейс "общения" между ними должен использовать другой язык запросов, не человекочитаемый и более безопасный? Или что-то принципиально другое, например формирование запросов уже на стороне СУБД, или хранимые процедуры?

parent From Andrey V. Stolyarov profile Wed Oct 1 12:02:49 2025 UTC pencil

userpic

Re: Re: Re: Re: Re: DNS-сервер для FEDAnet

> бэкенд-приложением

Я тебя, обезьяна вебанутся, сюда звал? Нет? Ну так вот как припёрся, так и свали отсюда.

Идея хранить веб-контент в СУБД может прийти только в голову, где вместо мозга кость; для вебанутых это, впрочем, обычное дело, там даже у тех, у кого мозг изначально был, он довольно быстро в кость превращается. Ну а формальный ответ на вопрос следующий: в этой ситуации СУБД как отдельная софтина не имеет права на существование, как и язык запросов, а равно как и те персонажи, кто соответствующую связку слепили. Руки отрывать или как минимум не подпускать к компьютерам на пушечный выстрел.

From Глеб Семенов (unverified) Thu Sep 11 20:25:09 2025 UTC pencil

DNS-сервер для FEDAnet

> когда в организации десяток тысяч компьютеров

то с этим неплохо DHCP и windows-домены справляются. Сервисов, которым нужно прописываться в корпоративный DNS, не так много.

parent From Andrey V. Stolyarov profile Fri Sep 12 08:50:30 2025 UTC pencil

userpic

Re: DNS-сервер для FEDAnet

Теоретически можно вообще без DNS работать, но возможность не повод.

From Глеб Семенов (unverified) Thu Sep 11 20:20:56 2025 UTC pencil

DNS-сервер для FEDAnet

Ну тут варианта три. Или писать специализированный интерпретатор языка "определения зон", который, насколько я понимаю проблему, будет в основном декларативным. Тут можно посмотреть, как написаны скрипты для udev, например.

Ну, или ембедить в код твоего DNS-сервера какой-нибудь LUA, например, и писать на нем скрипты. Вероятно, придется реализовать какой-то набор сервисных функций, которые будут зваться из скрипта интерпретатором и выполняться основным кодом. Ну, так как делает броузер, выполняя JavaScript.

Или снимать требование "писать на С", и писать на чем-то, у кого есть в пузе eval (erlang?) В принципе, это допустимо, потому как DNS -- это отдельный сервис, и на чем он писан не так важно.

parent From Andrey V. Stolyarov profile Fri Sep 12 08:49:11 2025 UTC pencil

userpic

Re: DNS-сервер для FEDAnet

Это всё ответ не на тот вопрос, который был задан. *КАК* задать правила — я сам как-нибудь соображу. Разумеется, там не будет ни декларативных языков, ни тем более Lua, ты бы мне ещё питон посоветовал. Но это как раз вообще не проблема ни в каком виде, там все правила, которые потребуются, на том же Си пишутся в два десятка строчек. Меня интересует, как избежать самостоятельной реализации DNS-протокола.

parent From Максим Клочков profile Fri Sep 12 09:46:57 2025 UTC pencil

Re: DNS-сервер для FEDAnet

> как избежать самостоятельной реализации DNS-протокола.

На dnsmasq не смотрел? Маленький, на Си. Много лишнего, вроде DHCP, но вроде бы выкидывается без проблем, там даже условная компиляция для этого предусмотрена.

> чтобы за всеми доменами, кроме .feda, этот DNS-сервер умел ходить к другому DNS-серверу, какой в конфигурации скажут

Вот это - точно умеет :)


pencil

пояснение


Вы находитесь на официальном сайте Андрея Викторовича Столярова, автора учебных пособий по программированию и информационным технологиям.

Если вы искали сайт замечательного писателя-фантаста Андрея Михайловича Столярова, то вам, к сожалению, не сюда.

Андрей Михайлович Столяров в библиотеке Мошкова

Авторские права © Андрей Викт. Столяров, 2009 — 2025