Подробное объяснение высокоуровневой конфигурации dnsmasq — анализ разделения внутренних и иностранных доменных имен
Подробное объяснение высокоуровневой конфигурации dnsmasq — анализ разделения внутренних и иностранных доменных имен

1. Предисловие

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

Общая структура выглядит следующим образом:

Архитектура анализа разгрузки
Архитектура анализа разгрузки

2. Установка

1. Установите из репозитория ПО.

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

Дистрибутив

Команда установки

CentOS/Redhat

yum install -y dnsmasq

Debian

apt-get install -y dnsmasq

Archlinux

pacman -Sy dnsmasq/yay -y dnsmasq

2. Скомпилируйте и установите

приезжатьОфициальная страница загрузки dnsmasqЗагрузите последнюю версию,По состоянию на ноябрь 2022 г.,Последняя версия 2.87.,Скачать на локальный:

Язык кода:shell
копировать
wget https://thekelleys.org.uk/dnsmasq/dnsmasq-2.87.tar.gz

Разархивируйте:

Язык кода:shell
копировать
tar xvf dnsmasq-2.87.tar.gz

Скомпилируйте и установите:

Язык кода:shell
копировать
cd dnsmasq-2.87
make
make install

3. Процесс анализа и описание параметров.

1. Процесс запроса и приоритет

