Содержание
- 1 Как узнать IP DNS сервера в Linux
- 2 Настройка DNS в Ubuntu
- 3 Настройка DNS в Ubuntu через GUI
- 4 Настройка DNS через терминал Ubuntu
- 5 Выводы
- 6 Просмотр и изменение DNS в Linux
- 7 Какой командой посмотреть настройки DNS?
- 8 Как узнать, какой DNS я использую в Ubuntu с 14.04 и далее
- 9 5 ответов
- 10 Когда и зачем возникает необходимость менять DNS-сервер
- 11 Как узнать прописанный адрес DNS-сервера и как его изменить
- 12 Ошибки, которые могут возникнуть при использовании DNS
- 13 Установка
- 14 Настройка dnsmasq как DHCP
- 15 Настройка dnsmasq как DNS
Как узнать IP DNS сервера в Linux
DNS (Domain Name System — система доменных имён) является важным элементом сети. Без DNS не работали бы Интернет-браузер, почтовые сервера, стриминговые сервисы и другие.
Задача DNS сообщать IP адрес запрошенного имени хоста (обычно домена веб-сайта).
Эта служба работает на специальных компьютерах, называемых DNS сервер — они хранят базу данных записей, включающей в себя имена хостов и соответствующие им IP адреса. DNS серверы представляют собой иерархическую структуру, но нам важно только то, что на наш запрос с именем хоста DNS сервер отвечает, какой у этого хоста IP адрес.
То есть DNS решает проблему, что нам не нужно помнить/знать IP адреса всех сайтов, которые мы посещаем.
DNS это обширная и интересная тема, но в этой заметке мы только поговорим, как узнать, к какому именно DNS серверу делаются запросы с данного компьютера на Linux? То есть мы научимся определять IP адрес используемого DNS сервера.
Имеется несколько способов сделать это, мы рассмотрим самые универсальные, подходящие для Linux, BSD, и других Unix-подобных систем.
1. Настройки DNS в системе хранятся в файле /etc/resolv.conf, то есть IP адрес DNS сервера можно узнать просто посмотрев этот файл.
С помощью команды cat:
С помощью команды less:
Или с помощью команды grep:
Все эти команды выведут одинаковые результаты, например в моём случае это:
Запись может быть только одна или их может быть несколько. В первую очередь используется первый указанный DNS сервер, если к нему не удаётся получить доступ, то используются запасные DNS (если они указаны).
2. Если вам нужен альтернативный метод (например, вы предполагаете, что настройки DNS изменены сетевым подключением), то вы можете использовать программу dig:
Используемый сервер имён показан в строке начинающейся с ;; SERVER:
А в этом разделе, кстати, вы можете узнать IP адрес любого сайта:
3. Ещё один способ узнать IP адрес сайта, а заодно и IP DNS сервера к которому делаются запросы — с помощью команды nslookup:
В этих строках показан IP используемого DNS сервера:
А в этой строке IP адрес интересующего сайта:
Источник
Настройка DNS в Ubuntu
Сервера DNS используются системой для преобразования сложных для запоминания IP адресов в простые доменные имена. Это делается потому что людям сложно запоминать несколько никак не связанных цифр, но очень просто запомнить слово.
Когда компьютеру нужно узнать IP адрес какого-либо домена, он отправляет запрос известному ему DNS серверу. Эти сервера могут быть получены автоматически от роутера по DHCP или же заданы в ручную. В этой статье мы рассмотрим как выполняется настройка DNS Ubuntu 16.04 и более старых версиях.
Настройка DNS в Ubuntu через GUI
Раньше, для настройки DNS серверов, которые будут использоваться системой было достаточно внести адреса нужных серверов в файл /etc/resolv.conf. Но сейчас всей конфигурацией сети в Ubuntu управляет NetworkManager, а этот файл теперь представляет собой только ссылку на файл NetworkManager.
Этот способ до сих пор работает, но в нем вы можете настроить DNS на LiveCD, или до перезагрузки. После перезагрузки все настройки собьются и придется все делать заново. Поэтому, чтобы все сохранилось нужно выполнять все действия через интерфейс NetworkManager. Сначала откройте контекстное меню для значка сети на панели и выберите «Изменить подключения»:
Читайте также: Настройка датчика движения lux
Выберите ваше подключение и нажмите «Изменить»:
В открывшемся окне перейдите на вкладку «Параметры IPv4»:
Затем, в поле «Способ настройки» выберите «Автоматически (DHCP, только адрес)»:
Теперь немного ниже появиться поле «Серверы DNS», где вам нужно прописать нужные серверы, можно несколько адресов через запятую. Например, можно указать сервера от Google:
Поле этого нажмите «Сохранить» и «Закрыть». Теперь можете переподключитесь к этому соединению и можете проверять текущий DNS сервер:
Собственно, это все, но есть еще один способ настройки через консоль, если этот не сработал или вы предпочитаете работать из консоли.
Настройка DNS через терминал Ubuntu
В Ubuntu есть унифицированный интерфейс настройки сети, который настраивается через конфигурационный файл /etc/network/interfaces. Сначала смотрим список сетевых интерфейсов:
Откройте файл для редактирования и найдите в нем имя своего сетевого интерфейса, например, auto enp0s3, если такой секции нет, ее нужно добавить:
sudo vi /etc/network/interfaces
Затем, добавьте в эту секцию строчку:
Здесь адрес 8.8.8.8 — это адрес вашего DNS сервера. Но эта настройка сработает, только если ваш DHCP клиент не пытается назначить адрес самостоятельно. Чтобы указать DNS адрес на уровне DHCP сервера нужно добавить такую строчку в конфигурационный файл /etc/dhcp/dhclient.conf:
sudo vi /etc/dhcp/dhclient.conf
supersede domain-name-servers 8.8.8.8
Здесь тоже адрес 8.8.8.8 означает адрес DNS сервера. Для верности, вы можете добавить свои адреса DNS серверов в файл /etc/resolvconf/resolv.conf.d/base:
sudo vi /etc/resolvconf/resolv.conf.d/base
Чтобы настройки вступили в силу необходимо перезапустить сеть:
sudo systemctl restart networking
Возможно, даже лучше будет если вы полностью перезагрузите компьютер. Теперь вы можете открыть /etc/resolv.conf и посмотреть применялся ли новый адрес DNS:
Как видите, в моем примере все заработало. Подобно этому выполняется настройка dns linux для любого дистрибутива.
Выводы
В этой небольшой статье мы рассмотрели как выполняется настройка DNS Ubuntu 16.04 через графический интерфейс или терминал. В Ubuntu автоматической настройкой DNS могут заниматься множество утилит и это создает некоторые проблемы при настройке, но со всем можно разобраться. Надеюсь, эта информация была полезной для вас.
Источник
Просмотр и изменение DNS в Linux
Служба DNS (англ. Domain Name System — система доменных имён) используется для получения информации о доменах. Основное её предназначение — увязывать IP-адрес и доменное имя хоста. Посмотреть, к какому DNS-серверу подключен компьютер с Linux на борту, не просто, а очень просто. Как просто и поменять DNS в Linux.
Если Linux снабжён графическим интерфейсом, достаточно открыть сведения о сетевом соединении и посмотреть в строчку DNS.
По понятным причинам нас этот способ не очень интересует. Да и элементы интерфейса могут у разных сред рабочего стола различаться. Рассмотрим просмотр и настройку DNS в терминале Linux.
Читайте также: Настройка регистратора и gdmss
Традиционно DNS в Linux настраивалась через файл /etc/resolv.conf. Сейчас, однако, он может оказаться бесполезным. Откроем его любым консольным текстовым редактором, например nano:
Мы можем увидеть следующее:
Это значит, что в системе есть systemd, который содержит свой локальный сервер DNS. Его адрес и прописан в этом файле. Однако, в конечном итоге, используются другие DNS-серверы! Посмотреть их можно по-разному. Можно использовать команду
Вы увидите нечто подобное тому, что на скриншоте ниже. Если в системе несколько сетевых интерфейсов, информация будет предоставлена по каждому.
Другой способ — использовать утилиту nmcli. Введите команду
Как изменить DNS? Если в системе нет systemd, то это можно сделать редактированием файла /etc/resolv.conf. Откройте его любым текстовым редактором, найдите строку nameserver и впишите адреса DNS-серверов. Если их несколько, введите их адреса последовательно. Например:
Если в ОС есть systemd, вышеописанных способ бесполезен, поскольку настройки будут перезаписываться при перезагрузке системы. В данном случае нам нужно редактировать файл /etc/systemd/resolved.conf.
В разделе Resolve отредактируйте строку DNS. При необходимости уберите символ # для раскомментирования. Адреса DNS-серверов прописываются через запятую.
Как видим на этом примере, systemd несколько усложнил операционную систему Linux. Однако настроить DNS в ней до сих пор не составляет труда. Кроме того, в Linux можно пользоваться и файлом hosts.
Источник
Какой командой посмотреть настройки DNS?
Всегда удивляло, что в галимой венде это делается одной командой ipconfig, которые выдает все- IP, шлюз, маску, DNS в Линуксе ее аналог ifconfig о DNS не сообщает ничего, как будто его нет (и про шлюз тоже) Как же это делается, есть ли такая команда?
Раньше обходился просмотром конфига /etc/resolv.conf
Но он показывает заданное значение, а интересно было бы узнать реальное значение DNS, которое, например, из-за сбоев, мало ли, может отличаться от заданного?
Так есть такая команда или нет?
Кстати, ее и смотрел, но не понял, как ей сказать, чтобы она показала dns настройки?
Но он показывает заданное значение, а интересно было бы узнать реальное значение DNS, которое, например, из-за сбоев, мало ли, может отличаться от заданного?
Каких еще сбоев? Там и указан адрес днс сервера, которым пользуеются все программы.
Так программы читают содержимое resolv.conf. В некоторых случаях (например, в некоторых вариантах настройки network-manager) он прописывает в resolv.conf localhost и одновременно поднимает dns-сервер dnsmasq, который уже сам настраивает.
Так программы читают содержимое resolv.conf.
В этом и проблема — хотелось, чтобы они не попугайничали, а определяли то, чем реально пользуется в работе, скажем, тот же bind.
— показал совершенно не то, что прописано в моем resolv.conf
ну так пропишите свой сервер в ресолв.конф. А уж в своем сервере укажите те сервера, которые вам нужны.
Всегда удивляло, что в галимой венде это делается одной командой ipconfig, которые выдает все- IP, шлюз, маску, DNS в Линуксе ее аналог ifconfig о DNS не сообщает ничего, как будто его нет (и про шлюз тоже)
Так философия разная. Одна задача — одна программа, но выполняющая ее хорошо.
Читайте также: Дуги х5 мах настройка
На самом деле ifconfig и route считаются устаревшими и рекомендуется использовать утилиту ip.
в галимой венде это делается одной командой ipconfig
это ты просто венду плохо знаешь, начиная с утилиты route и далее
Источник
Как узнать, какой DNS я использую в Ubuntu с 14.04 и далее
(A следует за аналогичным вопросом для 12.04.)
До Ubuntu 12.04 вы можете увидеть активный DNS в /etc/resolv.conf. В Ubuntu 12.04 NetworkManager больше не работает с файлом. Вам нужно напрямую обратиться к инструменту командной строки nm-tool.
Интересно, что nm-tool больше не устанавливается по умолчанию в 14.04 и позже. Хотя вы все еще можете установить через apt-get install, вы не можете считать, что все Ubuntu имеют это из коробки.
Таким образом, вопрос остается. Как вы знаете, по умолчанию установку, DNS, который вы используете по командной строке?
5 ответов
Анализ пакетов будет альтернативным методом, который работает независимо от используемого NetworkManager или другого сетевого подключения. Основная идея — отправить dns-запрос с помощью nslookup и во второй проверке терминала, куда идут пакеты.
Для этого нам нужно будет подключиться к сети в первый раз, чтобы ничто не загромождает соединения и запускает следующую команду:
В альтернативном прогоне терминала:
Как только вы получите список пакетов из tcpdump, проверьте, где делаете они идут с вашего IP-адреса.
Как вы можете видеть, мой ноутбук eagle отправляет пакеты в dns моего университета, b.resolvers.Level3.net.domain. Если вы хотите увидеть IP-адрес, вы можете использовать флаг -n с tcpdump.
проверьте сетевые подключения:
и выберите соединение, которое вы хотите настроить.
Заменить «Интернет» без вашего имени соединения
Использовать все еще можно использовать nm-tool:
Установите его для U14.04 и более поздних версий с помощью примера
Он по-прежнему доступен по умолчанию в версии 14.04, поскольку он связан с сетевым менеджером.
В настоящее время на версии 15.04 вы можете загружать и извлекать nm-инструмент из старого (с 15 апреля и позднее) и даже не доступен через apt-get. пакет вручную. Выполните следующие команды:
Сначала создайте каталог temp для работы в:
Затем загрузите старую версию и извлеките файлы:
Создайте новый каталог:
(если он говорит file already exists, просто игнорируйте сообщение и продолжайте).
Скопируйте файл в новый каталог: [ ! d6]
Вернитесь в домашний каталог и удалите каталог temp:
Теперь установите псевдоним для инструмента nm:
Теперь текущий пользователь должен иметь возможность запускать nm-инструмент из терминала.
Кроме того, это может все еще неточно предоставлять все фактические DNS-разрешения, которые вы используете. [!d11 ]
Вы можете перейти на DNSleaktest.com, чтобы получить полный отчет. Нажмите «Расширенный тест», чтобы получить полный отчет.
список разработчиков nmcli | grep DNS
выводит что-то вроде; IP4.DNS[1]: 8.8.8.8 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4
Вышеупомянутая команда работает до Ubuntu 16.04 Для Ubuntu 16.04 используйте: nmcli dev show | grep DNS
Источник
Среди обычных пользователей никто и никогда не задумывался о том, как работает интернет. Как происходит сёрфинг в глобальной паутине, почему браузеры попадают именно на те страницы, которые вы запрашиваете. Именно тут и вступает в игру DNS-серсер (Domain Name System). Эта система необходима для того, чтобы корректно соблюдать маршруты между адресами интернета, от ПК до запрашиваемых сайтов.
Когда и зачем возникает необходимость менять DNS-сервер
По умолчанию DNS-сервер назначается вашим провайдером, но бывают случаи перегрузки, когда конкретному сервису обращается слишком много клиентов. Из-за этого скорость загрузки и передачи пакетов данных может существенно падать. Также некоторые DNS-серверы имеют ограничения в связи с законодательством государства, в котором ведут свою деятельность. Случается, что правительства блокируют даже мировые социальные сети и мессенджеры. В отдельных случаях смена DNS может разрешить доступ к заблокированным ресурсам, а также увеличить скорость загрузки файлов и контента.
Принцип работы DNS-сервера — направить пользователя по правильному адресу интернета
Как узнать прописанный адрес DNS-сервера и как его изменить
Сейчас мировой тренд провайдеров заключается в автоматическом определении DNS-сервера, то есть, его не нужно изначально. Но все же узнать его довольно просто, всего в несколько кликов мышкой.
Windows
Узнать свой DNS-сервер и заменить его можно в соответствующей графе «Панели управления».
- Нажимаем комбинацию клавиш Win+R, в поле «Выполнить» прописываем control и запускаем команду в действие кнопкой OK или Enter на клавиатуре.
Запускаем «Панель управления» через исполняющую программу
- Меняем вид с «Категории» на «Значки» и щёлкаем по пункту «Центр управления сетями и общим доступом».
Выбираем элемент «Центр управления сетями и общим доступом»
- Откроется окно с активными (действующими, подключёнными) сетями. Нажимаем на ссылку напротив той, которая имеет доступ к интернету.
Просматриваем список активных сетей в «Центре управления сетями и общим доступом»
- Откроется окно состояния сети. Кликаем кнопку «Сведения…».
В окне «Состояние» нажимаем кнопку «Сведения»
- Появится ещё одно окно со всеми данными подключённой сети. В графе «DNS-серверы IPv4» знакомимся с действующими адресами сервисов, которые использует подключение в данный момент.
Просматриваем подключенные DNS-серверы
Заменить DNS-сервер также просто. Для начала возвращаемся в окно «Состояние».
- Нажимаем кнопку «Свойства», что в графе «Активность».
Нажимаем кнопку «Свойства», что в графе «Активность»
- В окне компонентов выделяем пункт «IP версии 4», после чего нажимаем кнопку «Свойства».
Открываем протокол «IP версии 4»
- Откроется последнее окно настроек. Ставим галочку у пункта «Использовать следующие адреса DNS-серверов», прописываем IP-адреса сервисов, которые вы хотите использовать. Затем сохраняем все изменения во всех окнах кнопкой OK.
Чтобы прописать адрес DNS-сервера, ставим галочку на «Использовать следующие адреса DNS-серверов»
В итоге мы имеем доступ к заданному сервису преобразования доменных имён.
Ubuntuк
Чтобы изменить настройки DNS в операционных системах Ubuntu можно пользоваться разными способами. Самый простой — при помощи интерфейса.
- В правом верхнем углу выпадающее меню сети. Нажимаем на соответствующий значок, выбираем пункт «Изменить соединение…».
Открываем выпадающее меню сети и нажимаем «Изменить соединение…»
- Выбираем активное соединение с интернетом и нажимаем «Изменить».
Выбираем подключение к интернету и нажимаем кнопку «Изменить»
- Переходим во вкладку «Параметры IPv4».
Переходим во вкладку «Параметры IPv4»
- Меняем фильтр «Способ настройки» на «Автоматически (DHCP, только адрес)».
Меняем фильтр «Способ настройки» на «Автоматически (DHCP, только адрес)»
- В графе «Серверы DNS» прописываем нужные адреса через запятую. Затем нажимаем кнопку «Сохранить» и закрываем окно.
В поле «Серверы DNS» прописываем соответствующие адреса
Чтобы узнать нынешний DNS-сервер в ОС Ubuntu, необходимо в терминале ввести команду $ cat /etc/resolv.conf. Это выдаст всю информацию по сети: графа nameserver и содержит доменный адрес.
На роутере
Сразу стоит отметить, что не все модели роутеров дают возможность изменять в своих настройках адрес DNS-серверов. Некоторые устройства позволяют заменить на известные сервисы, к примеру «Яндекс-DNS» или DNS Google.
- Для начала необходимо перейти на страницу управления роутером. Для этого в адресной строке любого браузера вводим 192.168.1.1 и нажимаем клавишу Enter.
- В зависимости от марки роутера дальнейшие инструкции имеют варианты. В некоторых случаях дополнительные настройки и сведения могут находиться уже на основной странице. Но чаще всего необходимо нажать некую кнопку для перехода в сопутствующее меню. Кнопка может называться Advansed, Setup, «Настройки» и так далее. Нажимаем на эту кнопку, чтобы перейти в дополнительное меню.
На главной странице управления роутером переходим в дополнительные настройки
- Зачастую в первой графе сведений уже виден DNS-адрес.
Среди сведений знакомимся с адресом DNS-сервера
- Для смены сервиса есть несколько вариантов:
- среди пунктов меню может быть «Динамический DNS». Включение этой функции запустит автоматическую смену сервера, если работающий в данный момент по какой-либо причине перестанет отвечать на запросы пользователя. Переставляем галочку в активное состояние или пункт «Включить» и сохраняем изменения;
В некоторых роутерах есть возможность настройки динамического доменного сервиса
- В некоторых роутерах уже вписан качественный DNS-сервер от корпораций гигантов, таких как Яндекс или Google. Эти сервисы работают практически без сбоев.
В некоторых роутерах уже вписан качественный DNS-сервер от Яндекс и/или Google
- среди пунктов меню может быть «Динамический DNS». Включение этой функции запустит автоматическую смену сервера, если работающий в данный момент по какой-либо причине перестанет отвечать на запросы пользователя. Переставляем галочку в активное состояние или пункт «Включить» и сохраняем изменения;
Ошибки, которые могут возникнуть при использовании DNS
Пользователь редко сталкивается с ошибками, которые связаны с DNS-сервером, но они случаются и делятся на два типа: внутренние и внешние. Под внешними разумеются неполадки самого сервиса, к которому обращается браузер. Эту проблему решить просто: необходимо поставить автоматический выбор DNS или сменить сервис на более надёжный, как показано в примерах выше.
Если же способы смены проблему не решили, значит, неполадки связаны со службой «DNS-клиента». Она может быть отключена или повреждена вирусами.
- Нажимаем комбинацию клавиш Win+R, вводим команду services.msc, после чего нажимаем кнопку OK или Enter.
Через исполняющую программу запускаем «Службы»
- Среди перечня служб находим «DNS-клиент», двойным щелчком мыши по ней открываем свойства.
Среди списка служб находим «DNS-клиент»
- Меняем тип запуска на «Автоматически», после чего перезагружаем компьютер.
Двойной щелчок открывает свойства службы
Если с перезагрузкой проблема не исчезла — значит, файлы службы повреждены и необходимо запустить проверку системы на вирусы и восстановление файлов ОС. Лучше использовать две или три антивирусные программы.
- Нажмите комбинацию клавиш Win+R, введи в поле «Выполнить» команду CMD и нажмите OK.
- В открывшемся терминале Windows введите sfc /scannow и запустите проверку и восстановление файлов системы. Обязательно дождитесь, пока утилита закончит свою работу. После перезагрузите компьютер.
Через командную строку проверяем целостность файлов операционной системы
Видео: как исправить ошибки, связанные с DNS-сервером
Изменить DNS-сервер просто. В случае необходимости вы сможете без труда восстановить скорость работы любимых сайтов. Пользуйтесь инструкциями выше, и у вас не возникнет никаких проблем с сёрфингом в сети.
Dnsmasq — это программа, поддерживающая работу сразу двух сетевых сервисов, DNS и DHCP. Dnsmasq как сервис имеет ряд преимуществ по сравнению с другими сервисами DNS и DHCP. Во-первых, настройка dnsmasq проста, во-вторых, он нетребователен к ресурсам, в-третьих, он реализует сразу два сервиса, в-четвертых, он гибок и позволяет, например, реализовать обращение по именам к компьютерам в локальной сети, причем сделать это просто и быстро. Именно поэтому он используется как на серверах, так и в embeded-системах, например, в роутерах, и отлично подходит для обеспечения работы небольших сетей.
Установка
Обычно dnsmasq устанавливается на машину, выполняющую роль сетевого шлюза, в небольших сетях обычно именно на нем работают сервисы DHCP и DNS. Поскольку dnsmasq присутствует в репозиториях многих дистрибутивов, его можно установить при помощи менеджера пакетов:
apt-get install dnsmasq
или
yum install dnsmasq
После этого можно приступать к настройке.
Настройка dnsmasq как DHCP
DHCP — это один из базовых сервисов в локальных сетях, благодаря которому отпадает необходимость конфигурировать настройки сети вручную. Он позволяет выдавать автоматически такие настройки как IP-адрес, адрес DNS-сервера и шлюза по-умолчанию, а также резервировать IP-адреса по MAC-адресам.
Для того, чтобы dnsmasq работал как DHCP-сервер, в конфигурационном файле /etc/dnsmasq.conf должны присутствовать следующие строки (они могут уже присутствовать в конфиге, их надо только раскомментировать и исправить):
domain=mydomain.com
Эта строка не обязательна, она нужна в том случае, если вы хотите, чтобы хосты, получающие адреса по DHCP, имели FQDN-имя, то есть полное имя, включающее имя домена.
interface=eth1
Сетевой интерфейс, на котором будет работать сервис. Обычно основной интерфейс eth0 подключен к провайдеру, поэтому его крайне нежелательно указывать в качестве интерфейса для работы сервиса.
dhcp-range=192.168.0.20,192.168.0.100,24h
Интервал выдаваемых адресов и время аренды адресов (в данном случае 24 часа).
dhcp-host=80:15:AA:BB:CC:DD,192.168.0.10
Резервация IP-адреса по MAC-адресу, чтобы устройство с указанным MAC-адресом всегда получало указанный IP-адрес.
dhcp-option=1,255.255.255.0
Задать значение опции DHCP с номером 1. Опция с номером 1 — это маска подсети (netmask).
dhcp-option=3,192.168.0.1
Задать значение опции DHCP с номером 3. Опция с номером 3 — это шлюз по умолчанию (default gateway).
Этих опций в небольшой офисной или домашней сети обычно достаточно.
Список всех опций DHCP можно посмотреть на странице IANA (Internet Assigned Numbers Authority).
После задания настроек надо рестартовать сервис:
service dnsmasq restart
Теперь можно задавать настройки на компьютерах в сети на автоматическое получение адресов по DHCP.
Настройка dnsmasq как DNS
DNS — это второй базовый сервис, без которого в локальных сетях не обойтись, если, конечно, вы не планируете обращаться к компьютерам в локальной сети и Интернете по IP-адресам, в чем я сильно сомневаюсь. Dnsmasq работает как кэширующий DNS-сервер. У него есть одна полезная особенность. Он умеет использовать файл /etc/hosts как источник информации для DNS, что может быть очень полезно. Например, если есть какой-то локальный сервис, с которым работают пользователи в локальной сети, они могут к нему обращаться по имени, а не по адресу, адрес будет запрашиваться у DNS-сервера, который будет возвращать IP-адрес, к которому необходимо обращаться.
Настройка dnsmasq как DNS по сути не отличается от настройки как DHCP, поскольку все настройки хранятся в том же файле — /etc/dnsmasq.conf
Самое первое, что необходимо, — это название домена
domain=mydomain.com
Для определенной подсети можно указать отдельное имя домена:
domain=fin.mydomain.com,192.168.1.0/24
И точно так же можно указать имя домена для интервала адресов:
domain=fin.mydomain.com,192.168.1.10,192.168.1.30
Основная функция DNS-сервера — это преобразование доменных имен в IP-адреса и наоборот, но DNS-серверов даже в локальной сети может быть несколько. Поэтому может потребоваться указать для определенных доменов адреса DNS-серверов, на которые должны отравляться запросы:
server=/remoteoffice.org/192.168.3.10
Аналогично указывается сервер для обратной зоны:
server=/3.168.192.in-addr.arpa/192.168.3.1
В конфигурационном файле также можно указать соответствие имени IP-адресу.
Запись типа A в прямой зоне DNS (сопоставляющей IP-адрес запрошенному имени):
address=/extdomain.net/127.0.0.1
На любое имя хоста *.extdomain.net возвращается адрес 127.0.0.1.
Запись типа CNAME:
cname=sambaserver,smb
Эта запись создает алиас для локального имени sambaserver, чтобы к нему можно было обращаться по более короткому имени smb.
По умолчанию dnsmasq использует файл /etc/hosts для сопоставления имен хостов IP-адресам, но это тоже можно изменить. Если вы не хотите использовать /etc/hosts, вы можете указать это при помощи опции
no-hosts
Если же вы хотите использовать совместно с /etc/hosts еще один файл аналогичной структуры, для этого есть опция
addn-hosts=/path/to/file
Кроме задания собственных записей DNS можно изменять информацию, получаемую от внешних DNS-серверов путем подмены полученного IP-адреса. Для замены одного адреса:
alias=1.2.3.4,5.6.7.8
Если при запросе доменного имени от внешнего DNS-сервера мы получим IP-адрес 1.2.3.4, то мы подменим его на адрес 5.6.7.8. Можно осуществлять подмену целыми подсетями:
alias=1.2.3.0,5.6.7.0,255.255.255.0
Такая запись подменит любой адрес из подсети 1.2.3.0/24 на адрес из подсети 5.6.7.0/24. Если же вам необходимо подменять определенный интервал адресов, то такая возможность тоже есть:
alias=10.0.0.10-10.0.0.40,192.168.0.0,255.255.255.0
Эта запись подменит адреса из интервала 10.0.0.10-10.0.0.40 на адреса 192.168.0.10-192.168.0.40
Для того, чтобы обращения к DNS шли именно на dnsmasq на том же сервере, где он сам работает, необходимо указать первой записью в /etc/resolv.conf следующую строку:
nameserver 127.0.0.1
Сам dnsmasq будет игнорировать эту запись, поскольку предполагает, что эта запись обозначает его собственный сервис, он начинает использование записей с указанием серверов имен со следующей записи, в которой указывается уже внешний DNS-сервер.
Во многих системах /etc/resolv.conf генерируется автоматически при получении адреса от провайдера по DHCP, поэтому если просто записать эту строчку руками, при переподключении основного сетевого интерфейса файл будет перезаписан и эта строка исчезнет. Этого можно избежать, если раскомментировать в файле /etc/dhcp/dhclient.conf (или /etc/dhcp3/dhclient.conf, в зависимости от системы) строчку
prepend domain-name-servers 127.0.0.1;
Тогда даже при получении списка DNS-серверов по DHCP первой строчкой в /etc/resolv.conf будет строчка «nameserver 127.0.0.1».
И еще одна опция, которая может вам пригодиться, если вы хотите использовать свой список DNS-серверов:
resolv-file=/path/to/file
Файл, который указывается в этой опции, должен иметь такую же структуру, как и /etc/resolv.conf. При наличии этой опции будет использован указанный файл вместо /etc/resolv.conf. И таких записей может быть больше одной.
А если необходимо просто указать несколько DNS-серверов, на которые будут форвардиться запросы, это можно сделать при помощи записи нескольких строчек с опцией server:
server=8.8.8.8 server=8.8.4.4 ... server=208.67.222.222 server=208.67.220.220
Вот, в общем, и всё. И не забывайте после изменения настроек рестартовать dnsmasq командой
service dnsmasq reload
Используемые источники:
- https://allomart.ru/ubuntu-uznat-nastroyki-dns/
- https://itmaster.guru/nastrojka-interneta/poleznye-stati/chto-takoe-dns-server-i-kak-ego-nastroit.html
- https://mnorin.com/nastrojka-dnsmasq-dhcp-dns.html