Digitalocean dns настройка и привязка домена

Обновлено: 06.07.2024

Создаем себе веб-сервер на DigitalOcean с использованием VestaCP.

Я уже пол года как перевел все свои проекты и разработку с drupalhosting на DigitalOcean. Теперь я хочу поделиться, как я туда переезжал, и как там всё настраивал.

Причиной перехода с drupalhosting стал переход оплаты на $, а затем, всё это стало очень невыгодно, и всё это случилось до скачка курса. Мелкие сайты, визитки, посадочные страницы там всё же выйдет держать дешевле чем на самом дешевом варианте в DO, но все что имеет посещаемость и какую-никакую нагрузку, уже становится невыгодным.

Также немаловажный фактор стал что, возможно, я просто уже вырос из хостингов, и мне хотелось большего, так сказать, простора и контроля. На digitalocean я получил его в полном объеме, это полноценный выделенный облачный сервер, которым ты распоряжаешься как душе угодно. Никаких проблем не составит подключить дополнительные языки программирования, софт вроде Solr, Sphinx, Elasticsearch, обновиться до последней версии php и множество других плюсов. Разумеется, всё это требует настроек, поэтому я пишу данный гайд, как поднять свой сервер, не владея большими знаниями в администрировании (как у меня).

Скажу сразу, за эти пол года, я ни разу не столкнулся с проблемой, сервера не разу не зависли, не упали, никаких отказов и т.д. Работало всё как часы, при этом я смело ставил на сервер различные пакеты, и всё стояло как часы.

В текущем материале я напишу, как развернуть свой мини-хостинг. Почему мини-хостинг? Потому что на нём будет полноценная CP, с возможностью добавлять отдельных пользователей, тарифы и эти самые тарифы присваивать пользователям, по принципу хостинга. При этом у каждого будет своя защищенная область от других лиц. Отличная возможность предложить услуги содержания сайтов клиентов, если они настаивают на этом. А главный плюс в том, что у вас появляется полная свобода, и соотношение цена\качество просто отличное, даже с учетом текущего курса (!).

А теперь по порядку.

Преимущества DigitalOcean ¶

  • Так как мы друпалеры, то разумеется, все мои проекты там на Drupal, и они работают чудесно. За каких-то 10$ я содержу 15 активных сайтов, и всё это работает отлично, ничуть не хуже чем на drupalhosting. При этом я в эти 10$ могу напихать еще, сколько угодно сайтов, при этом цена не изменится. На drupalhosting я за 6 из этих 15 сайтов, в последние месяцы платил более

Для начала нам необходимо зарегистрироваться на сайте. Для этого проходим по ссылке, и регистрируемся. Сложностей вызвать не должно. Придется привязать свою кридитку, или же заплатить 5$ с PayPal для активации (с карты ничего не снимается).

P.s. да, ссылка реферальная, можете перейти по обычной, но имейте ввиду, регистрируясь по реферальной, вы получаете 10$ на счёт в подарок сразу же. Вас не заставят их платить, вы вообще ничего не теряете, вы просто получаете 10$ и начинаете тратить. Отличный способ “попробовать” как гайд, так и хостинг на своих плечах не потратив ни копейки из своих денег.

Создание дроплета ¶

На DigitalOcean, сервера называются дроплеты, вы можете создавать ограниченное кол-во дроплетов на один аккаунт, но всё это расширяется обращением в службу поддержки.

Итак, переходим на страницу создавния дроплета и для начала нам нужно дать название нашему дроплету и выбрать необходимую мощность сервера (тариф).

Тарифы.

Я назвал дроплет myhosting и для демонстрации выбрал тариф за 5$.

На этапе выбора региона следует учитывать географическое расположения датацентров. Если ваша цель Европа\Страны СНГ, то необходимо выбирать Амстердам. В некоторых случаях прокатит и Лондон, но учтите что он дальше Нидерландов, и пинг будет выше, причем ощутимо. Поэтому лучше не рисковать и выбирать Амстердам. А какой номер датацентра, разницы не имеет, просто выбирайте какое число больше нравится из доступных. Допустим, на момент написания, первый ДЦ полностью занят и там создавать дроплеты нельзя.

Далее идут дополнительные настройки. Их включается на своё усмотрение и если понимаете зачем они. Учтите, что услуга бэкапов идёт отдельной стоимостью. Мы же сделаем бекапы самим сервером и будем хранить их у себя.

Далее выбор сервера\приложения и прочие возможности. Учтите, что хоть в приложениях и есть Drupal на Ubuntu 14.04, там всего-лишь настроенный вебсервер под один (!) сайт. Нам нужен сервер, и в текущем гайде я буду использовать Ubuntu 14.04

Выбор расположения и операционной системы.

После этого жмём зеленую кнопку “Create droplet” и дожидаемся установки дроплета.

Панель управления дроплетом ¶

После создания дроплета, вас перекинет на панель управления дроплетом, а также, вышлют письмо с root доступами на сервер.

Давайте разберемся немного с панелью управления дроплетом.

Power ¶

Power

На данной странице вы можете посмотреть небольшую историю по дроплету, выключить его, чтобы он не действовал, либо сделать hard reset (принудительная перезагрузка).

