Андрей Смирнов
Время чтения: ~10 мин.
Просмотров: 23

Просмотр и изменение DNS в Linux

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

Когда компьютеру нужно узнать IP адрес какого-либо домена, он отправляет запрос известному ему DNS серверу. Эти сервера могут быть получены автоматически от роутера по DHCP или же заданы в ручную. В этой статье мы рассмотрим как выполняется настройка DNS Ubuntu 16.04 и более старых версиях.

Раньше, для настройки DNS серверов, которые будут использоваться системой было достаточно внести адреса нужных серверов в файл /etc/resolv.conf. Но сейчас всей конфигурацией сети в Ubuntu управляет NetworkManager, а этот файл теперь представляет собой только ссылку на файл NetworkManager.

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

dns-1024x435.png

Выберите ваше подключение и нажмите «Изменить»:

dns1-1024x602.png

В открывшемся окне перейдите на вкладку «Параметры IPv4»:

dns2-1024x601.png

Затем, в поле «Способ настройки» выберите «Автоматически (DHCP, только адрес)»:

dns3-1024x601.png

Теперь немного ниже появиться поле «Серверы DNS», где вам нужно прописать нужные серверы, можно несколько адресов через запятую. Например, можно указать сервера от Google:

dns5-1024x601.png

Поле этого нажмите «Сохранить» и «Закрыть». Теперь можете переподключитесь к этому соединению и можете проверять текущий DNS сервер:

dns6-1024x605.png

Собственно, это все, но есть еще один способ настройки через консоль, если этот не сработал или вы предпочитаете работать из консоли.

В Ubuntu есть унифицированный интерфейс настройки сети, который настраивается через конфигурационный файл /etc/network/interfaces. Сначала смотрим список сетевых интерфейсов:

dns7-1024x604.png

Откройте файл для редактирования и найдите в нем имя своего сетевого интерфейса, например, auto enp0s3, если такой секции нет, ее нужно добавить:

auto enp0s3 iface enp0s3 inet dhcp

dns8-1024x600.png

Затем, добавьте в эту секцию строчку:

dns-nameserver 8.8.8.8

dns9-1024x602.png

Здесь адрес 8.8.8.8 — это адрес вашего DNS сервера. Но эта настройка сработает, только если ваш DHCP клиент не пытается назначить адрес самостоятельно. Чтобы указать DNS адрес на уровне DHCP сервера нужно добавить такую строчку в конфигурационный файл /etc/dhcp/dhclient.conf:

supersede domain-name-servers 8.8.8.8

dns10-1024x600.png

Здесь тоже адрес 8.8.8.8 означает адрес DNS сервера. Для верности, вы можете добавить свои адреса DNS серверов в файл /etc/resolvconf/resolv.conf.d/base:

nameserver 8.8.8.8

dns12-1024x596.png

Чтобы настройки вступили в силу необходимо перезапустить сеть:

Возможно, даже лучше будет если вы полностью перезагрузите компьютер. Теперь вы можете открыть /etc/resolv.conf и посмотреть применялся ли новый адрес DNS:

dns11-1024x601.png

Как видите, в моем примере все заработало. Подобно этому выполняется настройка dns linux для любого дистрибутива.

В этой небольшой статье мы рассмотрели как выполняется настройка DNS Ubuntu 16.04 через графический интерфейс или терминал. В Ubuntu автоматической настройкой DNS могут заниматься множество утилит и это создает некоторые проблемы при настройке, но со всем можно разобраться. Надеюсь, эта информация была полезной для вас.

nastrojka-dns-v-linux.png

Настраиваем DNS в Linux

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

Способ 1: Меню графической оболочки

Этот способ в первую очередь нацелен на начинающих пользователей, поскольку чаще всего в Linux их пугает необходимость выполнять каждое действие, вводя команды в консоль. Уже давно практически во всех окружениях присутствуют соответствующие пункты, позволяющие реализовывать различные конфигурации без единого обращения к «Терминалу». К DNS это тоже относится. Давайте посмотрим, как производится данное редактирование в стандартной графической оболочке Ubuntu.

  1. Обратите внимание на верхнюю панель, где присутствует кнопка сети и выключения компьютера. Нажмите по одной из них, чтобы просмотреть список подключений.

otkrytie-paneli-zadach-dlya-perehoda-k-konfiguraczii-seti-pri-nastrojke-dns-v-linux.png

Здесь вас интересует кнопка под названием «Параметры соединения».</li>

perehod-k-konfiguraczii-seti-dlya-izmeneniya-parametrov-dns-v-linux.png

