> Полный список статей есть в [llms.txt](https://docs.f3cloud.com/llms.txt). Markdown-версия есть у каждой страницы, достаточно добавить .md к её адресу. Эта страница в Markdown: [https://docs.f3cloud.com/ru/vps/domain-to-vps.md](https://docs.f3cloud.com/ru/vps/domain-to-vps.md).

# Как привязать домен к VPS – DNS-записи A, AAAA, CNAME, MX и TXT

Как привязать домен к VPS. Как работает DNS, какие бывают записи A, AAAA, CNAME, MX, TXT и NS, где их создавать, что такое TTL и почему домен начинает работать не сразу, как проверить запись через dig и nslookup. Пошагово для любого регистратора.

Сервер доступен в интернете по IP-адресу, но запоминать цифры неудобно, да и многим программам нужен именно домен. Сайту нужен домен для сертификата HTTPS, почтовым сервисам для проверки отправителя, а многим приложениям для красивой ссылки. Чтобы домен вёл на ваш сервер, достаточно создать для него одну-две **DNS-записи**. В этой статье мы разберём, как устроена система DNS, какие записи бывают и зачем они нужны, а затем по шагам привяжем домен к VPS и проверим, что всё работает.

***

## Как работает DNS

Когда вы набираете в браузере адрес `example.com`, компьютер сначала должен узнать, какой IP-адрес стоит за этим именем, ведь в сети пакеты доставляются только по адресам. Этим занимается система доменных имён, DNS. Сам компьютер почти ничего о ней не знает и задаёт вопрос **DNS-резолверу**. Обычно это сервер интернет-провайдера или публичный сервис вроде `1.1.1.1` или `8.8.8.8`. Если резолвер недавно уже отвечал на такой же вопрос, он возьмёт ответ из своей памяти. Если нет, ему придётся пройти по цепочке серверов.

Цепочка начинается с корневых серверов DNS. Они не знают адреса `example.com`, но знают, какие серверы отвечают за зону `.com`. Те, в свою очередь, тоже не хранят нужную запись, но знают, какие **NS-серверы** обслуживают сам домен `example.com`. Именно эти серверы хранят записи домена и дают окончательный ответ. Какие NS-серверы отвечают за ваш домен, указывается у **регистратора**, то есть у компании, где вы купили домен. Чаще всего это DNS-серверы самого регистратора, и тогда записи редактируются в его панели. Но NS можно указать и другие, например серверы Cloudflare, и тогда записи нужно создавать уже там. Это частая причина недоразумений, когда человек добавляет запись у регистратора, а домен продолжает обслуживаться совсем другим сервисом.

Получив ответ, резолвер запоминает его на время, которое задано в самой записи. Это время называется **TTL** и указывается в секундах. Если у записи TTL равен 3600, резолвер целый час будет отдавать сохранённый ответ и не станет переспрашивать NS-сервер. Отсюда и знаменитое «обновление DNS», которое якобы длится до 24 часов. На самом деле запись меняется на NS-сервере сразу, но резолверы по всему миру продолжают отдавать старый ответ, пока у них не истечёт TTL. Новая запись, которой раньше не было, обычно начинает работать за несколько минут. Дольше всего ждать приходится при смене NS-серверов домена. Сведения о них резолверы хранят долго, например в зоне `.com` это 2 суток, а в зоне `.ru` 4 суток, поэтому часть посетителей ещё какое-то время будет попадать на старые серверы.

***

## Какие бывают DNS-записи

* **A** связывает имя с IPv4-адресом, например `example.com` и `203.0.113.10`. Это главная запись для привязки домена к серверу.
* **AAAA** делает то же самое для IPv6-адреса. Каждый наш сервер получает подсеть IPv6, поэтому эту запись тоже стоит добавить.
* **CNAME** делает одно имя псевдонимом другого. Например, `www.example.com` можно направить на `example.com`, и тогда при смене IP-адреса менять придётся только одну запись. CNAME нельзя создать для самого домена без поддомена.
* **MX** указывает, какие серверы принимают почту для домена. Её настраивают по инструкции почтового сервиса, например Яндекс 360 или Gmail.
* **TXT** хранит произвольный текст. В нём записывают правила SPF для почты и коды подтверждения, которые просят Google, Яндекс и другие сервисы.
* **NS** показывает, какие серверы обслуживают домен. Их меняют у регистратора, а не в списке записей.

Есть ещё обратная запись **PTR**, которая сообщает, какой домен у IP-адреса. Её задают не у регистратора, а у владельца IP-адреса, то есть у нас. Как это сделать, рассказано в статье про [управление сервером](https://docs.f3cloud.com/ru/client-area/upravlenie-serverom.md#ip-adresa-i-obratnaya-zapis-ptr).

***

## Что понадобится

* **Домен** и доступ к панели, где редактируются его DNS-записи.
* **IP-адрес сервера**. Его видно в личном кабинете по кнопке <kbd>IP-адреса</kbd>, подробнее в статье про [управление сервером](https://docs.f3cloud.com/ru/client-area/upravlenie-serverom.md#ip-adresa-i-obratnaya-zapis-ptr).
* **IPv6-адрес сервера**, если хотите добавить запись AAAA. Его покажет команда `ip -6 addr show scope global` на сервере, адрес указан после слова `inet6` до знака `/`.

***

## 1. Узнайте, где редактировать записи

Прежде чем что-то создавать, проверьте, какие NS-серверы обслуживают домен. Выполните на сервере или на своём компьютере команду, подставив свой домен.

```bash
dig +short NS example.com
```

Если в ответе серверы вашего регистратора, записи создаются в его панели. Если там, например, `ns.cloudflare.com`, как у домена `example.com` на скриншоте ниже, записи нужно создавать в Cloudflare, а изменения в панели регистратора ни на что не повлияют.

<figure><img src="https://docs.f3cloud.com/img/dns-dig-short.png" alt="Ответы команды dig +short для записей A, AAAA, NS и www домена example.com"><figcaption><p>dig +short показывает только сами значения записей</p></figcaption></figure>

***

## 2. Создайте записи

Откройте раздел управления DNS у регистратора или в сервисе, на который указывают NS, и добавьте записи. Вместо `203.0.113.10` укажите IPv4-адрес своего сервера, а вместо `2001:db8::10` его IPv6-адрес.

| Тип | Имя | Значение | Зачем |
| --- | --- | --- | --- |
| A | `@` | `203.0.113.10` | домен ведёт на сервер |
| A | `www` | `203.0.113.10` | адрес с www тоже ведёт на сервер |
| AAAA | `@` | `2001:db8::10` | то же для IPv6, по желанию |

Символ `@` означает сам домен без поддомена. В некоторых панелях вместо него оставляют поле имени пустым. Для поддомена, например `app.example.com`, в поле имени пишут только `app`.

Поле **TTL** можно оставить по умолчанию. Если вы планируете в ближайшее время переносить сайт на другой сервер, заранее поставьте небольшое значение, например 300 секунд, тогда переключение пройдёт за пять минут.

> **Удалите старые записи.**
>
> Если у домена уже есть записи A или AAAA для того же имени, например заглушка регистратора, удалите их. Когда у имени несколько адресов, посетители будут попадать то на ваш сервер, то на старую страницу.

***

## 3. Проверьте, что запись работает

Через несколько минут после сохранения проверьте запись командой `dig`. В Windows вместо неё есть `nslookup`, она работает так же, достаточно написать `nslookup example.com`.

```bash
# Ответ вашего обычного резолвера
dig +short example.com A

# Ответ публичного резолвера Google, у него свой кэш
dig @8.8.8.8 +short example.com A
```

Если команда возвращает IP-адрес вашего сервера, домен привязан. Полный вывод `dig` без параметра `+short` показывает ещё и TTL. В строке ответа это число перед `IN`, оно означает, сколько секунд резолвер ещё будет хранить этот ответ.

<figure><img src="https://docs.f3cloud.com/img/dns-dig-answer.png" alt="Полный вывод dig example.com A с разделом ANSWER SECTION и временем жизни записи"><figcaption><p>В ANSWER SECTION видны адреса и оставшийся TTL</p></figcaption></figure>

Сразу после этого можно настроить на сервере сайт или приложение. Веб-сервер должен знать, что отвечает за этот домен, а сертификат HTTPS выдаётся только для домена, который уже указывает на сервер. Как это сделать, рассказано в статьях про [Nginx](https://docs.f3cloud.com/ru/web/nginx-installation.md) и [сертификат Let's Encrypt](https://docs.f3cloud.com/ru/web/ustanovka-besplatnogo-ssl-sertifikata-lets-encrypt-na-server-s-nginx-ili-apache.md).

> **Если домен в Cloudflare.**
>
> У записей в Cloudflare есть переключатель проксирования. Если он включён, `dig` покажет не адрес вашего сервера, а адреса Cloudflare, и через домен будут работать только сайты. Подключаться по SSH и к другим службам придётся по IP-адресу. Если домен нужен не для сайта, выключите проксирование, чтобы запись работала в режиме **DNS only**.

***

## Частые вопросы

<details>

<summary>Запись создана, а домен всё ещё не открывается</summary>

1. Проверьте, что запись создана там, куда указывают NS домена, командой `dig +short NS ваш-домен`.
2. Спросите разные резолверы, например `dig @8.8.8.8 +short ваш-домен` и `dig @1.1.1.1 +short ваш-домен`. Если они уже отвечают правильно, а ваш компьютер нет, дело в кэше.
3. Очистите кэш DNS на компьютере. В Windows это команда `ipconfig /flushdns` в командной строке, а в macOS команда `sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder` в Терминале.

</details>

<details>

<summary>DNS_PROBE_FINISHED_NXDOMAIN в браузере</summary>

Браузер не нашёл для домена ни одной записи. Проверьте, что запись создана именно для этого имени, например для `www`, если вы открываете адрес с www, и что срок регистрации домена не закончился.

</details>

<details>

<summary>Домен открывается без www, а с www нет</summary>

Для `www` нужна отдельная запись. Добавьте A-запись с именем `www` и IP-адресом сервера или CNAME-запись `www`, которая указывает на основной домен.

</details>

<details>

<summary>Можно ли настроить почту на домене на своём сервере</summary>

На наших серверах закрыты порты SMTP, поэтому отправлять почту напрямую с VPS не получится. Для почты на своём домене подключите почтовый сервис, например Яндекс 360 или Gmail, и создайте записи MX и TXT по его инструкции.

</details>

***

## Наши ресурсы

**Telegram-канал:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)\
**Официальный сайт:** [https://f3cloud.com](https://f3cloud.com/ru)