Access¶

Access

На данной вкладке вы можете получить доступ к консоли сервера прямо из браузера. Занятие крайне извращенное и неудобное, пригодится лишь в критических ситуациях когда доступа к нормальной консоли получить не удается. Также тут можно поменять root пароль.

Resize ¶

Данный раздел окажется для вас полезным, если вы захотите усилить свой сервер. Допустим, перейти на тариф за 10$. Это сделает переход безболезненным, потребуется лишь перезагрузка сервера.

Snaphots ¶

Тут можно сделать “бэкап” всего образа сервера. Полезная опция при переносе на другой аккаунт. Также позволяет создать дроплет, настроить его и отдать клиенту по почте. А ему надо будет лишь принять его, при этом он получит полностью настроенный сервер.

Settings ¶

Settings

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

Graph ¶

Тут вы увидете графики по нагрузке сервера и канала.

Destroy ¶

А перейдя сюда, вы сможете полностью удалить свой сервак.

Делаем свой мини-хостинг ¶

В случае успешной установки дроплета, на ваш email адрес должно было прийти письмо с данным для входа на сервер. Сервером мы будем управлять из консоли, следовательно, если у вас Linux\Mac OS, просто открываем терминал, если же у вас Windows, ищем в инете спец. софт, так как стандартная командная строка не умеет в ssh, вам необходим ssh-клиент. Единственный который я знаю и пробовал когда-то был Putty.

Теперь нам необходимо подключиться к своему серверу. Для этого в терминале нам необходимо написать ssh пользователь@ip_вашего_сервера. В моём случае будет так:

Консоль затребует у вас пароль, вы должны ввести тот что прислали вам на почту.

Если вы успешно зашли, вы должны увидеть примерно следующее:

Приветственное окно сервера через SSH.

Теперь вам необходимо ввести еще раз текущий пароль, а затем дважды новый. После чего, мы сможем смело пользоваться сервером.

Давайте поставим CP (Control Panel) для нашего сервера. В нашем случае, я буду использовать VestaCP. Она простая, легка (почти не грузит систему), очень хороший API, множество возможностей из коробки и она сама разворачивает вебсервер с nginx при установке.

Поэтому переходим к установке VestaCP, для этого в терминале пишем:

У нас начнётся установка панели и веб-сервера. Первым делом он попросит вас согласится, для этого пишем y жмём enter, затем вводим свой email адрес. Затем он попросит ввести hostname, тут просто жмём enter. Потом начнётся установка. Там написано что займёт примерно 15 минут, но это не так, заёмет это минуту-две, даже на таком слабеньком сервере.

После успешной установки вы увидите следующее:

Экран терминала после установки Vesta.

По сути, на этом установки и настройка сервера уже завершена (лол). Он полностью готов к продакшену. Если вы более подкаыванный пользователей и вам интересно потыкаться самому - можете приступать. Те кто не уверен или нуждается в напутствии, пошли дальше.

Разбираемся в CP ¶

Итак, заходим по нашему адресу, вводим admin и пароль указанный в терминале. Если всё ввели правильно, то попадете на главную страницу CP.

Интерфейс VestaCP

Давайте для начала сделаем его на русском языке. Справа у admin, на влкадке user, жмём edit, в поле language выбираем ru, сохраняем, получаем всё на русском.

Русский интерфейс.

Так привычнее, не так ли? А теперь давайте в кратце расскажу о важных и нужны вкладках.

Сначала по верхним:

  • Пакеты - проще говоря тарифы хостинга. У каждого пользователя свой тариф. Тариф может накладывать\снимать ограничения на определенный части сервера. Допустим, кол-во доменов, имеет ли пользователь доступ по FTP, максимально место на диске и т.д. и т.п. Всё как на хостингах, только правите тут вы сами.
  • Службы - тут можно увидеть все важные запущенные службы на сервер, отсюда можно перезагрузить как весь сервер, так и перезапустить определенные его части, например веб-сервер.

А теперь чуть пониже:

  • USER - тут управление всеми пользователями на серве. Удаление, добавление, блокировка и т.д.
  • WEB - управление доменами текущего пользователя.
  • DNS - управление DNS записями для доменов текущего пользователя. В нашем случае совершенно бесполезная вкладка (в разделе привязки домена будет рассказано почему, если в кратце, они управляются из digitalocean а не сервера).
  • MAIL - управление почтой. Не тестил, ибо все подключено на gmail.
  • DB - управление базами данных.
  • CRON - управление кроном сервера.
  • BACKUP - все последние бекапы, а также возможность создать прямо здесь и сейчас. Также тут можно скачать любой из бэкапов (в зависимости от кол-ва которое будет хранится).

А теперь давайте немного полезной информации. Все доступы к серверу пользователь имеет одинаковые связки. Т.е. всего один и тот же логин, пароль и адрес сервера. Вместо ip адреса сервера, в дальнейшем можно будет заменять доменом который прикреплен на данный ip.

Например, чтобы подключиться к серверу по ssh как админ, надо ввести следующее:

