Привет, Хабр!

Я полгода в одиночку пилю VantageDNS, privacy-focused recursive DNS с фильтрацией. Аналог NextDNS, юрисдикция EU. Ниже честный построчный разбор того, во что мне на самом деле обходится сеть из 8 нод по миру и контрол-плейн. Не маркетинговое «около ста евро», а реальная цифра, которая каждый месяц списывается с карты: €46.27.

В конце таблица расходов и прикидка, сколько платных юзеров надо, чтобы это перестало быть хобби.

Зачем вообще делать DNS

Сначала пара слов про рынок, чтобы понятно было, зачем вписываться в нишу, где уже сидят Cloudflare, Quad9 и пара крупных нишевых игроков.

NextDNS, по слухам и косвенным признакам, делает что-то порядка $90M ARR. AdGuard публично рассказывает про десятки миллионов устройств. Control D растёт. Ниша рабочая, и она не про «изобрести DoH», а про продукт: дашборд, фильтрлисты, родительский контроль, отчёты. DNS как протокол скучный, скучный продукт вокруг внезапно нет.

Я не пытаюсь стать NextDNS. У них 50+ PoPs, команда, маркетинговый бюджет и пять лет форы. Я делаю узкую штуку: EU-only юрисдикция (Финляндия), прозрачный прайс, XMR-биллинг для параноиков, и человеческую поддержку, потому что я её сам и закрываю по ночам. Это нишевый продукт для людей, которым важен пункт «данные не уезжают в США», а не пункт «P50 в Сан-Паулу 8 мс».

И вот тут начинается экономика.

Архитектура из 8 нод — почему 8, а не 50

Первая реакция на «делаю DNS-сервис» обычно: «тебе нужен anycast и сорок локаций, иначе latency пострадает». Это правда для Cloudflare и для NextDNS. Для маленького EU-нишевого провайдера нет.

Я посчитал. P50 для DoH-резолвера в EU при двух-трёх нодах в Европе укладывается в 25-30 мс для 95% юзеров. Дальше каждая дополнительная нода даёт убывающую отдачу: добавить Варшаву к Хельсинки и Милану это улучшение на 5-8 мс для польских юзеров и ноль для всех остальных. Для рекурсивного резолвера, где сам резолв и так стоит 20-100 мс из-за upstream-цепочки, эти 5 мс на edge вообще не видны.

Поэтому 8 нод выглядят так:

                EU + neighbours
    ┌──────────────────────────────────────────┐
    │  Helsinki (FI)   ──   Reykjavík (IS)     │
    │       │                    │             │
    │       └──── Milan (IT) ────┘             │
    │                  │                       │
    │            Bratislava (SK)               │
    │                  │                       │
    │            Almaty (KZ)                   │
    └──────────────────────────────────────────┘

                Far edge
    ┌──────────────────────────────────────────┐
    │  Tokyo (JP)   São Paulo (BR)             │
    │                Auckland (NZ)              │
    └──────────────────────────────────────────┘

Пять нод покрывают EU и ближние страны, три закрывают Asia/Pacific и Южную Америку с приличным latency. Север (Reykjavík) и юг (São Paulo) — для тех редких юзеров, кому реально 5000 км до ближайшей точки.

Anycast я сознательно не делаю. Это политическое решение: anycast требует своей AS, BGP-провайдера и партнёрств, которые в итоге размывают позиционирование «EU jurisdiction». Когда твой anycast-префикс анонсится из Майами и Сингапура, говорить «мы не отдаём данные в США» становится сложнее. Geo-DNS на dns.vantagedns.com с приоритетом по latency для моего масштаба работает прилично, и я полностью контролирую, куда юзер попадёт.

Как выбирал провайдеров

Я смотрел на четыре параметра: цена за месяц, наличие нужной локации, качество сети (потери, jitter, IPv6), и сколько времени уходит на первый деплой. Имена провайдеров не называю — это рекомендация и реклама, а я предпочитаю писать про принципы. Тех, кто реально хочет, я отправляю на reddit-thread r/webhosting за месяц, и они находят сами.

Принципы такие.

Один европейский low-cost VPS-провайдер с филиалами в нужных мне странах закрыл шесть из восьми моих локаций. Базовый план на 1 vCPU и 1 GB RAM достаточен для edge-ноды: vdns-edge Go-бинарь в нагруженный час съедает 100-200 MB RAM и долю одного ядра. DNS workload это много мелких пакетов, CPU тратится на крипто (TLS handshake) и распарсивание DNS-сообщений, оба этих этапа неприлично дешёвы на современных AMD-ядрах. €1.20 в месяц с включёнными несколькими терабайтами трафика — нормально.

