dnsmasq поддерживает кэш DNS и DNS, DHCP, tftp и другие службы. В этой статье dnsmasq будет использоваться в сочетании с внутренними белыми списками для анализа внутренней и внешней разгрузки, получения узла с оптимальным разрешением и повышения эффективности доступа.
Общая структура выглядит следующим образом:
dnsmasq в основном доступен в собственном репозитории программного обеспечения каждого дистрибутива. Вы можете установить его с помощью соответствующей команды установки управления пакетами:
Дистрибутив | Команда установки |
---|---|
CentOS/Redhat | yum install -y dnsmasq |
Debian | apt-get install -y dnsmasq |
Archlinux | pacman -Sy dnsmasq/yay -y dnsmasq |
приезжатьОфициальная страница загрузки dnsmasqЗагрузите последнюю версию,По состоянию на ноябрь 2022 г.,Последняя версия 2.87.,Скачать на локальный:
wget https://thekelleys.org.uk/dnsmasq/dnsmasq-2.87.tar.gz
Разархивируйте:
tar xvf dnsmasq-2.87.tar.gz
Скомпилируйте и установите:
cd dnsmasq-2.87
make
make install
Найти первым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
。
параметр | иллюстрировать |
---|---|
| Определяет, где dnsmasq получает адрес вышестоящего DNS-сервера. По умолчанию он получает адрес из /etc/resolv.conf. |
| Указывает, что разрешение DNS выполняется строго сверху вниз в порядке, указанном в файле resolv-файла, до тех пор, пока первое разрешение не будет успешным. |
| Определите адрес, который отслеживает dnsmasq. По умолчанию отслеживаются все сетевые карты этого компьютера. |
| Включите разрешение имен всех доменов, то есть настройте разрешение записи, например: адрес=/long.com/192.168.115.10. Все доменные имена при доступе к long.com будут разрешены в 192.168.115.10. |
| Для любого доменного имени, которое разрешено к этому IP-адресу, будет получен ответ NXDOMAIN, чтобы аннулировать разрешение. Его можно указать несколько раз. Обычно он используется для предотвращения доступа к несуществующим доменным именам, чтобы они не перешли на рекламный сайт оператора. . |
| Укажите, какой DNS-сервер использовать для разрешения. Для разрешения разных веб-сайтов могут использоваться разные доменные имена. Например: server=/google.com/8.8.8.8 #Указывает, что для служб Google используется разрешение DNS Google. |
| Запросите напрямую восходящий DNS, игнорируя файл хостов. |
| Не выполняйте восходящие DNS-запросы. |
| Установите количество кэшированных доменных имен, значение по умолчанию — 150, а жесткое ограничение — 1000. |
| Записывайте запросы запросов и укажите ведение журнала с помощью средства журнала. |
Основываясь на описании параметров в № 2, я могу настроить следующие параметры в dnsmasq.conf:
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анализировать:
nameserver 8.8.8.8
nameserver 8.8.4.4
Здесь вам нужно определить только внешний DNS, а внутренний DNS будет определен в последующей конфигурации раздачи.
Следует отметить, что файл resolv.conf может определять до 3 DNS-серверов:
поэтому,Если вы хотите, чтобы dnsmasq настроил более трех вышестоящих DNS-серверов,тогда ты сможешьdnsmasq.conf
документпроходитьпараметрresolv-file=xxx.conf
Пользовательское чтениедокумент Вот и все。
в то же время,Если установленоresolv.conf
,Это также повлияет на запросы от машины, на которой работает dnsmasq.,дляdns queryхочу пойтиresolv.conf
определено выше по течениюDNSНаходить,Итак, если вы хотите, чтобы сам сервер использовал dnsmasq,тогда ты сможешьresolv.conf
документгенерал-лейтенантDNSУстановить локальный адрес:
nameserver ::1
nameserver 127.0.0.1
Затем определите восходящий DNS в dnsmasq.conf, например:
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
параметр Чтобы настроить обозначениедокумент。
Можно использовать после настройкиdnsmasq --test
Проверьте синтаксис。
использоватьdnsmasq-china-listВ качестве белого списка доменных имен материкового происхождения.,Определите восходящий DNS, используемый внутренними доменными именами.,Если совпадений нет, будет использоваться восходящий DNS, определенный dnsmasq.,Идеально используйте механизм приоритета синтаксического анализа.
conf | иллюстрировать |
---|---|
accelerated-domains.china.conf | Внутреннее ускорение |
google.china.conf | Ускорение области Google |
apple.china.conf | Ускорение домена Apple |
bogus-nxdomain.china.conf | Защита от угона |
Клонируйте проект локально:
cd /opt
git clone https://github.com/felixonmars/dnsmasq-china-list
Вы можете напрямую объединить вышеперечисленноедокументотdnsmasq-china-listскопировать в каталогприезжатьdnsmasq.dв каталоге,Но учитывая, что файлы этого проекта регулярно обновляются и поддерживаются,Поэтому метод гиперссылок более удобен.,Его нужно будет выполнять только регулярно в будущем.git pull
Обновить проектдокумент Вот и все,Нет необходимости повторно копировать.
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
Необязательный. Как видно из предыдущего шага, все внутренние доменные имена по умолчанию указывают DNS 114 в качестве восходящего.,Вы можете заменить его на LDNS, назначенный вам вашим оператором.,то есть локальный экспортный DNS,LDNSможет пройтиЗапросить этот сайт。
Предполагая, что LDNS — 113.87.49.47, команду замены можно записать следующим образом:
sed -i 's|114.114.114.114|113.87.49.47|g' accelerated-domains.china.conf
Необязательный. Регулярные обновления предназначены только для того, чтобы список был более полным и стабильным, и его можно было реализовать вместе с запланированными задачами crond.
Логика скрипта очень проста:
#!/bin/bash
cd /opt/dnsmasq-china-list
git pull
systemctl restart dnsmasq.service
Затем настройте запланированное задание через crond и обновляйте его каждые 6 часов:
0 */6 * * * /bin/bash /server/scripts/update-china-list.sh
После передачи вышеуказанной конфигурации давайте, наконец, проверим:
По журналу запросов видно, что анализ выполняется по заранее заданному треку, внутри страны и за рубежом используются разные восходящие DNS-запросы, а копия кэшируется локально.
Из ситуации с пакетами видно, что первый запрос имени чужого домена часто занимает много времени, поскольку расстояние физического канала велико и предполагает трансграничную передачу. После того, как последующие запросы кэшируют результаты локально, нет необходимости запрашивать. восходящий DNS. Непосредственное обращение к кешу возвращает запись A, которую также можно увидеть интуитивно, сравнив команду dig до и после.
Поставляется с PDF-версией:
Подробное объяснение высокоуровневого анализа конфигурации DNSmasq: анализ разделения внутренних и иностранных доменных имен. Подробное объяснение высокоуровневого анализа конфигурации DNSmasq: анализ разделения внутренних и иностранных доменных имена.-яркая цветовая версия