Сегодня продолжим цикл статей по настройке сервера и рассмотрим что же из себя представляет настройка DNS сервера Ubuntu. У нас уже есть сервер на базе ubuntu 14.04.1 LTS, на нем настроен DHCP сервер. Сегодня мы туда добавим еще и службу DNS.

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

По многочисленным просьбам читателей, я еще раз перепроверил все пункты и нашел некоторые ньюансы из-за которых сервер некорректно работал (изначально статья была написана для ubuntu server 11.04). Статья полностью переписана и проверена на Ubuntu Server 14.04.1

Служба доменных имен (DNS) это сервис интернет, который ставит IP адреса и полностью квалифицированные доменные имена (FQDN) в соответствие одно другому. Поэтому DNS облегчает проблему запоминания IP адресов. Компьютеры, на которых запущен DNS , называются серверами имен (name servers). Ubuntu поставляется с BIND (сервис интернет имен Беркли), наиболее распространенную программу, используемую для управления серверами имен под Линукс.

5. Теперь перегружаем BIND9 для применения изменений:

Sudo service bind9 restart

Теперь вы можете увидеть файл /var/log/query.log, заполненный информацией о запросах. Это простейший пример использования опций журналирования BIND9.

Ссылки

Общие типы записей

Этот раздел покажет некоторые наиболее общие типы записей DNS .

1. A запись: Эта запись указывает IP адрес для сетевого имени (hostname).

Www IN A 192.168.1.12

2. CNAME запись: Используется для создания псевдонима (alias) на A запись. Вы не можете создавать CNAME запись, указывающую на другую CNAME запись.

Web IN CNAME www

3. MX запись: Используется для определения куда должна посылаться электронная почта (email). Должна указывать на A запись, не на CNAME .

IN MX 1 mail.example.com. mail IN A 192.168.1.13

4. NS запись: Используется для определения какие сервера поддерживают копии зоны. Должна указывать на A запись, не на CNAME . Ею определяются первичные и вторичные сервера зоны.

Многие пользователи сталкиваются с проблемами при попытке настроить интернет-соединение в Ubuntu. Чаще всего это связано с неопытностью, но могут быть и другие причины. В статье будет предоставлена инструкция по настройке нескольких типов подключений с подробным разбором всех возможных осложнений в процессе выполнения.

Существует множество видов подключений к интернету, но в этой статье будут рассмотрены самые популярные: проводная сеть, PPPoE и DIAL-UP. Также будет рассказано про отдельную настройку DNS-сервера.

Подготовительные мероприятия

Перед тем как приступать к установке соединения, стоит убедиться, что ваша система готова к этому. Сразу же надо уточнить, что команды, выполняемые в «Терминале» , делятся на два вида: требующие права пользователя (перед ними будет стоять символ $ ) и требующие права суперпользователя (в начале стоит символ # ). Обращайте на это внимание, так как без нужных прав большинство команд попросту откажутся выполняться. Также стоит уточнить, что сами символы в «Терминал» вписывать не нужно.

Вам необходимо будет выполнить ряд пунктов:


Помимо прочего, нужно обязательно знать наименование сетевого адаптера. Чтобы это выяснить, введите в «Терминале» эту строку:

$ sudo lshw -C network

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

Имя вашего сетевого адаптера будет располагаться напротив слова «логическое имя» . В данном случае «enp3s0» . Именно это название и будет фигурировать в статье, у вас оно может быть другим.

Примечание: если в вашем компьютере установлено несколько сетевых адаптеров, то они будут пронумерованы соответственно (enp3s0, enp3s1, enp3s2 и так далее). Определитесь, с каким вы будете работать, и используйте его в последующих настройках.

Способ 1: Терминал

«Терминал» — это универсальное средство по настройке всего в Ubuntu. С его помощью можно будет установить интернет-соединение всех типов, о чем и пойдет сейчас речь.

Настройка проводной сети

Настройка проводной сети в Ubuntu выполняется путем внесения новых параметров в конфигурационный файл «interfaces» . Поэтому для начала нужно открыть этот самый файл:

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

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

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

iface [имя интерфейса] inet dhcp
auto [имя интерфейса]

После ввода у вас должно получиться примерно так:

Статический IP настраивать несколько сложнее. Главное - знать все переменные. В конфигурационном файле вам нужно ввести следующие строки:

iface [имя интерфейса] inet static
address [адрес]
netmask [адрес]
gateway [адрес]
dns-nameservers [адрес]
auto [имя интерфейса]


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

Не забудьте перед закрытием текстового редактора сохранить все внесенные параметры.

Помимо прочего, в ОС Ubuntu можно совершить временную настройку подключения к интернету. Отличается она тем, что указанные данные никак не изменяют конфигурационные файлы, а после перезапуска ПК все ранее указанные настройки сбросятся. Если вы впервые пытаетесь установить проводное соединение на Ubuntu, то для начала рекомендуется использовать этот способ.

Все параметры задаются с помощью одной команды:

$ sudo ip addr add 10.2.119.116/24 dev enp3s0

  • 10.2.119.116 - IP-адрес сетевой карты (у вас он может быть другим);
  • /24 - количество бит в префиксной части адреса;
  • enp3s0 - интерфейс сети, к которой подключен кабель провайдера.

Введя все необходимые данные и выполнив команду в «Терминале» , вы сможете проверить их корректность. Если интернет на ПК появился, то все переменные верны, и их можно вносить в конфигурационный файл.

Настройка DNS

Настройка DNS-подключения в разных версиях Ubuntu выполняется по-разному. В версиях ОС начиная с 12.04 — один способ, в более ранних — другой. Рассматривать мы будем только статический интерфейс подключения, так как динамический подразумевает автоматическое определение DNS-серверов.

Настройка в версиях ОС выше 12.04 происходит в уже известном файле «interfaces» . В нем необходимо ввести строку «dns-nameservers» и через пробел перечислить значения.

Итак, сначала откройте через «Терминал» конфигурационный файл «interfaces» :

$ sudo gedit /etc/network/interfaces

dns-nameservers [адрес]

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

Если вы хотите настроить DNS в Ubuntu более ранней версии, то конфигурационный файл будет другим. Откроем его через «Терминал» :

$ sudo gedit /etc/resolv.conf

После в нем можно задать необходимые адреса DNS. Стоит взять в учет то, что в отличии от ввода параметров в «interfaces» , в «resolv.conf» адреса пишутся каждый раз с абзаца, перед значением используется префикс «nameserver» (без кавычек).

Настройка соединения PPPoE

Настройка PPPoE через «Терминал» не подразумевает внесение множества параметров в различные конфигурационные файлы на компьютере. Наоборот, использована будет всего одна команда.

Итак, чтобы совершить подключение типа «точка-точка» (PPPoE), вам необходимо выполнить следующие действия:


После всех проделанных действий ваш компьютер установит соединение с интернетом, если вы все сделали верно.

Обратите внимание, что по умолчанию утилита pppoeconf называет созданное подключение dsl-provider . Если вам нужно будет разорвать соединение, то выполните в «Терминале» команду:

$ sudo poff dsl-provider

Чтобы соединение установилось снова, введите:

$ sudo pon dsl-provider

Примечание: если вы подключаетесь к сети, используя утилиту pppoeconf, то управление сетью через Network Manager будет невозможным, ввиду внесения параметров в конфигурационный файл «interfaces». Чтобы сбросить все настройки и передать управление Network Manager, вам необходимо открыть файл «interfaces» и заменить все содержимое на текст, указанный ниже. После ввода сохраните изменения и перезапустите сеть командой «$ sudo /etc/init.d/networking restart» (без кавычек). Также перезапустите утилиту Network Manager, выполнив «$ sudo /etc/init.d/NetworkManager restart» (без кавычек).

Настройка соединения DIAL-UP

Чтобы совершить настройку DIAL-UP, можно воспользоваться двумя консольными утилитами: pppconfig и wvdial .

Настроить подключение с помощью pppconfig достаточно просто. В целом данный способ очень похож на предыдущий (pppoeconf ): вам точно так же будут заданы вопросы, отвечая на которые по итогу вы установите соединение с интернетом. Сперва запустите саму утилиту:

$ sudo pppconfig

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

Что касается настройки с помощью wvdial , то она происходит немного сложнее. Для начала необходимо установить сам пакет через «Терминал» . Для этого выполните следующую команду:

$ sudo apt install wvdial

В его состав входит утилита, предназначенная для автоматической конфигурации всех параметров. Называется она «wvdialconf» . Запустите ее:

$ sudo wvdialconf

После ее выполнения в «Терминале» будет отображено множество параметров и характеристик — в них разбираться не нужно. Следует лишь знать, что утилита создала специальный файл «wvdial.conf» , в который автоматически внесла необходимые параметры, считав их с модема. Далее надо отредактировать созданный файл «wvdial.conf» , откроем его через «Терминал» :

$ sudo gedit /etc/wvdial.conf

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

  • Idle Seconds = 0 - соединение не будет разорвано даже при долгом бездействии за компьютером;
  • Dial Attempts = 0 - совершает бесконечные попытки установить соединение;
  • Dial Command = ATDP - набор номера будет осуществляться импульсным способом.

По итогу файл конфигураций будет иметь такой вид:

Обратите внимание, что настройки разбиты на два блока, озаглавленные названиями в скобках. Это необходимо для создания двух версий использования параметров. Так, параметры, находящиеся под «» , будут выполняться всегда, а под «» — при указании соответствующей опции в команде.

После проведения всех настроек, чтобы установить соединение DIAL-UP, вам необходимо выполнить эту команду:

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

$ sudo wvdial pulse

Для того чтобы разорвать установленное соединение, в «Терминале» нужно нажать комбинацию клавиш Ctrl+C .

Способ 2: Network Manager

В Ubuntu есть специальная утилита, которая поможет установить соединение большинства видов. К тому же, она обладает графическим интерфейсом. Это Network Manager, который вызывается нажатием по соответствующей иконке в правой части верхней панели.

Настройка проводной сети

Начнем мы точно так же с настройки проводной сети. Для начала необходимо открыть саму утилиту. Для этого кликните по ее иконке и нажмите «Изменить соединения» в контекстном меню. Далее в появившемся окне нужно сделать следующее:


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

Настройка DNS

Для установки соединения может понадобиться ручная настройка DNS-серверов. Для этого выполните следующее:


Настройка PPPoE

Настройка соединения по протоколу PPPoE в Network Manager выполняется так же просто, как и в «Терминале» . По сути, вам надо будет указать только логин и пароль, полученные от провайдера. Но рассмотрим все более детальней.


Теперь в меню Network Manager появилось новое DSL-соединение, выбрав которое вы получите доступ в интернет. Напомним, что иногда нужно перезагрузить компьютер, чтобы изменения вступили в силу.

Заключение

По итогу можно сказать, что в операционной системе Ubuntu есть множество инструментов, для осуществления настройки необходимого интернет-соединения. Утилита Network Manager обладает графическим интерфейсом, что в разы упрощает работу, особенно для новичков. Однако «Терминал» позволяет осуществить более гибкую настройку, вводя те параметры, которых в утилите нет.

DNS (Domain Name System) – важный и довольно сложный в настройке компонент, необходимый для работы веб-сайтов и серверов. Многие пользователи обращаются к DNS-серверам, которые предоставляет их хостинг-провайдер, однако собственные DNS-серверы имеют некоторые преимущества.

В данном мануале вы узнаете, как установить Bind9 и настроить его как кэширующий или перенаправляющий DNS-сервер на сервере Ubuntu 14.04.

Требования

  • Понимание базовых типов DNS-серверов. Ознакомиться с подробностями можно в .
  • Две машины, из которых хотя бы одна работает на Ubuntu 14.04. Первая машина будет настроена как клиент (IP-адрес 192.0.2.100), а вторая – как DNS-сервер (192.0.2.1).

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

Кэширующий DNS-сервер

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

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

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

Перенаправляющий DNS-сервер

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

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

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

1: Установка Bind на DNS-сервер

Пакет Bind можно найти в официальном репозитории Ubuntu. Обновите индекс пакетов и установите Bind с помощью менеджера apt. Также нужно установить пару зависимостей.

sudo apt-get update
sudo apt-get install bind9 bind9utils bind9-doc

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

2: Настройка кэширующего DNS-сервера

Сначала нужно настроить Bind в качестве кэширующего DNS-сервера. Такая конфигурация заставит сервер рекурсивно искать ответы на клиентские запросы на других DNS-серверах. Он будет последовательно опрашивать все соответствующие DNS-сервера, пока не найдет ответ.

Конфигурационные файлы Bind хранятся в каталоге /etc/bind.

Большую часть файлов редактировать не нужно. Главный конфигурационный файл называется named.conf (named и bind – два названия одного приложения). Этот файл ссылается на файлы named.conf.options, named.conf.local и named.conf.default-zones.

Для настройки кэширующего DNS-сервера нужно отредактировать только named.conf.options.

sudo nano named.conf.options

Этот файл выглядит так (комментарии опущены для простоты):

options {
directory "/var/cache/bind";
dnssec-validation auto;

listen-on-v6 { any; };
};

Чтобы настроить кэширующий сервер, нужно создать список контроля доступа, или ACL.

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

Атаки DNS-усиления – это один из способов прекращения работы серверов и сайтов. Для этого злоумышленники пытаются найти общедоступные DNS-серверы, которые обрабатывают рекурсивные запросы. Они подделывают IP-адрес жертвы и отправляют запрос, который вернет DNS-серверу очень объемный ответ. При этом DNS-сервер возвращает на сервер жертвы слишком много данных в ответ на небольшой запрос, увеличивая доступную пропускную способность злоумышленника.

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

Перед блоком options добавьте блок acl. Создайте метку для группы ACL (в данном мануале группа называется goodclients).

acl goodclients {
};
options {
. . .

В этом блоке перечислите IP-адреса или сети, у которых будет доступ к этому DNS-серверу. Поскольку сервер и клиент работают в подсети /24, можно ограничить доступ по этой подсети. Также нужно разблокировать localhost и localnets, которые подключаются автоматически.

acl goodclients {
192.0.2.0/24;
localhost;
localnets;
};
options {
. . .

Теперь у вас есть ACL безопасных клиентов. Можно приступать к настройке разрешения запросов в блоке options. Добавьте в него такие строки:

options {
directory "/var/cache/bind";
recursion yes;

. . .

Блок options явно включает рекурсию, а затем настраивает параметр allow-query для использования списка ACL. Для ссылки на группу ACL можно также использовать другой параметр, например allow-recursion. При включенной рекурсии allow-recursion определит список клиентов, которые могут использовать рекурсивные сервисы.

Однако если параметр allow-recursion не установлен, Bind возвращается к списку allow-query-cache, затем к списку allow-query и, наконец, к спискам по умолчанию localnets и localhost. Поскольку мы настраиваем только кэширующий сервер (он не имеет собственных зон и не пересылает запросы), список allow-query всегда будет применяться только к рекурсии. Это самый общий способ определения ACL.

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

Это все настройки, которые нужно добавить в конфигурационный файл кэширующего DNS-сервера.

Примечание : Если вы хотите использовать только этот тип DNS, переходите к проверке конфигураций, перезапустите сервис и настройте свой клиент.

3: Настройка перенаправляющего DNS-сервера

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

На данный момент файл named.conf.options выглядит так:

acl goodclients {
192.0.2.0/24;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
recursion yes;
allow-query { goodclients; };
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};

Можно использовать тот же список ACL, чтобы ограничивать DNS-сервер конкретным списком клиентов. Однако при этом необходимо немного изменить конфигурацию, чтобы сервер больше не пытался выполнять рекурсивные запросы.

Не меняйте значение recursion на no. Перенаправляющий сервер все-таки поддерживает рекурсивные сервисы. Чтобы настроить перенаправляющий сервер, нужно создать список кэширующих серверов, на которые он будет перенаправлять запросы.

Это делается в блоке options {}. Сначала нужно создать в нем новый блок forwarders, где будут храниться IP-адреса рекурсивных серверов имен, на которые нужно перенаправлять запросы. В данном случае это будут DNS-серверы Google (8.8.8.8 и 8.8.4.4):

. . .
options {
directory "/var/cache/bind";
recursion yes;
allow-query { goodclients; };
forwarders {

8.8.8.8;

8.8.4.4;

};
. . .

В результате конфигурация выглядит так:

acl goodclients {
192.0.2.0/24;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
recursion yes;
allow-query { goodclients; };
forwarders {
8.8.8.8;
8.8.4.4;
};
forward only;
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};

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

Jun 25 15:03:29 cache named: error (chase DS servers) resolving "in-addr.arpa/DS/IN": 8.8.8.8#53
Jun 25 15:03:29 cache named: error (no valid DS) resolving "111.111.111.111.in-addr.arpa/PTR/IN": 8.8.4.4#53

Чтобы избежать их, нужно изменить значение параметра dnssec-validation на yes и явно разрешить dnssec.

. . .
forward only;
dnssec-enable yes;
dnssec-validation yes;
auth-nxdomain no; # conform to RFC1035
. . .

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

4: Проверка настроек и перезапуск Bind

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

Чтобы проверить синтаксис конфигурационных файлов, введите:

sudo named-checkconf

Если в файлах нет ошибок, командная строка не отобразит никакого вывода.

Если вы получили сообщение об ошибке, исправьте ее и повторите проверку.

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

sudo service bind9 restart

После нужно проверить логи сервера. Запустите на сервер команду:

sudo tail -f /var/log/syslog

Теперь откройте новый терминал и приступайте к настройке клиентской машины.

5: Настройка клиента

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

Отредактируйте файл /etc/resolv.conf, чтобы направить сервер на сервер имен.

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

Откройте файл с помощью sudo в текстовом редакторе:

sudo nano /etc/resolv.conf

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

nameserver 192.0.2.1
# nameserver 8.8.4.4
# nameserver 8.8.8.8
# nameserver 209.244.0.3

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

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

Для этого можно использовать ping:

ping -c 1 google.com
PING google.com (173.194.33.1) 56(84) bytes of data.
64 bytes from sea09s01-in-f1.1e100.net (173.194.33.1): icmp_seq=1 ttl=55 time=63.8 ms
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 63.807/63.807/63.807/0.000 ms