А затем ввести пароль от пользователя admin. Кстати, по умолчанию, у всех тарифов, а следовательно и пользователей, будет отключен доступ к серверу по ssh. Вы можете его включить, зайдя в настройки конкретного пользователя и выставив параметр “Доступ по SHH” на bash, либо зайти в пакеты, и целому тарифу разрешить доступ по sh.

Для подключения по FTP:

  • Имя сервера\хост: IP или любой домен с этого IP
  • Логин: admin
  • Пароль: пароль пользователя admin

Добавление домена на сервер ¶

В панели управления DO слева есть ссылка “DNS”. Попадаем на страницу управления доменами, для добавления нового жмём “Add domain”. Заполняем поля:

  • Name: сам домен
  • ip address: ip адрес дроплета который получит доступ к домену, справа можно выбрать дроплет и ip подставиться самостоятельно

Добавление домена.

Жмём Create Domain и вы увидите примерно следующее:

Настройки DNS по умолчанию.

Но лучше сразу добавить все необходимые настройки. Для этого на странице есть кнопка Add record. При помощи неё мы можем управлять DNS записями домена (следовательно DNS раздел в CP просто ненужен).

Добавление NS записи.

Затем жмём create. Всё, этого достаточно. Вы можете добавлять и настраивать какие угодно записи, т.е. полностью управлять доменом. Если вы хотите пользоваться gmail почтой для данного домена, то жмём “Add record”, затем выбираем MX, и внизу будет кнопка для автоматического заполенный данных для gmail, просто жмём и всё готово. Для данного домена можете забыть о настройке надолго или навсегда :).

Добавление сайта.

Запускаем Drupal ¶

Давайте создадим базу для друпала. Для этого в CP переходим на вкладку DB (там будет стандартная БД, можете удалить, а можете пользоваться прямо ею), жмём “Добавить БД”. Заполняем данные:

  • База данных: название таблицы БД, приставки с именем пользователя будет добавлена автоматически.
  • Пользователь: пользователь БД, приставка также будет добавлена автоматом.
  • Пароль для доступа.

После того как заполнили все эти три поля жмём “Добавить”, попутно можете удалить email адрес, если не хотите чтобы данный по БД ушли на почту.

Добавление базы данных.

Теперь зайдя по адресу подключенного домена у вас должна запуститься установка друпала. Данные для базы указываем как выше. Т.е. в моём случае, база и пользователь admin_example, а пароль mystrongestpassword. После чего всё как по старинке, уже можно работать с друпалом.

Если нужен еще один сайт. Подключаем домен (если он новый, в случае поддомена действий в DO не нужно), создаем домен и бд в CP, отгружаем друпал или что угодно.

Установка Drush ¶

Как можно пользоваться Drupal не установив Drush? И мы займёмся его установкой, но только кое-что замечу. Делать это всё нужно из под admin. Т.е. в терминале подключиться по ssh admin@ip. Почему? Потому что он админ и в системе, и там можно выполнять команды без правд root пользователя, когда под root, всё выполняется из под него же, что выливается потом в недостаток прав у других. И вообще, забудьте о юзере root почти навсегда, он на крайние случае администрирования сервера.

upd от 22.10.15 - установку через pear уже не рекомендую, намного проще делать через композер, легче обновлять сам драш и переключаться между версиями, включать необходимую для конкретного проекта и т.д.

Установка через composer ¶

Заходим на сервак под root и выполняем команды (устанавливаем Drush 7):

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

Из этого руководства вы узнаете, как выполнить настройку внутреннего DNS-сервера с помощью программного обеспечения сервера имен BIND (BIND9) на Ubuntu 18.04, которое может быть использовано вашими серверами для предоставления частных имен хостов и частных IP-адресов. Это служит центральным средством для управления внутренними именами хостов и частными IP-адресами, что необходимо при расширении вашей среды до более чем нескольких хостов.

Версию CentOS, используемую в данном руководстве, можно найти здесь.

Предварительные требования

Для выполнения данного руководства вам потребуется следующая инфраструктура. Создайте каждый сервер в одном центре обработки данных *с активированной *опцией частной сети:

  • Свежий сервер Ubuntu 18.04, который будет использоваться в качестве основного DNS-сервера, ns1.
  • (Рекомендуется) Второй сервер Ubuntu 18.04, который используется в качестве дополнительного DNS-сервера, ns2.
  • Дополнительные серверы в одном центре обработки данных, которые будут использовать ваши DNS-серверы.

На каждом из этих серверов необходимо настроить административный доступ с помощью пользователя sudo и брандмауэра согласно инструкциям нашего руководства по начальной настройке сервера Ubuntu 18.04.

Если вы не знакомы с концепцией DNS, рекомендуем ознакомиться минимум с первыми тремя частями нашего руководства Введение в управление DNS.

Пример инфраструктуры и целей

В рамках данной статьи мы предполагаем следующее:

Примечание: существующая настройка будет отличаться, примеры имен и IP-адресов будут использоваться для демонстрации того, как выполнить настройку DNS-сервера для получения работающей внутренней DNS. У вас должна быть возможность легко адаптировать данную настройку для вашей среды, заменив имена хостов и частные IP-адреса на собственные. Нет необходимости использовать имя региона центра обработки данных в схеме присвоения имен, но мы используем его для обозначения хостов, принадлежащих к частной сети конкретного центра обработки данных. Если вы используете несколько центров обработки данных, вы можете настроить внутреннюю DNS внутри каждого отдельного центра обработки данных.

