Руководства

DNS для начинающих: как привязать домен к VPS

DNS для начинающих: как привязать домен к VPS

Сервер куплен, сайт на нём настроен, а по адресу example.com всё ещё открывается старый хостинг или заглушка регистратора. Чтобы домен вёл на VPS, нужно поправить DNS-записи. Звучит сложно, но на деле это две-три строки в панели. Сложность в другом: понять, в какой именно панели их править. Ниже — как устроен DNS без лишней теории, пошаговая привязка домена к VPS и ошибки, из-за которых сайт «не открывается после переезда».

Кто за что отвечает

В привязке домена участвуют три стороны, и их легко перепутать:

  • Регистратор — у кого вы купили домен (Рег.ру, RU-CENTER, Namecheap и т. п.). Здесь домен продлевается и здесь указывается, какие DNS-серверы им управляют.
  • DNS-хостинг — серверы, которые хранят записи домена и отвечают на вопрос «какой IP у example.com». Часто это тот же регистратор, но может быть старый хостинг или отдельный сервис вроде Cloudflare.
  • Сервер — ваш VPS, где лежит сайт. Сам он в DNS ничего не решает, ему нужно только правильно настроить веб-сервер.

Самая частая ошибка новичка: записи правят в панели регистратора, а домен обслуживают DNS-серверы старого хостинга. Изменения сохраняются, но ни на что не влияют, потому что на запросы отвечает другая сторона. Поэтому первый шаг всегда один: узнать, где на самом деле живут записи.

Шаг 1. Узнайте IP сервера

Он есть в письме об активации VPS и в личном кабинете провайдера. На самом сервере его покажет команда:

ip -4 addr show scope global

Если у сервера есть и IPv6-адрес, запишите его тоже: ip -6 addr show scope global.

Шаг 2. Найдите, где управляются записи домена

Посмотрите, какие DNS-серверы (NS) указаны у домена:

dig NS example.com +short

В Windows то же самое делает nslookup -type=NS example.com. По именам в ответе понятно, куда идти:

  • ns1.reg.ru, ns3-l2.nic.ru и т. п. — записи правятся в панели регистратора;
  • ...ns.cloudflare.com — в панели Cloudflare;
  • имена старого хостинга (например, ns1.hosting.ru) — записи правятся в панели этого хостинга.

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

Шаг 3. Пропишите записи

Для сайта на VPS обычно нужно две записи, иногда четыре:

Имя (хост)ТипЗначениеЗачем
@AIPv4 сервераСам домен example.com
wwwAIPv4 сервераwww.example.com
@AAAAIPv6 сервераТолько если у сервера есть IPv6 и сайт на нём настроен
wwwAAAAIPv6 сервераТо же для www

Символ @ в большинстве панелей означает «сам домен». Где-то вместо него поле оставляют пустым или пишут домен целиком — смотрите подсказку в панели.

Для www вместо второй A-записи можно сделать CNAME на основной домен (www CNAME example.com.), тогда при смене IP достаточно поменять одну запись. А вот на сам корневой домен CNAME ставить нельзя: это запрещено стандартом, и он сломает почту и остальные записи.

Удалите старые A и AAAA. Если у домена остались записи на прежний хостинг, часть запросов будет уходить туда. Особенно коварна забытая AAAA: у вас дома IPv6 может не быть, и всё выглядит нормально, а у пользователей с IPv6 открывается старый сайт.

Не трогайте MX и TXT. Это записи почты и подтверждений (Яндекс Вебмастер, Google, настройки SPF и DKIM). Почта и сайт друг от друга не зависят: если ящики на домене у Яндекс 360 или другого сервиса, после переезда сайта на VPS они продолжат работать — при условии, что вы не удалили их записи.

Шаг 4. Дождитесь обновления и проверьте

У каждой записи есть TTL — время в секундах, на которое DNS-серверы по всему интернету запоминают ответ. Если у старой записи стоял TTL 3600, часть пользователей ещё до часа будет попадать на старый адрес. Новая запись обычно расходится за минуты, но иногда это занимает несколько часов.

Браузеру в этот момент не верьте: он и операционная система кэшируют ответы. Спросите публичные DNS-серверы напрямую:

dig @8.8.8.8 example.com A +short
dig @1.1.1.1 example.com A +short
dig @77.88.8.8 www.example.com A +short

Все три должны вернуть IP вашего VPS. В Windows: nslookup example.com 8.8.8.8. Если один сервер уже показывает новый адрес, а другой ещё старый — это нормально, нужно подождать окончания TTL.

Чтобы проверить сайт на новом сервере, не дожидаясь DNS, пропишите домен в файл hosts своего компьютера. Как это сделать и как переключить домен без простоя — в статье «Как перенести сайт с хостинга на VPS»: там же расписано, зачем за пару дней до переезда снижать TTL до 300 секунд.