Найти первымhostsдокумент,Искать еще раз/etc/dnsmasq.d/*.conf,Найти позже/etc/dnsmasq.conf

Стоит ли искатьhosts,Еще можно пройтиno-hostsопределить,no-hostsУказывает на отсутствие поискаhostsдокумент。

поэтому,Если вы хотите, чтобы dnsmasq сам предоставлял услуги разрешения,И нет необходимости обращаться к восходящему DNS-запросу,Или вы хотите выполнить разрешение DNS для любого доменного имени.,Вы можете записывать записи в любой из вышеперечисленных файлов,confГрамматическая форма:address=/test.com/192.168.1.1,hostsтогда следуйhostsдокументсинтаксис:192.168.1.1 test.com

2. Описание общих параметров

параметр

иллюстрировать

resolv-file

Определяет, где dnsmasq получает адрес вышестоящего DNS-сервера. По умолчанию он получает адрес из /etc/resolv.conf.

strict-order

Указывает, что разрешение DNS выполняется строго сверху вниз в порядке, указанном в файле resolv-файла, до тех пор, пока первое разрешение не будет успешным.

listen-address

Определите адрес, который отслеживает dnsmasq. По умолчанию отслеживаются все сетевые карты этого компьютера.

address

Включите разрешение имен всех доменов, то есть настройте разрешение записи, например: адрес=/long.com/192.168.115.10. Все доменные имена при доступе к long.com будут разрешены в 192.168.115.10.

bogus-nxdomain

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

server

Укажите, какой DNS-сервер использовать для разрешения. Для разрешения разных веб-сайтов могут использоваться разные доменные имена. Например: server=/google.com/8.8.8.8 #Указывает, что для служб Google используется разрешение DNS Google.

no-hosts

Запросите напрямую восходящий DNS, игнорируя файл хостов.

no-reslov

Не выполняйте восходящие DNS-запросы.

cache-size

Установите количество кэшированных доменных имен, значение по умолчанию — 150, а жесткое ограничение — 1000.

log-queries

Записывайте запросы запросов и укажите ведение журнала с помощью средства журнала.

3. Конфигурация параметров

(1)Базовая конфигурация

Основываясь на описании параметров в № 2, я могу настроить следующие параметры в dnsmasq.conf:

Язык кода:shell
копировать
log-queries
log-facility=/var/log/dnsmasq.log
no-hosts
bogus-nxdomain=119.29.29.29
cache-size=1000
port=53

и в/etc/resolv.confОпределить восходящий потокDNSанализировать:

Язык кода:shell
копировать
nameserver 8.8.8.8
nameserver 8.8.4.4

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

Следует отметить, что файл resolv.conf может определять до 3 DNS-серверов:

поэтому,Если вы хотите, чтобы dnsmasq настроил более трех вышестоящих DNS-серверов,тогда ты сможешьdnsmasq.confдокументпроходитьпараметрresolv-file=xxx.confПользовательское чтениедокумент Вот и все。

(2) Развернуть конфигурацию

в то же время,Если установленоresolv.conf,Это также повлияет на запросы от машины, на которой работает dnsmasq.,дляdns queryхочу пойтиresolv.confопределено выше по течениюDNSНаходить,Итак, если вы хотите, чтобы сам сервер использовал dnsmasq,тогда ты сможешьresolv.confдокументгенерал-лейтенантDNSУстановить локальный адрес:

Язык кода:shell
копировать
nameserver ::1
nameserver 127.0.0.1

Затем определите восходящий DNS в dnsmasq.conf, например:

Язык кода:shell
копировать
all-servers
server=8.8.8.8
server=8.8.4.4
server=1.1.1.1

all-serversзначит из следующегоdnsв списке Находить,Выберите в качестве результата запроса тот, у которого самый быстрый ответ, и верните его.,Если это не порт 53,тогда вы можете добавить#portнастроить порт,нравитьсяserver=8.8.8.8#25533

Сказал раньше,Если вы не хотите влиять на конфигурацию этой машины,тогда ты сможешь пройтиresolv-fileпараметр Чтобы настроить обозначениедокумент。

4. Проверьте грамматику

Можно использовать после настройкиdnsmasq --testПроверьте синтаксис。

4. Конфигурация распространения внутри страны и за рубежом.

использоватьdnsmasq-china-listВ качестве белого списка доменных имен материкового происхождения.,Определите восходящий DNS, используемый внутренними доменными именами.,Если совпадений нет, будет использоваться восходящий DNS, определенный dnsmasq.,Идеально используйте механизм приоритета синтаксического анализа.

1.conf описание файла

conf

иллюстрировать

accelerated-domains.china.conf

Внутреннее ускорение

google.china.conf

Ускорение области Google

apple.china.conf

Ускорение домена Apple

bogus-nxdomain.china.conf

Защита от угона

2. Клонировать проект

Клонируйте проект локально:

Язык кода:shell
копировать
cd /opt
git clone https://github.com/felixonmars/dnsmasq-china-list

3. Гиперссылка на каталог dnsmasq.d.

Вы можете напрямую объединить вышеперечисленноедокументотdnsmasq-china-listскопировать в каталогприезжатьdnsmasq.dв каталоге,Но учитывая, что файлы этого проекта регулярно обновляются и поддерживаются,Поэтому метод гиперссылок более удобен.,Его нужно будет выполнять только регулярно в будущем.git pullОбновить проектдокумент Вот и все,Нет необходимости повторно копировать.

Язык кода:shell
копировать
ln -sf /opt/dnsmasq-china-list/accelerated-domains.china.conf  /etc/dnsmasq.d/accelerated-domains.china.conf 
ln -sf /opt/dnsmasq-china-list/google.china.conf /etc/dnsmasq.d/google.china.conf
ln -sf /opt/dnsmasq-china-list/apple.china.conf /etc/dnsmasq.d/apple.china.conf
ln -sf /opt/dnsmasq-china-list/bogus-nxdomain.china.conf /etc/dnsmasq.d/bogus-nxdomain.china.conf 

4. Замените ЛДНС

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

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

Язык кода:shell
копировать
sed -i 's|114.114.114.114|113.87.49.47|g' accelerated-domains.china.conf

5. Регулярно обновляйте dnsmasq-china-list.

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

Логика скрипта очень проста:

Язык кода:shell
копировать
#!/bin/bash
cd /opt/dnsmasq-china-list
git pull
systemctl restart dnsmasq.service

Затем настройте запланированное задание через crond и обновляйте его каждые 6 часов:

Язык кода:shell
копировать
0 */6 * * * /bin/bash /server/scripts/update-china-list.sh

5. Проверка

1. Проверка журнала

После передачи вышеуказанной конфигурации давайте, наконец, проверим:

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

2. Проверка захвата пакетов

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

Поставляется с PDF-версией:

Подробное объяснение высокоуровневого анализа конфигурации DNSmasq: анализ разделения внутренних и иностранных доменных имен. Подробное объяснение высокоуровневого анализа конфигурации DNSmasq: анализ разделения внутренних и иностранных доменных имена.-яркая цветовая версия

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.