Найти тему

Установка Собственного DNS-Сервера на Локальном ПК

Цель и Необходимость

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

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

1. Установка dnsmasq:

brew install dnsmasq
brew install dnsmasq

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

2. Архивирование исходного файла конфигурации:

sudo mv $(brew --prefix)/etc/dnsmasq.conf $(brew --prefix)/etc/dnsmasq.arch.conf
sudo mv $(brew --prefix)/etc/dnsmasq.conf $(brew --prefix)/etc/dnsmasq.arch.conf

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

3. Просмотр логов dnsmasq (если он не запускается):

log show --predicate 'process == "dnsmasq"' --info
log show --predicate 'process == "dnsmasq"' --info

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

4. Определение локального IP-адреса (например, 192.168.10.1):

brew install iproute2mac
ip addr show | grep "inet "
brew install iproute2mac ip addr show | grep "inet "

Описание: Устанавливает инструмент iproute2mac, а затем использует команду ip addr show для получения IP-адреса локального компьютера. Этот IP-адрес будет использоваться в конфигурации dnsmasq.

5. Добавление записи для локального домена:

echo 'address=/domain.local/192.168.10.1' >> $(brew --prefix)/etc/dnsmasq.conf
echo 'address=/domain.local/192.168.10.1' >> $(brew --prefix)/etc/dnsmasq.conf

Описание: Добавляет запись в конфигурацию dnsmasq, указывая, что домен domain.local должен разрешаться в IP-адрес 192.168.10.1. Это позволяет запросам на этот домен перенаправляться на ваш локальный IP-адрес.

6. Обновление файла hosts:

sudo vi /etc/hosts # Добавьте строки:
127.0.0.1 domain.local subdomain.domain.local
sudo killall -HUP mDNSResponder
sudo vi /etc/hosts # Добавьте строки: 127.0.0.1 domain.local subdomain.domain.local sudo killall -HUP mDNSResponder

Описание: Открывает файл /etc/hosts для редактирования, добавляя записи для domain.local и subdomain.domain.local, чтобы они разрешались в локальный IP-адрес. Команда sudo killall -HUP mDNSResponder обновляет кэш DNS на MacOS.

7. Перезапуск dnsmasq:

sudo brew services restart dnsmasq
sudo brew services restart dnsmasq

8. Обновление настроек DNS:

sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder
sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder

Описание: Очистка кэша DNS и перезапуск mDNSResponder для обновления DNS-кэша на MacOS, чтобы изменения в настройках DNS сразу вступили в силу.

9. Проверка работы DNS-сервера:

nslookup domain.local 192.168.10.1
nslookup domain.local 192.168.10.1

Описание: Выполняет запрос к локальному DNS-серверу, чтобы проверить, правильно ли он разрешает домен domain.local в указанный IP-адрес.

10. Создание DNS-резолвера и проверка настройки:

sudo mkdir -v /etc/resolver sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/domain.local'
sudo mkdir -v /etc/resolver sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/domain.local'

Описание: Создает директорию для резолверов и файл конфигурации для домена domain.local, указывая, что запросы к этому домену должны обрабатываться локальным DNS-сервером (127.0.0.1).

11. Проверка резолвинга домена:

ping -c 1 domain.local
ping -c 1 domain.local

Описание: Проверяет, успешно ли разрешается домен domain.local и доступен ли он для пинга, что подтверждает работу DNS-сервера.

Настройка Docker Compose

1. Указание DNS-сервера в Docker Compose:

services:   my-app:
    dns:
      - 192.168.10.1
    privileged: true # Проверка прав контейнера
services: my-app: dns: - 192.168.10.1 privileged: true # Проверка прав контейнера

Описание: Конфигурирует Docker Compose для использования локального DNS-сервера (IP 192.168.10.1) в контейнере. Это позволяет контейнерам обращаться к вашему локальному DNS-серверу для резолвинга доменов.

2. Проверка доступности DNS-сервера внутри контейнера:

cat /etc/resolv.conf
cat /etc/resolv.conf

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

3. Проверка доступности домена из контейнера:

curl -v https://domain.local
curl -v https://domain.local

Описание: Выполняет HTTP-запрос к домену domain.local из контейнера, чтобы проверить, работает ли DNS-сервер и корректно ли разрешаются домены внутри контейнера.

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

Ваша поддержка имеет значение!

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

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