Две оставшиеся локации (Бразилия и Новая Зеландия) пришлось взять у того же провайдера в их региональных филиалах, потому что мой основной хостер туда не дотягивается. Тарифы те же — €1.20.

Что я не стал делать.

Не стал брать «энтерпрайз»-сегмент (AWS, GCP, Azure). И не из-за «дорого вообще», а из-за конкретной строки в их прайсинге, о которой расскажу ниже.

Не стал делать anycast у апстрим-провайдеров. Получить свою AS и анонсировать /24 в BGP — это €500-2000 единовременно и €100-300 в месяц за «BGP-friendly» хостинг. И самое важное — это размывает юрисдикцию: твой anycast-префикс физически анонсится из Майами, и аргумент «EU-only» становится наполовину сказкой.

Не стал брать dedicated-серверы в EU за €40 для edge-нод. На edge dedicated не нужен: workload помещается в 1 GB RAM, диск не нужен, всё in-memory. Dedicated имеет смысл только для control plane, где живёт Postgres и ClickHouse. Туда я взял один VPS пожирнее, об этом ниже.

И вот тут начинается главный разговор — про egress.

Egress costs — самая частая ловушка

Это пункт, на котором ломаются все, кто впервые считает «дешёвую инфру за $5» и потом получает счёт на $300.

DNS-резолвер на каждый запрос делает upstream-обращения, отвечает клиенту, шипит query log в control plane. На ноде с приличной нагрузкой это легко 1-3 TB исходящего трафика в месяц. И вот тарифы:

Класс провайдера

Inclusive egress

После лимита

Low-cost EU VPS (Hetzner, OVH, Aeza-class, …)

5-20 TB

€1-3/TB

DigitalOcean / Vultr / Linode

2-5 TB

$10/TB

AWS EC2 (US-east)

100 GB на аккаунт

0.09/GB (90/TB)

GCP Compute

200 GB

$0.085-0.12/GB

Azure

100 GB

$0.087/GB

Возьмите ноду на AWS за «$3.50 в месяц» с 1 TB inclusive (это Lightsail, у EC2 ещё хуже). Налейте на неё 2 TB реального DNS-трафика. Получите счёт $3.50 + $90 = $93.50. У low-cost EU-VPS за тот же трафик будет €1.20 + €0 = €1.20.

Это главный гэп между «дешёвой инфрой за пять долларов» и «реальностью за двести». Все облачные гиганты зарабатывают на egress, и DNS один из худших workload’ов для них из-за высокого отношения трафика к CPU. Если кто-то предлагает вам делать DNS на AWS plain-instance или на GCP, посмотрите на его счёт через три месяца, он будет интересный.

Все нормальные low-cost VPS-провайдеры (европейские и не очень) дают inclusive egress, которого хватает с запасом. Это не случайность, это бизнес-модель: они продают железо, а не трафик.

Реальная разбивка: €46.27 в месяц

Ниже построчный счёт, который мне приходит каждый месяц. Без приукрашиваний и без «ну плюс-минус полтинник».

Item

€/мес

Note

8× edge-нода (FI, IS, IT, SK, KZ, JP, BR, NZ)

9.60

8 × €1.20, 1 vCPU / 1 GB RAM / inclusive-egress

Control plane VPS (4 vCPU / 8 GB / NVMe)

14.95

Postgres + ClickHouse + API + Redis + BTCPay

Brevo (transactional email)

14.50

до 20k писем/мес

Geo-DNS / health-check провайдер

3.50

latency-routing на dns.vantagedns.com

Backup storage (S3-compatible, 100 GB)

1.72

дамп Postgres + ClickHouse parts

Domains (vantagedns.com + .net + .org amortized)

2.00

~$24/год / 12

Итого

46.27

Округлять не буду: €46.27 в месяц. Цифра, которая реально списывается с карты.

ClickHouse retention сейчас держит ~30 GB на 30-дневном окне (free план 24 часа, paid до 30 дней). Postgres ~3 GB. Redis 100 MB. Control plane VPS с 8 GB RAM и NVMe это всё спокойно тянет с запасом года на полтора при текущей траектории роста. Когда упрусь — мигрирую на dedicated за ~€40, при текущем росте это вопрос 12-18 месяцев.