К концу данного руководства мы получим основной DNS-сервер, ns1, и, в качестве опции, дополнительный DNS-сервер, ns2, который будет служит в качестве резервного сервера.

Давайте начнем с установки нашего основного DNS-сервера, ns1.

Установка BIND на DNS-серверах

На обоих DNS-серверах, ns1 и ns2, обновите кэш пакета apt с помощью следующей команды:

Теперь можно переходить к установке BIND:

Настройка режима IPv4 для Bind

Прежде чем продолжить, давайте настроим режим IPv4 в BIND, так как наша частная сеть использует исключительно IPv4. На обоих серверах отредактируйте файл настроек по умолчанию bind9 с помощью следующей команды:

Добавьте “-4” в конец параметра OPTIONS . Результат будет выглядеть следующим образом:

Сохраните файл и закройте его после завершения.

Перезапустите BIND для вступления изменений в силу:

Теперь, после установки BIND, давайте настроим основной DNS-сервер.

Настройка основного DNS-сервера

Конфигурация BIND состоит из множества файлов, которые включены в основной файл конфигурации, named.conf . Эти имена файлов начинаются с named , потому что это имя процесса, который запускает BIND (сокращение от “domain name daemon”). Мы начнем с настройки файла параметров.

Настройка файла параметров

На сервере ns1 откройте файл named.conf.options для редактирования:

Над существующим блоком options создайте новый блок ACL (список контроля доступа) под названием “trusted”. Именно здесь мы создадим список клиентов, для которых мы будем разрешать рекурсивные DNS-запросы (т. е. запросы от ваших серверов, находящихся в том же центре обработки данных, что и ns1). С помощью нашего примера частных IP-адресов мы добавим ns1, ns2, host1 и host2 в наш список надежных клиентов:

Теперь, когда у нас есть список доверенных DNS-клиентов, нам нужно отредактировать блок options . В настоящее время начало блока выглядит следующим образом:

Под директивой directory добавьте выделенные цветом строки конфигурации (и замените в соответствующем IP-адресе ns1), чтобы результат выглядел примерно следующим образом:

После завершения редактирования сохраните и закройте файл named.conf.options . Согласно конфигурация выше, только ваши собственные серверы (т. е. доверенные) смогут запрашивать у вашего DNS-сервера внешние домены.

Далее мы настроим локальный файл, чтобы задать ваши DNS-зоны.

Настройка локального файла

На сервере ns1 откройте файл named.conf.local для редактирования:

Добавьте зону прямого просмотра со следующими строками, заменив имя зоны на собственное, и закрытый IP-адрес дополнительного DNS сервера в директиве allow-transfer :