В открывшемся меню отыщите текущее соединение и нажмите по значку в виде шестеренки, чтобы перейти к конфигурации.</li>Если вы хотите узнать свой адрес DNS, просто посмотрите на специально отведенную строку на вкладке «Сведения о системе». Для настройки получения DNS переместитесь на вкладку «IPv4» или «IPv6», воспользовавшись верхней панелью.</li>В строке «Метод» вы можете указать оптимальный для вас способ получения DNS. По умолчанию используется автоматический тип через DHCP. Однако ничего не мешает вам просто отметить маркером один из остальных присутствующих пунктов.</li>Вы можете самостоятельно прописать серверы DNS, к которым следует обращаться вашему маршрутизатору. Для этого в строке «DNS» через запятую укажите IP-адреса. На скриншоте ниже вы видите серверы от Google, и выглядят они так: 8.8.8.8 и 8.8.4.4.</li>По завершении конфигурации убедитесь в том, что все выставлено правильно, и только потом кликните на «Применить».</li>Если возникла надобность создания нового типа подключения, то вы можете сразу же прописать настройки DNS точно таким же образом, как это было показано только что.</li>По окончании конфигурации откройте главное меню и запустите «Терминал» для проверки.</li>Введите nslookup, а затем укажите необходимый адрес для проверки, например, google.com.</li>После нажатия на Enter подождите несколько секунд и ознакомьтесь с полученной информацией. Вы будете уведомлены о том, какой именно DNS-сервер использовался при пропинговке адреса.</li></ol>

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

Способ 2: Редактирование конфигурационных файлов

Использование «Терминала» для редактирования конфигурационных файлов при изменении системных параметров — самый эффективный способ, поскольку все действия здесь будут осуществляться от имени суперпользователя, а также не сбросятся при первом же перезапуске системы. Для конфигурации DNS используйте следующую инструкцию.

  1. Запустите консоль так, как это было показано ранее, или используйте любой удобный способ, например, созданный значок на панели «Избранное».
  2. Для начала просмотрите список существующих сетевых интерфейсов, чтобы проверить файл для конфигурации. Введите ls /sys/class/net/ и нажмите на Enter.
  3. Проверьте, присутствует ли здесь ваше название интерфейса. По умолчанию оно выглядит так: enp0s3. В случае отсутствия подобной строки придется добавить ее самостоятельно, чему и будут посвящены следующие шаги. Пропустите их, если имя присутствует.
  4. Далее дело будет касаться взаимодействия с конфигурационными текстовыми файлами. Для этого вы можете использовать любой редактор, установленный по умолчанию, например, vi. Однако начинающим юзерам не всегда удобно управлять подобным софтом. В таких ситуациях мы советуем установить более подходящее решение. Пропишите sudo apt install nano и нажмите на Enter.
  5. Подтвердите свои намерения добавить софт, а после успешной инсталляции переходите к работе с файлами. Введите команду sudo nano /etc/network/interfaces и затем подтвердите ее.
  6. Вставьте строки auto enp0s3 и iface enp0s3 inet dhcp, чтобы задать конфигурацию интерфейса.
  7. Используйте комбинацию Ctrl + O для сохранения настроек. В будущем запомните, что знак ^ обозначает Ctrl, то есть, например, выход из редактора осуществляется через Ctrl + X.
  8. При сохранении не изменяйте имя файла для записи, а просто нажимайте на Enter.
  9. Следом в этом же файле введите dns-nameserver 8.8.8.8 для установки DNS от Google, и уже после этого можете закрыть данный объект.
  10. Далее понадобится настроить другой элемент, перейдите к нему через sudo nano /etc/dhcp/dhclient.conf.
  11. При запросе пароля суперпользователя введите его. Учтите, что символы при таком методе набора не отображаются в целях безопасности.
  12. Опуститесь в самый низ по содержимому и вставьте строку supersede domain-name-servers 8.8.8.8. Затем сохраните изменения и закройте файл.
  13. Осталось отредактировать последние параметры в sudo nano /etc/resolvconf/resolv.conf.d/base.
  14. Вставьте строку nameserver 8.8.8.8, определяющую DNS. Перед выходом не забудьте применить изменения в этом же файле.
  15. Все изменения DNS вступят в силу сразу же после перезагрузки сети. Осуществляется это командой sudo systemctl restart networking.
  16. Появившаяся пустая строка для ввода означает, что перезапуск прошел успешно.

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

Помогла ли вам эта статья?