TLS Let’s Encrypt, бесплатно. MoneroPay для XMR-биллинга и BTCPay self-hosted прямо на control plane, доплачивать никому не надо. Prometheus + Grafana для мониторинга там же. Это всё не отдельные строчки в счёте, а cgroups внутри одного VPS.

Edge-ноды друг с другом и с core общаются через gRPC over TLS на отдельном control-channel домене. Никакого VPN-mesh: лишний слой инкапсуляции, лишний latency, лишняя точка отказа. У восьми нод mesh решительно не нужен.

Что НЕ входит в эти €46

Дальше то, что добавляется к инфре, но обычно не считается «инфраструктурой»:

Item

€/мес

Note

Sentry (Hobby tier)

0

пока бесплатный, апгрейд когда упрёмся

GitHub (Pro)

4

private repos и Actions minutes

Plausible Analytics

9

self-hosted был, оказалось проще платить

Бухгалтерия (Holvi business account)

13

Finnish OSS, обязательно

Юридическое (амортизация регистрации Toiminimi и юриста на старте)

15

разовые ~€500, размазал на 3 года

Резерв на VAT MOSS отчёты

0

сам делаю в OSS Portal

Итого дополнительно

41

Реальная стоимость продукта в месяц получается €87.27. Половину это инфра, половину — софт и операционная обвязка вокруг бизнеса. Когда я сам считал в первый раз, я ожидал, что инфра будет доминантной строкой. По факту инфра меньше, чем GitHub + Plausible + бухгалтерия.

И ещё одна строка, которую считать или нет, личный выбор: мой собственный труд. Если бы я кодил это за рыночную ставку, продукт стоил бы тысяч пятнадцать евро в месяц только за разработку. Без флагов тестирую на себе, что довольно унизительно, но для оценки break-even это не считаем, иначе индихакерство не имеет смысла никогда.

Сколько надо платных юзеров чтобы выйти в плюс

Pro-план VantageDNS стоит €25/мес. После комиссий процессинга (Stripe ~5% effective с учётом международных карт и FX, XMR через MoneroPay ~0.5%) до меня доходит примерно €23 с подписки в среднем по плате.

Вот как выглядит экономика по ступенькам:

Платных

Gross/мес

После комиссий

После налогов (24% Finnish corp + VAT учтён)

Статус

3

€75

€69

€52

инфра окупилась

5

€125

€115

€87

инфра + софт

12

€300

€276

€210

плюс бухгалтерия и легал

30

€750

€690

€524

можно купить кофе

60

€1500

€1380

€1048

пол-зарплаты сисадмина

150

€3750

€3450

€2622

можно жить

300

€7500

€6900

€5244

пора нанимать поддержку

Три платника и сервера платят сами за себя. Двенадцать и я закрываю всю операционную обвязку. Тридцать и я хотя бы оправдываю время. Чтобы добраться до тридцати платников, по статистике NextDNS-клонов нужно где-то 1500-3000 free signups: конверсия free→paid обычно 1-3% на DNS-продуктах. Это много меньше, чем у обычного SaaS, потому что бесплатный план у DNS-провайдеров уже закрывает 90% потребностей частного юзера.

Поэтому маркетинговый прицел не «получить тысячу платных за месяц», а «получить пять тысяч free за год и конвертить медленно, через product-led рост».

Чему научился за полгода

Несколько вещей, которые я хотел бы сказать самому себе пол-года назад.

Не оптимизируй на старте. Разница между €46 и €30 на инфре это 16 евро. За эти 16 евро я бы не нанял даже один час разработчика. Час на торг с провайдером, час на выбор более дешёвого тарифа, час на миграцию, и я уже потратил больше, чем сэкономил за год. На €46 я думаю о продукте. На €30 я думал бы о провайдерах.

Один провайдер с филиалами лучше зоопарка. Я мог бы натащить ноды у пяти разных хостеров «чтобы не было single point of failure». Я не стал. Один провайдер это один биллинг, один аккаунт, один тикет-трекер для саппорта, и одни SSH-ключи, которые ротировать. Single point of failure я закрываю не «вторым хостером», а тем, что edge stateless: если нода умерла, geo-DNS уводит юзеров на соседнюю, на восстановление новой ноды у меня уходит ~12 минут с Ansible-плейбуком.

Egress это главный killer. Если кто-то говорит «у меня DNS на AWS», спросите, сколько он платит за трафик. Если он не знает, подождите пару месяцев и спросите ещё раз. Реальность, как водится, побьёт его палкой по голове.

