Как бесплатно получить собственный домен?

В 1 прекрасный момент у меня появилось желание получить доступ к своему серверу не только из домашней сети, но и из Интернета. Для себя выбрал способ доступа через DDNS (Duck DNS).

Динамический DNS (DDNS) — технология, позволяющая информации на DNS-сервере обновляться в реальном времени и по желанию в автоматическом режиме. Она применяется для назначения постоянного доменного имени устройству (компьютеру, сетевому накопителю) с динамическим и статическим IP-адресом. Это может быть IP-адрес, назначенный вручную, полученный по DHCP или по IPCP в PPP-соединениях, например при удалённом доступе через модем. Другие машины в Интернете могут устанавливать соединение с этой машиной по доменному имени и даже не знать, что IP-адрес изменился.

- wikipedia.org

  1. Чтобы работать с Duck DNS необходим выделенный статический IP-адрес («белый IP»), который возможно получить у Вашего оператора. Чтобы понять какой у Вас IP-адрес достаточно сверить с этим списком диапазонов для «серых» IP-адресов:

  • 10.0.0.0 — 10.255.255.255 (маска подсети для бесклассовой (CIDR) адресации: 255.0.0.0 или /8);

  • 100.64.0.0 — 100.127.255.255 (маска подсети 255.192.0.0 или /10). Данная подсеть рекомендована согласно RFC 6598 для использования в качестве адресов для CGN (Carrier-Grade NAT);

  • 172.16.0.0 — 172.31.255.255 (маска подсети: 255.240.0.0 или /12);

  • 192.168.0.0 — 192.168.255.255 (маска подсети: 255.255.0.0 или /16). Посмотреть IP-адрес можно в настройках Вашего роутера.

  1. Регистрируемся на Duck DNS выбранным способом. |800 Сервис позволяет связать домен вида <domain>.duckdns.org c Вашим IP-адресом.

  2. Для автоматического обновления IP-адреса можно использовать cron-задание или docker. Я выбрал вариант через docker. Создаем папки и файлы:

mkdir config_duckdns
touch {.env,docker-compose.yml}

Заполняем свои переменные через nano .env:

SUBDOMAIN=your_subdomain
TOKEN=your_token

Заполняем docker-compose через nano docker-compose.yml:

services:
  duckdns:
    image: lscr.io/linuxserver/duckdns:latest
    container_name: duckdns
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
      - SUBDOMAINS=${SUBDOMAIN}
      - TOKEN=${TOKEN}
      - UPDATE_IP=both
      - LOG_FILE=false
    env_file: ".env"
    volumes:
      - ./config_duckdns:/config
    restart: unless-stopped

Не нашел как периодичность обновления IP-адреса настроить, но по моим наблюдениям в течение 3 минут IP-адрес обновляется и меня это устраивает.

В результате имеем возможность обращаться к нашим сервисам не по IP-адресу, а по доменному имени. Как с этим работать далее опишу в следующих статьях.

Ссылки:

  1. Как установить Proxmox?

  2. Как установить Docker?

  3. Зачем нужен собственный сервер в 2025?