Народный

Сеть

Dynamic DNS — DDNS для self-host VPN с динамическим IP

Сервис, автоматически обновляющий DNS-запись при смене IP. Критичен для self-host VPN-серверов на домашних роутерах. DuckDNS, No-IP, Cloudflare API, Yandex Cloud DNS.

Определение

Dynamic DNS (DDNS) — сервис, автоматически обновляющий DNS A-запись при смене IP-адреса клиента. Используется на хостах, которые не имеют статического IP (домашние интернет-подключения, мобильный 4G, ряд VPS-провайдеров). Клиент периодически (раз в 5 минут или по событию смены IP) запрашивает у DDNS-провайдера API-апдейт записи home.example.com → новый IP.

В контексте self-host VPN DDNS позволяет хранить устойчивое имя для подключения, даже если провайдер ротирует выданный IP каждые сутки/неделю.

Как работает

  1. Регистрация: создаёшь поддомен у DDNS-провайдера (например, mihail-vpn.duckdns.org на DuckDNS).
  2. Получение токена: сервис выдаёт API-token для аутентификации updates.
  3. Установка update-клиента:
    • На роутере: встроенная функция (OpenWrt, ASUS Merlin, Mikrotik — все имеют).
    • На Linux-сервере: ddclient, кастомный bash-скрипт через curl + cron.
    • На VPS: cron + curl с API endpoint провайдера.
  4. Обновление: клиент шлёт HTTP GET/POST с токеном и текущим IP. Сервер DDNS обновляет A-запись.
  5. TTL: обычно низкий (60-300 сек), чтобы изменения распространялись быстро.

DDNS-провайдеры (2026)

ПровайдерБесплатный tierСвой доменNotes
DuckDNSДа, 5 поддоменовНетЛегендарный free, API простой
No-IP1 поддомен, требует подтверждение раз в 30 днейPro tierСтарый, надёжный
Cloudflare APIБесплатно, если домен в CloudflareСвой домен обязателенЛучший вариант если уже на CF
Yandex Cloud DNSСвой домен на Yandex ЗонеБесплатно в рамках Yandex DNSРФ-friendly, но требует Yandex-аккаунт
deSEC.ioБесплатно с DNSSECПоддомен у deSEC или свойБерлинский некоммерческий
dynv6.netБесплатно, IPv6-friendlyПоддоменХорош для IPv6-only setups

Использование в self-host VPN

Сценарий: дом → роутер → подключение к OpenVPN/WireGuard серверу, работающему дома на NAS или Mini-PC, к нему хочешь подключаться из города.

  1. Настройка DDNS на роутере → home.duckdns.org всегда показывает текущий public IP.
  2. VPN-сервер слушает UDP:51820 (WG), TCP:1194 (OpenVPN).
  3. На роутере port forwarding WAN:51820 → LAN:51820.
  4. На VPN-клиенте: endpoint = home.duckdns.org:51820.
  5. Клиент сам перерезолвит имя если IP сменился (но WG не делает re-resolve при потере handshake — нужен PersistentKeepalive или ручной reconnect).

DDNS и WireGuard

Подводный камень: WireGuard НЕ делает re-resolve endpoint после первого DNS-запроса. Если IP сменится — туннель «зависнет», ожидая ответ от старого IP.

Решения:

  • Bash-script на клиенте: при потере handshake более 60 сек — wg-quick down && wg-quick up.
  • wireguard-tools v1.0.20210914+: добавлена опция Endpoint = home.duckdns.org:51820 — re-resolve при reconnect.
  • systemd-networkd: EndpointResolveType= (Linux).

DDNS и приватность

  • DDNS-провайдер видит ваш public IP. Если использовать noip или duckdns с реальным email/аккаунтом — DDNS-оператор знает связь «вы → этот IP».
  • DNS-запросы при resolve hostname видны вашему провайдеру (если без DoH/DoT).
  • Лучший пример приватности: Cloudflare с anonymous API-token, либо self-host BIND9 + nsupdate.

Альтернативы для self-host VPN

  1. Static IP от провайдера: 50-300₽/месяц обычно. Полностью устраняет DDNS.
  2. VPS с публичным IP: stop-host для VPN-сервера на DigitalOcean/Hetzner — 5$/мес. IP не меняется.
  3. Tailscale / ZeroTier: mesh-VPN с собственным relay-fallback’ом. Hostname резолвится через их сервис. Полностью обходит DDNS.
  4. IPv6: если провайдер даёт IPv6-prefix (большинство РФ-домашних 2025+) — он часто статический. Меньше нужно DDNS.

В России 2026

  • DuckDNS, No-IP: не блокируются. Работают.
  • Cloudflare: домен на CF — рабочая опция, но сам Cloudflare IP периодически попадает в РКН-blocklist (см. историю с CF-proxy в 2022). DNS-only mode + Yandex DNS как backup.
  • Yandex Cloud DNS: РФ-вариант, юридически чист.

Источники

Связанные термины

  • Bridge mode — связанная проблема при self-host setup.
  • NAT traversal — другая часть self-host puzzle.
  • Split tunneling — часто нужно для home-VPN.
  • WireGuard — основной протокол для self-host.
  • OpenVPN — альтернатива WG для self-host.