Шаг 5. Настройте сервер под домен

DNS только приводит посетителя на нужный IP. Дальше веб-сервер должен понять, какой сайт отдать. В конфигурации Nginx это строка:

server_name example.com www.example.com;

Без неё Nginx отдаст сайт по умолчанию или стандартную заглушку. После правки: nginx -t && systemctl reload nginx.

Последний шаг — HTTPS. Сертификат Let's Encrypt выпускается только после того, как домен уже указывает на сервер, поэтому делайте его после смены записей. Пошагово — в статье «SSL на VPS: бесплатный сертификат Let's Encrypt».

Где держать DNS: у регистратора или отдельно

Новичку проще всего оставить DNS у регистратора: это бесплатно, записи в той же панели, где продлевается домен. Отдельный DNS-сервис имеет смысл, если нужны его возможности (CDN, защита от атак, API для автоматики).

Переключение DNS-хостинга делается сменой NS-серверов у регистратора. Порядок важен:

  1. Создайте зону у нового DNS-хостинга и перенесите туда все записи: A, AAAA, www, MX, TXT, поддомены. Список текущих записей покажет старая панель.
  2. Только после этого смените NS у регистратора.
  3. Подождите: обновление NS занимает от нескольких часов до суток, в это время ответы приходят то со старых, то с новых серверов. Поэтому записи в обоих местах должны совпадать.

Если сменить NS на пустую зону, домен «пропадёт» вместе с почтой. Это самая неприятная ошибка из всех возможных, и исправляется она так же долго, как возникла.

Свой DNS-сервер (BIND, PowerDNS) на VPS поднимать новичку не нужно: это лишняя точка отказа. Если сервер ляжет, домен перестанет отвечать вообще, а не только сайт.

Поддомены и несколько сайтов

Поддомен — это просто ещё одна запись: shop A 203.0.113.10 даст shop.example.com. Он может указывать на тот же VPS (тогда в Nginx нужен отдельный блок server с server_name shop.example.com) или на другой сервер. Один VPS спокойно обслуживает десятки доменов: все указывают на один IP, а Nginx различает их по имени.

Обратная запись (PTR)

Обычная запись отвечает на вопрос «какой IP у домена», обратная — «какое имя у IP». Для сайта она не нужна, но нужна, если с VPS будет уходить почта: без неё письма чаще попадают в спам. Делается она не у регистратора, а у владельца IP-адреса, то есть у провайдера VPS — в панели или через поддержку. Проверка:

dig -x 203.0.113.10 +short

Частые ошибки

СимптомПричинаЧто делать
Поменяли запись, ничего не изменилось даже через суткиПравили не там: NS указывают на другой DNS-хостингdig NS example.com, править записи в той панели, куда указывают NS
У одних открывается новый сайт, у других старыйНе истёк TTL или осталась старая AAAA-записьПодождать TTL; проверить dig AAAA example.com и удалить лишнее
Открывается заглушка Nginx или чужой сайтDNS верный, но на сервере нет server_name для доменаДобавить домен в конфигурацию сайта
Без www работает, с www нет (или наоборот)Нет записи для одного из вариантовЗавести A или CNAME для www и включить его в server_name
Сайт переехал, пропала почтаУдалили или не перенесли MX и TXTВосстановить записи по инструкции почтового сервиса
Домен не открывается совсем, dig ничего не возвращаетДомен не продлён или NS указывают на пустую зонуПроверить срок регистрации у регистратора, включить автопродление

Если сайт перестал открываться внезапно, без всяких переездов, начните с DNS: порядок проверки — в статье «Что делать, если сайт упал». А мониторинг доступности заметит проблему раньше посетителей.

Ещё нет сервера

Для сайта с доменом подойдёт любой тариф: DNS нагрузки на сервер не даёт. Для сайта на CMS хватит Start (2 vCPU, 2 ГБ, NVMe). Финляндия — самый быстрый отклик из России, Нидерланды — если аудитория по всей Европе.

Start в Финляндии — $10/мес   Start в Нидерландах — $10/мес

Цены указаны на момент публикации, оплата у провайдера. Подробнее о площадках: VPS в Финляндии, VPS в Нидерландах. Что настроить на сервере после покупки — в статье «Как настроить VPS после покупки».

Коротко

  • Сначала узнайте, где живут записи: dig NS example.com. Править нужно там, куда указывают NS.
  • Для сайта нужны A-записи на @ и www; AAAA — только если сайт настроен на IPv6. Старые A и AAAA удалите.
  • MX и TXT не трогайте, иначе пропадёт почта и подтверждения.
  • Проверяйте через dig @8.8.8.8, а не в браузере, и дождитесь окончания TTL.
  • На сервере пропишите домен в server_name, затем выпустите сертификат.
  • При смене DNS-хостинга сначала перенесите все записи, потом меняйте NS.