На control plane дисковый I/O важнее CPU. ClickHouse при retention 30 дней даже на скромной нагрузке хочет приличный NVMe, а на shared SSD будет страдать. Когда выбираете VPS под control plane, не оптимизируйте на RAM, оптимизируйте на NVMe и io-priority.

Геораспределение не самоцель. Три ноды в EU + четыре по миру лучше пятидесяти размазанных, когда у тебя ноль юзеров в Бразилии. Каждая лишняя нода это деплои, мониторинг, certs, патчинг. И когда у тебя 200 платников, ты не можешь себе позволить тратить день на ноду, которая обслуживает четырёх юзеров.

По софт-стеку правило простое: экономь на софте, не на железе. Self-hosted Plausible я держал три месяца, потом понял, что €9 в месяц за SaaS-версию я отбиваю одной ночью без Grafana-алертов от Plausible-контейнера. Sentry, бесплатный tier пока хватает. ClickHouse, open source, ставлю сам, не плачу ClickHouse Cloud €200/мес. Где можно поставить open source и забыть, ставь. Где open source требует постоянного внимания (Plausible, Grafana Cloud), плати.

Что дальше

План на следующие полгода:

  • При 200 paying users мигрировать control plane с VPS на dedicated. Postgres + ClickHouse начнут уставать на 8 GB RAM при таком количестве записей в audit log. Цель — dedicated за ~€40/мес.

  • Добавить Mumbai или Bangalore. Asia-Pacific сейчас прикрыт Токио и Окленд, для индийских юзеров это всё ещё далеко.

  • Вторая control plane нода в режиме hot standby, репликация Postgres + ClickHouse. Это +€15/мес, но единая точка отказа на одном VPS начинает беспокоить уже сейчас.

  • Может быть anycast и BGP это отдельная боль. Но если проект вырастет, рано или поздно anycast станет дешевле, чем поддерживать ручной geo-routing.

Без пафоса

Никакого «exciting times» и «the future looks bright». Просто €46 на инфру, €87 с операционной обвязкой, 8 нод, три платника чтобы окупиться, тридцать чтобы оправдать время.

Если делаете что-то похожее, pro tip всего один: считайте egress до того, как выбираете хостинг. Всё остальное мелочи на фоне счёта от AWS за исходящий трафик.

И ещё. Любой нормальный европейский low-cost VPS-провайдер с филиалами и inclusive-трафиком закроет вам 90% случаев за десятку в месяц. Имена не подсказываю принципиально: я не амбассадор. Найти не сложно — берёте субреддит r/webhosting, листаете месяц назад, в каждом втором треде спорят про конкретно ваш кейс.

Ссылки

Комментарии (10)


  1. Gansterito
    18.05.2026 07:01

    Вы дважды озвучили тезис про Майами и Сингапур, но не пояснили детально причин:

    Когда твой anycast-префикс анонсится из Майами и Сингапура, говорить «мы не отдаём данные в США» становится сложнее.

    ...

    И самое важное — это размывает юрисдикцию: твой anycast-префикс физически анонсится из Майами, и аргумент «EU-only» становится наполовину сказкой.

    Вы владеете собственной AS + блоком /24. Присоединяетесь к операторам на территории Евросоюза. Есть риск, что трафик будет покидать пределы Европы, например, когда клиент сидит на одном операторе и стык с вашим аплинком у него в Штатах. Это обычная ситуация, но она же актуальна и без использования AnyCast и BGP. Так в чем проблема?


    1. cyberscoper Автор
      18.05.2026 07:01

      Тезис про Майами я действительно перегнул:)
      если AS своя, /24 свой, и пиры только с европейскими операторами, физически трафик из EU не выходит ради тебя как клиента. Транзитная маршрутизация конкретного клиента через US — отдельная история, и она у меня в geo-DNS-сетапе ровно такая же.
      Реальные причины, по которым я не делаю anycast, две, и обе про мой масштаб, а не про физику:
      1. Потеря per-user контроля над выбором ноды. С geo-DNS я отдаю A-запись, которую сам выбрал; с anycast маршрутизатор оператора клиента сам решает, к какому моему PoP его привести. На уровне жалоб саппорту вида “почему мой запрос полетел в Хельсинки, а не в Милан” anycast хуже отвечает.
      2. Операционная сложность BGP-сетапа против выигрыша. У меня 8 PoPs, не 80. Anycast окупается в виде латентного выигрыша, начиная с десятков локаций. На 8 нодах разница в p50 c geo-DNS против anycast это единицы миллисекунд. С тезисом “EU-only физически” вы абсолютно правы — он работает только на уровне моей инфры, не на уровне маршрута пакетов от клиента. Это в посте я сформулировал слабее, чем должен был.


  1. xdearboy
    18.05.2026 07:01

    Получить свою AS и анонсировать /24 в BGP — это €500-2000 единовременно и €100-300 в месяц за «BGP-friendly» хостинг

    Не совсем так. Мне, например, ASN зарегистрировали примерно за 100€, а /24 я арендовал месяц назад за ~130€, но сейчас уже отказался от него и полностью перешёл на IPv6 - просто не нуждаюсь в IPv4-адресах. Транзит с 6 апстримами у меня выходит примерно в 150$ в месяц, так что собрать нормальный BGP-сетап можно без каких-то нереальных затрат.


    1. poozza
      18.05.2026 07:01

      сейчас уже отказался от него и полностью перешёл на IPv6 - просто не нуждаюсь в IPv4-адресах

      в идеале ipv6only


    1. cyberscoper Автор
      18.05.2026 07:01

      Хороший катч мои цены были навскидку из “общего знания индустрии”, а это всегда хуже, чем свежие реальные суммы.
      Беру на заметку: €100 за ASN + €130 за /24 в аренду + ~$150 в мес. транзит с 6 апстримами это сильно ниже того, что я закладывал в голове как стоимость входа в BGP. Если не секрет, у кого арендовали /24 и какие апстримы брали для транзита? Если публично не хочется — в личку. В будущем, когда буду пересматривать решение про anycast, это будет одна из первых точек, куда я полезу.


      1. select26
        18.05.2026 07:01

        Сеть можете арендовать где угодно. На интерлир сеть будет стоить от 100 евро.

        Причем в Вашем случае мосжнл взять еще дешевле сеть из списка Spamhous - для ingress это работает.

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

        Предлагаю Вам рассмотреть NS1 от IBM как решение для GEO - закроет все ваши потребности даже на Free tier. А по надежности и функциональности вряд ли имеет конкурентов.


  1. poozza
    18.05.2026 07:01

    нишевый продукт для людей, которым важен пункт «данные не уезжают в США»

    так в nextdns же указываешь где приземлить (us/eu/asia) или ничего не собирать

    пользуясь random-location в control-d понял что нужно искуственно (по рандом) увеличивать задержку иначе по ней идёт позиционирование через dns leak [test] а так хоть чуть усложнения

    по six-eyes+++++ уже 20лет как нет private-маршрутов и все vpn что роутили траф по пути юридического сопротивления к 2007 загнулись постепенно отключая уже не годные locations


    1. cyberscoper Автор
      18.05.2026 07:01

      Про NextDNS-настройки региона да, в дашборде есть выбор US/EU/Asia и опция “не логгировать”. Это контроль над данными внутри инфры NextDNS, но не контроль над юрисдикцией самой NextDNS Inc как корпорации США: судебная повестка из американского суда обязывает их выдать всё, что у них есть, независимо от того, какой регион пользователь выбрал в UI. Различие тонкое, но для угрозы вида “США просят данные конкретного клиента через суд” оно решающее. Это та граница, на которой моя ниша вообще существует.

      Про latency-fingerprinting и random-location. Это вообще лучшее в комменте. У меня сейчас edge отвечает с детерминированной задержкой ~10-15 ms на cache hit; добавить псевдо-jitter ±5 ms я думал, но решил, что оно того не стоит. Если у вас есть конкретные примеры, когда DNS-leak-тест позиционировал через latency, киньте ссылку — это аргумент пересмотреть. Про Six-eyes и судьбу private-маршрутов.

      Так же добавлю, согласен в том, что “EU-only” это не “защищено от всех правительств планеты”. Это защищено от одного конкретного класса угроз — американских внеюрисдикционных запросов через CLOUD Act и FISA 702. От финского правосудия меня лично ничто не защищает, и не должно. Чем дальше, тем чаще приходится продавать privacy не как “у нас безопасно”, а как “у нас понятная юрисдикция, которая публикуется в transparency report и которой можно соответствовать или не соответствовать осознанно”.


  1. wanomgn
    18.05.2026 07:01

    >Юридическое (амортизация регистрации Toiminimi и юриста на старте) 15 разовые ~€500, размазал на год

    чегойто у меня при делении 500 евро на 12 месяцев - никак не получается 15 евро


    1. cyberscoper Автор
      18.05.2026 07:01

      В оригинальной таблице я размазывал на 3 года (€500/36 ≈ €14), исправил. Благодарю.