Если, согласно нашему предположению, нашей частной подсетью является 10.128.0.0/16 , добавьте зону обратного просмотра с помощью следующих строк (обратите внимание, что имя зоны обратного просмотра начинается с “128.10”, что представляет собой битное преобразование “10.128"​):

Если ваши серверы охватывают несколько частных подсетей, но находятся в одном центре обработки данных, обязательно указывайте дополнительную зону и файл зоны для каждой отдельной подсети. После добавления всех необходимых зон сохраните и закройте файл named.conf.local .

Теперь, когда наши зоны указаны в BIND, нам нужно создать соответствующие файлы для зоны прямого и обратного просмотра.

Создание файла для зоны прямого просмотра

Давайте создадим директорию, в которой будут находиться наши файлы зоны. Согласно конфигурации named.conf.local, это должна быть директория /etc/bind/zones :

При создании нашего файла зоны для прямого просмотра мы будем опираться в качестве примера на файл зоны db.local . Скопируйте его в надлежащее место с помощью следующих команд:

Теперь необходимо отредактировать наш файл зоны для прямого просмотра:

Первоначально он будет выглядеть примерно следующим образом:

Далее удалите три записи в конце файла (после записи SOA). Если вы уверены, какие строки следует удалить, удаляйте строки с комментарием “delete this line”.

В конце файла добавьте записи для имени сервера со следующими строками (замените имена на собственные). Обратите внимание, что во втором столбце указывается, что это записи “NS”.

Полученный нами в итоге пример файла зоны для прямого просмотра выглядит следующим образом:

Теперь пришло время перейти к файлу (файлам) зоны для обратного просмотра.

Создание файла (файлов) зоны для обратного просмотра

В ns1 для каждой зоны обратного просмотра, заданной в файле named.conf.local, необходимо создать файл зоны для обратного просмотра. При создании нашего файла (или файлов) зоны для обратного просмотра мы будем опираться в качестве примера на файл зоны db.local. Скопируйте его в надлежащее место с помощью следующих команд (замените имя файла назначения, чтобы оно соответствовало определению вашей зоны для обратного просмотра):

Отредактируйте файл зоны для обратного просмотра, который соответствует зоне(-ам), определенной(-ым) в named.conf.local:

Первоначально он будет выглядеть примерно следующим образом:

Как и в случае с файлом зоны для прямого просмотра, вам нужно изменить запись SOA и увеличить значение serial. Он должен выглядеть следующим образом:

Теперь удалите две записи в конце файла (после записи SOA). Если вы уверены, какие строки следует удалить, удаляйте строки с комментарием “delete this line”.

В конце файла добавьте записи для имени сервера со следующими строками (замените имена на собственные). Обратите внимание, что во втором столбце указывается, что это записи “NS”.

Затем добавьте записи PTR для всех ваших серверов, чей IP-адрес соответствует подсети файла зоны, который вы редактируете. В нашем примере это будут все наши хосты, поскольку все они находятся в подсети 10.128.0.0/16 . Обратите внимание, что первый столбец включает два последних байта частных IP-адресов ваших серверов в обратном порядке. Обязательно замените имена и частные IP-адреса согласно данным ваших серверов:

Сохраните и закройте файл зоны для обратного просмотра (повторите описанные в данном разделе действия, если вам потребуется добавить дополнительные файлы зоны для обратного просмотра).

Полученный нами в итоге пример файла зоны для обратного просмотра выглядит следующим образом:

Мы завершили редактирование наших файлов, и теперь мы можем проверить наши файлы на ошибки.

Проверка синтаксиса конфигурации BIND

Запустите следующую команду для проверки синтаксиса файлов named.conf* :

Команда named-checkzone может использоваться для проверки корректности ваших файлов зоны. Первый аргумент команды указывает имя зоны, а второй аргумент определяет соответствующий файл зоны, оба из которых определены в named.conf.local​​​ .

А чтобы проверить конфигурацию зоны для обратного просмотра “ 128.10 .in-addr.arpa”, запустите следующую команду (замените на данные, соответствующие вашей зоне для обратного просмотра и файлу):

Когда все файлы конфигурации и зоны не будут иметь ошибок, вы должны будете перезапустить службу BIND.

Перезапуск BIND

Если у вас есть настроенный брандмауэр UFW, откройте доступ к BIND с помощью следующей команды:

Теперь ваш основной DNS-сервер настроен и может отвечать на запросы DNS. Давайте перейдем к созданию дополнительного DNS-сервера.

Настройка дополнительного DNS-сервера

В большинстве сред правильным решением будет создание дополнительного DNS-сервера, который будет отвечать на запросы, если основной сервер окажется недоступным. К счастью, настройка дополнительного DNS-сервера выполняется намного проще.

На сервере ns2 отредактируйте файл named.conf.options :

В верхней части файла добавьте ACL с частными IP-адресами всех ваших доверенных серверов:

Под директивой directory добавьте следующие строки:

Сохраните и закройте файл named.conf.options . Этот файл должен выглядеть так же, как файл named.conf.options сервера ns1, за исключением того, что его необходимо настроить на прослушивание частного IP-адреса ns2.

Теперь необходимо отредактировать файл named.conf.local :

Определите slave-зоны, соответствующие master-зонам основного DNS-сервера. Обратите внимание, что в качестве типа используется slave, в файле отсутствует путь, и существует директива masters , которая должна быть настроена на частный IP-адрес основного DNS-сервера. Если вы определили несколько зон для обратного просмотра на основном DNS-сервере, обязательно проверьте, что все они были добавлены на этом этапе:

Сохраните и закройте файл named.conf.local .

Запустите следующую команду для проверки валидности ваших файлов конфигурации:

После выполнения проверки перезапустите BIND:

Разрешите подключение DNS к серверу, внеся изменения в правила брандмауэра UFW:

Теперь у вас есть основной и дополнительный DNS-серверы для имени частной сети и преобразования IP-адреса. Теперь вам нужно настроить ваши клиентские серверы, чтобы они могли использовать ваши частные DNS-серверы.

Настройка DNS-клиентов

Прежде чем все ваши серверы в доверенном ACL смогут отправлять запросы на ваши DNS-серверы, вы должны настроить для каждого из них использование ns1 и ns2 в качестве сервера имен. Этот процесс варьируется в зависимости от операционной системы, но для большинства дистрибутивов Linux он подразумевает добавление ваших серверов доменных имен в файл /etc/resolv.conf .

Клиенты Ubuntu 18.04

На Ubuntu 18.04 настройка сетевого взаимодействия выполняется с помощью Netplan, абстракции, которая позволяет вам записывать стандартную конфигурацию сети и применять ее к несовместимому сетевому ПО, отвечающему за бекэнд. Для настройки DNS нам потребуется записать файл конфигурации Netplan.

Во-первых, найдите устройство, связанное с вашей частной сетью, отправив частной подсети команду ip address :

В этом примере используется частный интерфейс eth1 .

Далее необходимо создать новый файл в /etc/netplan с именем 00-private-nameservers.yaml :

Вставьте в файл следующее содержимое. Вам потребуется изменить интерфейс частной сети, адреса ваших DNS-серверов ns1 и ns2, а также зону DNS:

Примечание: Netplan использует формат сериализации данных YAML для своих файлов конфигурации. Поскольку YAML использует структурирование текста и пробелы для определения структуры данных, убедитесь, что ваше определение имеет равномерное структурирование текста во избежание ошибок.

Сохраните файл и закройте его после завершения.

Затем вы должны сообщить Netplan о необходимости использования нового файла конфигурации с помощью команды netplan try . При наличии проблем, которые приводят к потере подключения к сети, Netplan будет автоматически перезапускать изменения по истечении определенного периода времени:

Если счетчик в нижней части обновляется корректно, это значит, что новой конфигурации удалось по крайней мере не повредить ваше соединение SSH. Нажмите ENTER, чтобы принять изменения в конфигурации.

Теперь проверьте DNS-преобразователь системы, чтобы определить, применены ли изменения в конфигурацию DNS:

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

Ваш клиент должен быть настроен на использование ваших внутренних DNS-серверов.

Клиенты Ubuntu 16.04 и Debian

В серверах Ubuntu 16.04 и Debian вы можете изменить файл /etc/network/interfaces :

Сохраните файл и закройте его после завершения.

Перезапустите ваши сетевые службы, применив изменения с помощью следующих команд. Убедитесь, что вы заменили eth0 на имя вашего сетевого интерфейса:

В результате будет выполнен перезапуск вашей сети без отключения текущего подключения. Если все работает корректно, вы должны увидеть примерно следующее:

Еще раз проверьте, что ваши настройки были применены, введя следующую команду:

Вы должны увидеть ваши серверы доменных имен в файле /etc/resolv.conf , а также ваш домен поиска:

Ваш клиент настроен для использования ваших DNS-серверов.

Клиенты CentOS

В CentOS, RedHat и Fedora Linux отредактируйте файл /etc/sysconfig/network-scripts/ifcfg- eth0 . Возможно, вам придется заменить eth0 на имя вашего основного сетевого интерфейса:

Сохраните файл и закройте его после завершения.

Перезапустите сетевую службу с помощью следующей команды:

Команда может зависнуть на несколько секунд, но через короткое время вы должны вернуться в командную строку.

Убедитесь, что изменения вступили в силу, введя следующую команду:

Вы должны увидеть ваши серверы доменных имен и домена поиска в списке:

Ваш клиент теперь может подключиться и использовать ваши DNS-серверы.

Тестирование клиентов

Используйте nslookup для проверки того, могут ли ваши клиенты отправлять запросы вашим серверам доменных имен. У вас должна быть возможность сделать это для всех клиентов, которые были настроены и находятся в доверенном ACL.

Для клиентов CentOS вам может потребоваться установка утилиты с помощью следующей команды:

Мы можем начать выполнять прямой просмотр.

Прямой просмотр

Теперь мы можем проверить обратный просмотр.

Обратный просмотр

Чтобы протестировать обратный просмотр, отправьте DNS-серверу запрос на частный IP-адрес host1:

Результат будет выглядеть следующим образом:

Поздравляем! Ваши внутренние DNS-серверы настроены надлежащим образом! Теперь мы перейдем к сохранению записей зоны.

Сохранение DNS-записей

Теперь, когда у вас есть работающий внутренний DNS-сервер, вам нужно хранить ваши записи DNS, чтобы они точно отражали среду сервера.

Добавление хоста в DNS

При добавлении хоста в вашу среду (в одном центре обработки данных) вам нужно добавить его в DNS. Здесь представлен список шагов, которые вам нужно предпринять:

Основной сервер доменных имен

  • Файл зоны для прямого просмотра: добавьте запись A для нового хоста, увеличив значение “Serial”
  • Файл зоны для обратного просмотра: добавьте запись PTR для нового хоста, увеличив значение “Serial”
  • Добавьте частный IP-адрес вашего нового хоста в доверенный ACL ( named.conf.options )

Протестируйте ваши файлы конфигурации:

Затем перезагрузите BIND:

Ваш основной сервер должен быть настроен для использования нового хоста.

Дополнительный сервер доменных имен

  • Добавьте частный IP-адрес вашего нового хоста в доверенный ACL ( named.conf.options )

Проверьте синтаксис конфигурации:

Затем перезагрузите BIND:

Ваш вторичный сервер теперь будет принимать подключения с нового хоста.

Настройка нового хоста для использования вашей DNS

  • Настройте /etc/resolv.conf для использования ваших DNS-серверов
  • Выполните проверку с помощью nslookup

Удаление хоста из DNS

Если вы удалите хост из вашей среды или захотите просто убрать его из DNS, просто удалите все данные, которые были добавлены при добавлении сервера в DNS (т. е. выполните описанные выше шаги в обратно порядке).

Заключение

Теперь вы можете обращаться к интерфейсам серверов вашей частной сети по имени, а не по IP-адресу. Это упрощает настройку служб и приложений, поскольку вам больше не нужно запоминать частные IP-адреса, а файлы будет легче читать и понимать. Кроме того, теперь вы можете изменять свои конфигурации для работы с новыми серверами в одном месте, на вашем основном DNS-сервере, вместо того чтобы редактировать целых набор самых разных файлов.

Когда ваш внутренний DNS-сервер был настроен, а файлы конфигурации используют частные FQDN для указания сетевых подключений, *критически *важно, чтобы ваши DNS-сервера обслуживались надлежащим образом. Если оба сервера окажутся недоступны, ваши службы и приложения, которые опираются на них при работе, не смогут нормально функционировать. Именно поэтому рекомендуется настроить для вашей DNS минимум один дополнительный сервер и сохранять рабочиие резервные копии всех серверов.

Приветствую. Сегодня в посте мы пройдем путь по регистрации персонального сайта/блога начиная с регистрации домена и заканчивая настройкой движка. Много месяцев назад я уже писал про поднятие блога на GitHub на базе Jekyll. Но это было довольно скучно - доменное имя третьего уровня, хостинг на github и нет возможности сменить блог либо использовать базовый движок для серьезных модификаций. Пора валить на свой собственный VPS.

Итак, почему ghost, nginx и DigitalOcean? Ответ простой - новые (a.k.a. интересные), функциональные и перспективные.

ghost

Nginx

Digital Ocean

Относительный новый игрок на рынке cloud hosting с нелегкой историей становления и гигантским темпом развития и привлечения новых клиентов в настоящее время. Используют только SSD и дают возможность создания любых образов OS посредством запуска так называемых droplet, причем предустановленные образы также имеются (называются applications). Поднимай любую операционку и плати только за те ресурсы что используешь. Принцип не нов.

Доменное имя я зарегистрировал через GoDaddy, однако если при упоминании оном у вас начинается головная боль, то советую посмотреть на NameCheap, учитывая некоторые особенности их работы, вполне достойный кандидат.

Далее в тексте я буду ссылаться именно на GoDaddy и на скринах будет их админ панель. Принцип управления своими доменами един везде, так что вы без проблем сможете найти соответствие в админ панеле своего регистратора (registrar).

Создаем аккаунты на GoDaddy (или любом другом регистраторе) и DigitalOcean. Желательно иметь ненулевой баланс на DO ибо биллинг почасовой и при старте droplet центы начнут капать сразу. На DO постоянные компании по привлечению новых клиентов, так что поищите купоны на 10$, 15$, 20$.

Выбираем и покупаем доменное имя. Предполагаю что этот шаг уже сделан.

Пропишем DNS DigitalOcean в секции Nameservers регистратора. DNS сервера DO:

  • Идем в раздел Manage My Domains:



  • и попадаем в админку, где нас интересует раздел Nameservers:


  • Ставим галочку на Custom и прописываем кастомные записи с DNS от DO (удалите все имеющиеся записи перед этим). В случае необходимости, жмите Add Nameserver:


Больше сайт регистратора нам не понадобится. Вся дальнейшая настройка будет идти на DO.

Создадим наш виртуальный сервер (droplet в терминологии DO) на котором и будет идти дальнейшая настройка сайта.

Логинимся на DO и попадаем в раздел Droplets. Жмем Create Droplet.

  • Прописываем имя домена и выбираем план для нашего сервера:



  • Определяемся с образом сервера. Я выбрал CentOs-7-x64:


Там же есть вкладка Applications, содержащая предустановленные наборы пакетов - фреймворки/языки для быстрого старта. В их числе Ruby on Rails, Node.js on Ununtu и даже тот же ghost на Ubuntu (но без Nginx).

На этом все, жмем Create Droplet и ждем когда DO создаст сервер для нас. Серверу при этом будет назначен соответствующий ip address который мы будем использовать для привязки нашего доменного имени.

Перейдем в раздел Droplets. Тут у нас только что созданный droplet с ip address'ом и характеристикой сервера:


Пора связать только что созданный droplet с нашим доменным именем. Жмем в меню слева на DNS и видим следующую картину:


DNS пока не определены, но сервер уже создан (PTR запись). Жмем Add Domain и добавляем наш домен. Три поля, в первое идет имя домена, второе и третье характеризуют выбранный droplet. Выбор сервера из списка справа автоматом заполнит ip адрес - второе поле (адрес созданного droplet'а).



Жмем Create Domain и видим следующую картину:


Zone File - DNS is propagating означает, что настройки вступают в силу. Изменение DNS записей или настроек влечет обновление записей корневых DNS и не происходит сиюминутно. Чтобы проследить, обновились ли DNS имена и виден ли ваш домен можно воспользоваться сайтами intoDNS или DNS Propagation Check.

Но мы пока не закончили с настройкой DNS. Добавим пару записей CNAME:

Жмем Add Record и добавляем записи:



Коннектимся к созданному серверу по его ip адресу используя любой ssh клиент (putty, к примеру). DO создает сервер и дает к нему root доступ (пароль разовый, требует смены при первом ssh коннекте и DO посылает его через почтовый ящик). Сменили пароль, начнем настройку.

Создаем пользователя douser:

Добавляем пользователя в sudoers файл через visudo: douser ALL=(ALL) ALL

Переключаемся на douser

Доставим пакеты: все что необходимо для компиляции tmux и Node.js:

Поясню зачем ставить весь этот набор. Во-первых Node.js будем компилить вручную, во-вторых, tmux. Отличный тул для удаленной работы, поддержка сессий (screen), удобное создание окон. В общем, must have.

Development Tools

Development Packages

$ sudo yum install gcc kernel-devel make ncurses-devel mc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

libevent


$ tar -xvzf libevent-2.0.21-stable.tar.gz
$ cd libevent-2.0.21-stable
$ ./configure –prefix=/usr/local
$ make && sudo make install

tmux

Примечание: здесь описан другой способ установки - через git clone.

/.local/ вместо стандартного /usr/local/.

Добавить в .npmrc следующее:

root = /home/gahcep/.local/lib/node_modules
binroot = /home/gahcep/.local/bin
manroot = /home/gahcep/.local/share/man

Ставим Node.js

/.local
$ make
$ sudo make install

Node.js установлен для пользователя. Установка пакетов с использованием npm в текущей директории:

/.local/bin/npm install -g connect

Далее на очереди ghost. Установка в /var/www/ghost .

ghost распакован, установим зависимости (флаг --production ставит dependencies и не ставит devDependencies):

После команды все зависимости ghost будут разрешены. Теперь попробуем запустить ghost без nginx - убедимся что все пакеты установлены и проблем нет. Но перед этим сделаем еще одну вещь. Отредактирует конфигурационный файл ghost config.js (лежит в корне)

Но перед стартом ghost отредактируем config.js файл (лежит в /var/www/ghost ):

Нас интересует секция production. Меняем значения следующих параметров (смотрим скрин ниже):

  • url: ваше доменное имя
  • server -> host: ip адрес созданного droplet'а (посмотреть можно в разделе Droplet вашего аккаунта DO)
  • port: ставим 80

Команда start запускает скрипт прописанный в параметре start файла config.js .



Пока же жмем CTRL+C для остановки node.js сервера и читаем дальше.

Добавим CentOs 7 репозиторий nginx:


Перед тем как продолжить кратко о структуре файлов и что и где надо изменить чтобы nginx заработал с ghost.

Файловая структура nginx:

  • /etc/nginx/ - главный рабочий каталог
  • /etc/nginx/conf.d/ - здесь хранятся все конфигурационные файлы в том числе и default.conf. В нашем случае здесь мы создадим файл с настройками для конкретно нашего домена. Имя в формате your-domain.conf
  • /etc/nginx/nginx.conf - главный конфигурационный файл. Через include подключает все файлы с /etc/nginx/conf.d/. Его содержимое мы также будем отредактируем.
  • /var/cache/nginx/ - каталог для nginx кеша.
/etc/nginx/nginx.conf

Открываем файл, удаляем строчку:

и дописываем на ее место следующее:

/etc/nginx/conf.d/your-domain.conf

Создадим файл /etc/nginx/conf.d/your-domain.conf со следующим содержимым:

Тестируем что все конфиги в порядке и нет опечаток или ошибок:

/var/www/ghost/config.js

Последнее что осталось - вернуть изначальные значения параметров в файле.

Стартуем nginx и ghost:

$ systemctl start nginx.service
$ cd /var/www/ghost/
$ npm start –production

Чтобы ghost крутился постоянно и не приходилось его перезапускать, установите пакет forever:

Конечный продукт

В ноябре 2014 года Digital Ocean анонсировала обновленную услугу DNS-хостинга . Помимо быстрой и надежной работы пользователи почти мгновенно обновляют записи DNS. Любой разработчик или системный администратор может оценить преимущества этого: больше не нужно ждать обновления IP-адресов во время миграции системы. В этом руководстве мы собираемся расширить функциональность консольного приложения, которое мы создали в прошлый раз, чтобы включить управление службой DNS Digital Ocean.

DNS-архитектура цифрового океана

Опять же, вы можете скачать бесплатное консольное приложение из репозитория Tuts + Github . Я разместил подробное руководство по установке консольного приложения на своем веб-сайте. Вы также можете ознакомиться с моим общим руководством по установке приложений Digital Ocean .

Хотя вы можете использовать веб-консоль Digital Ocean для управления своими записями DNS, вам может оказаться полезным программно управлять ими через API.

Документация по службам DNS API Digital Ocean расположена в двух основных областях:

Сначала мы сконцентрируемся на настройке ваших доменов, а затем добавим отдельные записи DNS.

Направьте свое имя на услуги Digital Ocean

Прежде чем вы сможете активировать собственные службы DNS Digital Ocean, вам необходимо перенести свои доменные серверы имен на серверы имен Digital Ocean:

Я собираюсь добавить свой домен StarWars.io для демонстрации этого урока. Вот мое изменение сервера имен у моего регистратора доменов:

Изменение ваших имен серверов

Использование сайта Digital Ocean для управления DNS

Во-первых, давайте добавим домен к DNS Digital Ocean через веб-интерфейс пользователя. В левой части навигационного меню нажмите на DNS:

Веб-консоль Digital Ocean DNS

Нажмите Добавить домен :

DNS-консоль Digital Ocean Создать домен

Вот как Digital Ocean отображает вашу запись DNS. Хорошо, что он показывает вам сгенерированный файл зоны ниже:

Digital Ocean DNS веб-консоль доменное представление

DNS-консоль Digital Ocean Добавить запись домена

Теперь давайте рассмотрим API, начав с загрузки некоторых доменов и записей доменов, которые мы только что создали.

Синхронизируйте ваши записи DNS

Во-первых, давайте загрузим список наших доменов, используя API. В нашем консольном приложении нажмите Домены на панели навигации и выберите Синхронизация в правом меню.

Читайте также: