Настройка DNSmasq для CentOS 7

Обновлено: 21.11.2024

Этот репозиторий предназначен для тех, кто пытается настроить компьютер с CentOS 7 в качестве своего корпоративного (или домашнего) брандмауэра. В этом уроке я использую встроенный брандмауэр вместо iptables, потому что он более удобен, и теперь он нам подойдет. Я также использую dnsmasq для служб DHCP, потому что при необходимости можно реализовать множество других функций. В начале просто расскажу способы и способ настройки. Некоторые пояснения будут в конце документа.

  • CentOS 7
    • Текстовый редактор (nano, vim, mcedit и т. д.)
    • Рубин (
    • Измените или добавьте следующие строки в конфигурацию
    • Измените или добавьте следующие строки в конфигурацию
    • Измените или добавьте следующие строки в конфигурацию

    Редактировать файл конфигурации dnsmasq

    • Измените или добавьте следующие строки в конфигурацию

    Настройте брандмауэр

    Если вам нужен PPPOE

    • Создайте псевдоним для преобразования файлов конфигурации и перезапуска dnsmasq.
    • Добавьте следующую строку в конец файла .bashrc

    Почему firewalld, а не iptables?

    • Потому что RedHat не настроил firewalld для использования iptables. Будущее за Firewalld

    Когда я пытаюсь запустить firewalld, я получаю следующую ошибку: НЕУСТРАНИМАЯ ОШИБКА: Нет брандмауэра IPv4 и IPv6.

    • Может быть два варианта. Во-первых, у вас не установлен iptables. Это маловероятно. Во-вторых, проблема с установленной версией ядра. Запустите обновление yum и перезагрузите машину. Это сработало для меня, хотя я до сих пор не понимаю, в чем проблема, но она появилась у меня на очень старых компьютерах.

    В dnsmasq.conf у вас есть 2 диапазона dhcp. Один с net:known , другой без него. Почему?

    • В моем случае у нас есть 2 сети Wi-Fi с 2 маршрутизаторами. Один для внутренней сети, другой гостевой WiFi. Я настроил маршрутизаторы только как точки доступа, потому что было бы лучше, если бы брандмауэр обрабатывал запросы DHCP, а не их. Таким образом, мне не нужно перенаправлять трафик из сети маршрутизаторов во внутреннюю и т. д. Но настоящая причина проста. Представьте себе гостевой WiFi, к которому вы можете подключиться только в том случае, если ваш MAC-адрес уже есть в системе? Звучит глупо, верно? «Любой» должен иметь возможность подключиться. Параметр net:known указывает диапазону dhcp разрешать подключение только известным устройствам. Все остальные не получат никакого IP-адреса. Для гостевого Wi-Fi я отключил это, чтобы все мои гости могли получить доступ к Интернету.

    Что это за ZONE=external, internal и dmz в файле конфигурации сетевых интерфейсов?

    dnsmasq — это очень легкий и простой DNS-сервер. dnsmasq можно настроить как DNS-сервер и DHCP-сервер. В этой статье я собираюсь показать вам, как настроить DNS-сервер dnsmasq в CentOS 7. Я также расскажу о некоторых распространенных параметрах конфигурации DNS-сервера dnsmasq. Итак, приступим.

    Настройка статического IP-адреса:

    Во-первых, вам необходимо настроить статический IP-адрес на вашем компьютере с CentOS 7. Вы можете сделать это через текстовый пользовательский интерфейс Network Manager nmtui.

    Запустите nmtui с помощью следующей команды:

    Теперь выберите Изменить подключение и нажмите .

    Теперь выберите Автоматически в разделе КОНФИГУРАЦИЯ IPv4 и нажмите .

    Теперь выберите Вручную и нажмите .

    Теперь перейдите к и нажмите .

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

    Этот адрес должен быть IP-адресом вашего компьютера с CentOS 7. Это также будет IP-адрес вашего DNS-сервера после настройки dnsmasq.

    Шлюз — это IP-адрес вашего маршрутизатора.

    Используйте IP-адрес, который вы настраиваете для своего компьютера с CentOS 7, в качестве основного DNS-сервера. Затем я предпочитаю добавить 8.8.8.8 (общедоступный DNS-сервер Google) в качестве дополнительного DNS-сервера.

    Домен поиска должен быть вашим собственным доменным именем.

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

    Затем перейдите к и нажмите .

    Наконец, нажмите 2 раза и перезагрузите компьютер с помощью следующей команды:

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

    Установка dnsmasq:

    Dnsmasq доступен в официальном репозитории пакетов CentOS 7. Поэтому вы можете легко установить его с помощью диспетчера пакетов YUM.

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

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

    Теперь нажмите y, а затем нажмите, чтобы продолжить.

    Нажмите y, а затем нажмите, чтобы также принять ключ GPG репозитория CentOS 7.

    Должен быть установлен dnsmasq.

    Настройка dnsmasq:

    Файл конфигурации dnsmasq по умолчанию — /etc/dnsmasq.conf. Этот файл содержит все поддерживаемые параметры dnsmasq и хорошо задокументирован. Но работать с ним очень долго и тяжело. Итак, я собираюсь переименовать этот файл в /etc/dnsmasq.conf.bk и создать новый файл конфигурации /etc/dnsmasq.conf. Таким образом, всякий раз, когда мне нужна помощь, я могу просто просмотреть файл /etc/dnsmasq.con.bk и указать необходимые параметры в файле /etc/dnsmasq.conf.

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

    Теперь создайте новый файл конфигурации с помощью следующей команды:

    Теперь нажмите i, чтобы перейти в режим INSERT vi, и введите следующие строки. Затем нажмите . Наконец, введите :wq! и нажмите, чтобы сохранить файл.

    Здесь порт используется для установки порта (53 в этой статье), который будет прослушивать dnsmasq.

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

    Теперь проверьте, правильно ли работает сервер dnsmasq, с помощью следующей команды:

    Он работает правильно.

    Добавление новых записей DNS в dnsmasq:

    Теперь вы можете очень легко добавлять новые записи DNS в dnsmasq с помощью файла /etc/hosts.

    Для этого откройте файл /etc/hosts с помощью vi следующим образом:

    Теперь введите следующие строки в конце файла и сохраните файл.

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

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

    Тестирование DNS-сервера:

    Теперь вы можете использовать dig, чтобы проверить, работает ли DNS-сервер.

    ПРИМЕЧАНИЕ. Команда dig по умолчанию недоступна в CentOS 7. Команда dig включена в пакет bind-utils. Вы можете установить его следующим образом:

    Как видите, печатается IP-адрес DNS-имени. Значит, работает.

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

    Другие параметры dnsmasq:

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

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

    Например, чтобы установить размер кэша равным 1000, используйте

    • addn-hosts — ранее я использовал файл /etc/hosts по умолчанию для добавления новых записей DNS. Но если вы хотите использовать разные файлы hosts для разных доменных имен, этот вариант вам пригодится.
    • resolv-file — по умолчанию dnsmasq использует файл /etc/resolv.conf, чтобы узнать, какие DNS-серверы использовать для кэширования имен. Но если вы хотите, чтобы dnsmasq получал эту информацию из какого-либо другого файла, просто создайте файл, добавьте DNS-серверы в этот файл и, наконец, добавьте параметр resolv-file в файл конфигурации dnsmasq /etc/dnsmasq.conf.

    Например, чтобы использовать файл /etc/resolv2.conf в качестве файла разрешения dnsmasq,

    создайте файл следующим образом:

    Теперь добавьте туда свои DNS-серверы в следующем формате. Не забудьте поставить самые приоритетные из них выше других.

    Затем добавьте следующую строку в файл /etc/dnsmasq.conf.

    Есть еще много вариантов dnsmasq. Я рекомендую вам проверить конфигурацию dnsmasq по умолчанию, которую вы ранее переименовали в /etc/dnsmasq.conf.bk, для получения дополнительной информации.

    Итак, вот как настроить DNS-сервер dnsmasq в CentOS 7. Спасибо, что прочитали эту статью.

    Dnsmasq — это легкий и простой в настройке сервер пересылки DNS, предназначенный для предоставления услуг DNS (и, при необходимости, DHCP и TFTP) в небольшой сети. Он может обслуживать имена локальных машин, которых нет в глобальной DNS. Эта статья была написана при использовании CentOS 7, поэтому можно с уверенностью сказать, что она также полностью охватывает RHEL 7, Fedora и в целом все семейство операционных систем Red Hat и, возможно, Novell SLES и OpenSUSE.

    Чтобы настроить сервер кэширования DNS, необходимо выполнить шаги, перечисленные ниже.

    Установить RPM

    В системе RHEL у вас должна быть активная подписка на RHN, или вы можете настроить локальный автономный репозиторий, с помощью которого менеджер пакетов "yum" сможет установить предоставленный пакет rpm и его зависимости.

    Измените или добавьте указанное ниже содержимое в файл конфигурации сервера DNS-кэширования.

    В этой конфигурации предполагается, что в системе нет пакета libvirtd, поскольку libvirtd использует dnsmasq для своих виртуальных гостей.

    Здесь
    cache-size — установите размер кэша. По умолчанию сохраняется 150 имен хостов. Установка размера кэша на 0 отключает эту функцию.
    resolv-file — здесь мы используем отдельный файл, в котором кэширующий DNS-сервер считывает IP-адреса родительских серверов имен.
    listen-address — привязка только к указанному адресу

    Вышестоящие серверы имен

    Мы использовали отдельный файл для хранения IP-адресов родительских серверов имен; то есть /etc/resolv.dnsmasq . Мы будем использовать тот же синтаксис, что и в /etc/resolv.conf, для добавления IP-адресов серверов имен. Посмотрите пример вывода ниже: Здесь 10.0.2.32 — это IP-адрес моего именованного DNS-сервера chroot .

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

    Изменить разрешение имени

    Для имен хостов, которых нет в /etc/hosts, система по-прежнему использует сервер имен внутри /etc/resolv.conf для разрешения имен.

    Чтобы начать использовать сервер кэширования DNS, измените /etc/resolv.conf, чтобы все DNS-запросы отправлялись на локальный петлевой интерфейс. Если файл содержит несколько записей серверов имен, удалите их, чтобы осталась только одна запись.

    Если вы записываете информацию DNS в основной файл сетевого интерфейса, вам также необходимо обновить параметры DNS в сетевом файле. При некоторых обстоятельствах (из-за DHCP или ваших файлов конфигурации сети) строки сервера имен в /etc/resolv.conf могут быть обновлены, заменив ссылку на петлевой интерфейс.

    Запуск службы DNSMASQ

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

    Проверьте состояние порта 53 с помощью netstat:

    Проверка сервера кэширования DNS

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

    Установите пакет tcpdump на терминал (термин A)

    Откройте другой сеанс терминала (термин B) и выполните следующую команду.

    Выполните следующую команду дважды на терминале (термин A) и убедитесь, что tcpdump показывает 1 DNS-запрос к вашему верхнему DNS-серверу в термине B

    С некоторыми веб-сайтами или доменными именами связано несколько IP-адресов. По этой и другим причинам tcpdump может отображать несколько запросов.

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

    Наконец, я надеюсь, что шаги из статьи по настройке сервера кэширования DNS на узле CentOS / RHEL 7 Linux были полезны. Итак, дайте мне знать ваши предложения и отзывы, используя раздел комментариев.

    Похожие записи

    Не нашли то, что искали? Выполните быстрый поиск в GoLinuxCloud

    Если мои статьи о GoLinuxCloud помогли вам, пожалуйста, купите мне кофе в знак признательности.

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

    Сервер DHCP (Dynamic Host Configuration Protocol) динамически назначает IP-адреса и другие параметры конфигурации сети каждому устройству в сети.

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

    Что такое DNSMASQ

    dnsmasq (DNS masquerade) – это легкий и простой в настройке сервер пересылки DNS, предназначенный для предоставления служб DNS (и, при необходимости, DHCP и TFTP) в небольшой сети. Он может обслуживать имена локальных компьютеров, которых нет в глобальной DNS.

    1. Установите dnsmasq в CentOS / RHEL Linux

    Если вы еще не установили dnsmasq в CentOS/RHEL Linux, вы можете легко установить его, поскольку он доступен в репозитории по умолчанию, с помощью следующей команды:

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

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

    Результат должен быть примерно таким:

    2. Настроить сервер dnsmasq

    Сервер dnsmasq можно настроить с помощью файла /etc/dnsmasq.conf. Поскольку DNS включен по умолчанию, мы рекомендуем создать резервную копию файла .conf, прежде чем вносить какие-либо изменения:

    Теперь откройте файл /etc/dnsmasq.conf с помощью предпочитаемого вами текстового редактора (мы используем «nano»)

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

    Давайте лучше разберемся с настройками, которые мы ввели:

    адрес прослушивания

    Эта опция используется для установки IP-адреса, который будет прослушиваться dnsmasq. В этом руководстве мы хотим, чтобы наш сервер CentOS/RHEL прослушивал запросы DHCP и DNS в локальной сети, поэтому мы собираемся установить адрес прослушивания на его IP-адреса в локальной сети (включая локальный хост 127.0.0.1).

    ПРИМЕЧАНИЕ. IP-адрес сервера должен быть статическим. Чтобы узнать, как настроить статический IP-адрес, обратитесь к следующему руководству: «Настройка статического IP-адреса в CentOS / RHEL»

    интерфейс

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

    домен

    Эта опция используется для установки домена. Это означает, что DHCP-клиенты будут иметь полные доменные имена (полные доменные имена), в то время как установленный домен будет одним и тем же, а также задает параметр DHCP домена для всех клиентов.

    адрес

    Используя параметр адреса, вы можете принудительно указать для своего локального домена IP-адрес(а)

    серверы имен

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

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

    3. Настройка dnsmasq с файлом resolv.conf

    В этом коротком шаге показано, как установить адрес локального хоста в качестве единственного сервера имен в файле resolv.conf. Это предназначено для отправки всех запросов в dnsmasq.

    Откройте файл resolv.conf:

    Затем измените его следующим образом:

    Чтобы предотвратить перезапись наших изменений локальным демоном (NetworkManager), мы собираемся установить неизменяемый атрибут для нашего файла с помощью команды chattr следующим образом:

    Мы также можем быстро проверить, все ли в порядке с помощью команды lsattr:

    4. Определение хостов и имен DNS и тестирование локального DNS

    Все хосты и имена DNS считываются dnsmasq из файла hosts, поэтому нам нужно изменить файл /etc/hosts следующим образом:

    В конце концов, вы можете добавить некоторые другие определенные адреса, такие как MAAS, Nagios, …

    Теперь перезапустите dnsmasq, чтобы применить вышеуказанные изменения:

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

    sudo firewall-cmd --add -service=dns --permanent
    sudo firewall-cmd --add-service=dhcp --permanent
    sudo firewall-cmd --reload

    Чтобы проверить, все ли работает нормально, мы можем использовать bind-utils:

    Если они не установлены в вашей системе, просто выполните команду:

    sudo yum install bind-utils

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