Зачем это надо. На рабочей станции разработчика есть NN локально поднятых проектов. Этот разработчик для каждого проекта проделывает следующее:

  1. Для работы с локальной копией проекта редактирует конфиг своего веб сервера (apache, lighttpd etc.) и указывает в конфиге имя хоста для этого локального проекта.
  2. Потом перезапускает веб сервер.
  3. Потом идет редактировать /etc/hosts Прописывает там имя нового хоста и локальный ip.
  4. Потом выясняет что этот прописанный хост перекрывает тот, что внезапно нужен в интернете, или он ошибся когда прописал имя в конфиге веб-сервера или в hosts.

В итоге всего этого занудства как правило тратится драгоценная нервная энергия которую можно потратить более эффективно на что-то поинтереснее. Что я предлагаю сделать.Я предлагаю сделать локальный домен (в примере .mydev) и сократить процедуру выше до двух шагов:

  1. Прописываем в конфиг веб-сервера новый хост с именем вида projectname.mydev
  2. Перезапускаем веб-сервер

И всё. Радостно начинаем допиливать наш проект по заданному имени.Что будем делать, TODO 1. Установим DNS сервер.sudo apt-get install bind9 2. Идем разглядывать собственно конфиги. Принцип этой штуки состоит в том, что на данный момент при обращении к какому-либо хосту (это грубая схема) наша машинка идет на DNS-сервер выданный ему провайдером или прописанный вручную, в соответствии с настройками. Получает собственно у DNS-а IP-адрес хоста ну и отправляется за данными в сторону этого IP. Дальше нам не интересно. Как будет. А будет так: при обращении к какому-либо хосту, мы будем обращаться к локальному DNS серверу, который будет проверять наши правила и если запрос не попадает под наши правила, то наш локальный DNS идет и спрашивает тоже самое у провайдерского DNS-а. И отдает нам уже собственно его (провайдера) ответ. Итак, идем к конфигамcd /etc/bindREM: Я пользуюсь mc. Нам понадобятся права суперпользователя, так что либо sudo mc, либо sudo mcedit filename при редактировании каждого файла, вопрос с правами я далее затрагивать не буду. 3. Открываем на редактирование named.conf.options Тут нас интересует секция forwarders её нам нужно раскомментировать и указать IP адрес(а) DNS сервера провайдера (или может быть роутера, смотря как организован выход в интернет). Сохраняем, выходим. 4. Открываем на редактирование named.conf.default-zones Тут нам вниз нужно добавить новую зону. Выглядеть новая секция будет вот так: zone "mydev" { type master; file "/etc/bind/db.mydev"; }; 5. По указанному пути создаем файликsudo cp /etc/bind/db.local /etc/bind/db.mydev То есть просто делаем копию описания локальной зоны. Нам нужно будет в ней кое-что отредактировать. Итак копию сделали, теперь: 6. Открываем на редактирование db.mydev Там нам нужно исправить всего несколько строк. В итоге наш db.mydev будет выглядеть вот так: $TTL 604800 @ IN SOA mydev. root.mydev. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL @ IN NS mydev. @ IN A 127.0.0.1 * IN A 127.0.0.1 @ IN AAAA ::1 Сравните с оригинальным db.local для того чтоб было понятно что произошло. По сути ничего особенного. 7. Теперь остается только перезапустить наш DNSsudo /etc/init.d/bind9 restart 8. Ну и проверяем теперь как это работает. ping 11.mydev ping 22.mydev Если работает то IP должен быть тот что вы указали (в примере 127.0.0.1) Но сейчас ничего не работает. Потому что… 9. Забыл рассказать про грабли. NetworkManager автоматически прописывает в /etc/resolv.conf адрес DNS провайдера. Если там будет прописан внешний DNS, то наша поделка работать не будет. Обращения в сеть просто пойдут мимо неё. Чтобы это дело устранить, нужно зайти в свойства текущего подключения к интернету, идем:«Изменить соединения» => Выбираем наше соединение => «Параметры IPv4» Тут указываем IP нашего локального DNS (в примере 127.0.0.1), сделать это можно выбрав метод «DHCP, только адрес». Этого должно быть достаточно. После этого через NetworkManager соединение разрываем и снова устанавливаем. Если все ок, то в /etc/resolv.conf мы должны увидеть наш искомый IP, тот что прописали как DNS в NetworkManager. 10. Вот теперь проверяем результат. Вот собственно и всё. Теперь можно не трогать /etc/hostsИспользуемые источники:

  • https://losst.ru/nastrojka-dns-v-ubuntu
  • https://lumpics.ru/setup-dns-in-linux/
  • https://habr.com/post/85067/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации