Настройка DNS-сервера Openwrt

Обновлено: 03.07.2024

Из-за Covid-19 большинство людей работают дома. В настоящее время реклама потребляет большую часть вашего трафика, и это небезопасно для людей, не связанных с ИТ, особенно для ваших маленьких детей. Pi-hole - это то, что вам нужно для этой задачи.

Что такое Pi-hole

Pi-hole – это приложение для блокировки рекламы и интернет-трекеров на уровне сети Linux, которое действует как сливная дыра DNS и предназначено для использования в частной сети. Википедия.

Настройка pi-hole

Мой Pi-hole настроен в контейнере Docker внутри виртуальной машины ClearLinux, на которой также работает Nginx Proxy Manager. Поскольку вы можете указать свой домен на свой домашний IP-адрес и если вы хотите открыть сеть Pi-hole, вы также можете настроить VIRTUAL_HOST, указывающий на ваш домен. Вы можете сделать то же самое с Rasberry Pi.

Чтобы запустить этот докер, мне нужно остановить службу с разрешением systemd, работающую внутри ClearLinux, которая занимала порт 53 (порт DNS), поэтому мне нужно отключить эту службу и изменить локальный сервер DNS на 127.0.0.1. При этом все DNS-запросы внутри моего компьютера с Linux будут отправляться на 127.0.0.1:53

Затем вы можете поднять Pi-hole:

В соответствии с рекомендациями pi-hole, пароль администратора генерируется случайным образом, вы можете проверить журнал Pi-hole, чтобы получить пароль администратора:

Настройте маршрутизатор OpenWrt

Поскольку мы управляли собственной прошивкой маршрутизатора с помощью OpenWrt, вам необходимо указать маршрутизатору отправлять клиенту IP-адрес Pi-hole 192.168.11.20 в качестве DNS-сервера.

Перейдите в Интерфейсы >> Локальная сеть >> DHCP-сервер >> Дополнительные настройки, внутри параметров DHCP введите значение: 6,192.168.11.20 .


альтернативный способ, вы можете использовать инструмент uci:

Затем вы можете проверить со стороны клиента, что он может получить DNS-сервер как 192.168.11.20 .

Теперь я могу наслаждаться тем, что Pi-hole блокирует рекламу для всех моих домашних клиентов, а веб-браузер работает намного быстрее, чем когда-либо. Если вы хотите воспользоваться преимуществами этого DNS, вы можете открыть порт 53 для своего pi-hole и настроить удаленные устройства на использование вашего IP-адреса в глобальной сети.

Возможные типы разделов файла конфигурации dhcp определены ниже. Не все типы могут отображаться в файле, и большинство из них необходимы только для специальных конфигураций. Наиболее распространенными являются Общие параметры, Пулы DHCP и Статическая аренда.

Общие параметры

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

Это настройки по умолчанию для общих параметров:

local и domain позволяют dnsmasq обслуживать записи в /etc/hosts , а также имена клиентов DHCP, если они настроены в домене lan.

domainneeded , boguspriv , localise_queries и expandhosts гарантируют, что запросы на локальные имена хостов не перенаправляются на вышестоящие DNS-серверы.

resolvfile указывает dnsmasq использовать этот файл для поиска вышестоящих серверов имен; он создается клиентом DHCP или PPP в глобальной сети.

Все варианты

Пулы DHCP

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

Минимальный пример раздела dhcp приведен ниже:

100 — это смещение от сетевого адреса, в конфигурации по умолчанию это означало бы начало аренды адресов с 192.168.1.100

150 — это максимальное количество адресов, которые можно арендовать. В конфигурации по умолчанию это означает аренду адресов до 192.168.1.249

Ниже приведен список допустимых параметров для разделов DHCP.

< tr > < td >Срок жизни маршрутизатора по умолчанию в сообщении RA будет установлен, если присутствует маршрут по умолчанию и глобальный адрес IPv6 (0) или если маршрут по умолчанию присутствует, но отсутствует глобальный адрес IPv6 (1) или ни одно из двух условий (2) < tr >
Имя Тип Обязательный По умолчанию Описание
dhcp_option список строк нет (нет) Идентификатор dhcp_option здесь должен быть написан с подчеркиванием. OpenWrt преобразует это в --dhcp-option с дефисом, как в конечном итоге используется dnsmasq. Для этого идентификатора сети можно указать несколько значений параметров с пробелом между ними и общей строкой между "". Например. «26,1470» или «option:mtu, 1470», которые могут назначать MTU для каждого DHCP. Ваш клиент должен принять MTU по DHCP, чтобы это работало. Или «3,192.168.1.1 6,192.168.1.1», чтобы выдать адреса шлюза и DNS-сервера. Список опций можно найти здесь здесь. Список символических имен опций, которые распознает dnsmasq, можно найти, запустив dnsmasq --help dhcp .
dhcp_option_force список строк нет (нет) Точно так же, как dhcp_option (обратите внимание на символы подчеркивания), но он будет преобразован в --dhcp-option-force , что означает, что параметр DHCP будет отправлен независимо от того, запросил ли его клиент.
dhcp_option_force на магистрали, но не на 17.01.0
dynamicdhcp boolean no 1 Динамическое выделение адресов клиентов, если установлено значение 0, обслуживаются только клиенты, присутствующие в эфирных файлах
force boolean< /td> no 0 Принудительно обслуживает DHCP на указанном интерфейсе, даже если в том же сегменте сети обнаружен другой DHCP-сервер
ignore boolean no 0 Указывает, должен ли dnsmasq игнорировать это пул, если установлено значение 1
dhcpv4 string no (none)< /em> Указывает, должен ли сервер DHCPv4 быть включен ( server ) или отключен ( disabled )
dhcpv6 string no (none) Указывает, должен ли сервер DHCPv6 быть включен ( server ), ретранслирован ( relay ) или отключен ( disabled )
ра string no (none) Указывает, должны ли объявления маршрутизатора быть включены (server), ретранслированы (relay ) или отключено ( disabled )
ra_default integer no 0
ra_management integer no 1 Режим управления RA: нет M- Флаг, но A-Flag (0), оба флага M и A (1), флаг M, но не флаг A (2)
ra_offlink bool no 0 Объявлять префиксы как offlink ( 1 ) в RA
ra_preference string no medium Объявлять маршруты с высоким (high), средним (medium) или низким (low) приоритетом в RAs< /td>
ra_mininterval integer no 200 Минимальный временной интервал между RA (в секундах)
ra_maxinterval integer no 600 Максимальный временной интервал между RA (в секундах)
ra_lifetime целое число нет 1800 Объявленный срок службы маршрутизатора (в секундах)< /td>
ra_useleasetime bool no 0 Ограничение предпочтительного и действительного время жизни префиксов в сообщениях RA для настроенного времени аренды DHCP
ra_hoplimit integer no 0 Объявленное текущее ограничение переходов (0-255)
ra_reachabletime integer no< /td> 0 Объявленное достижимое время (в миллисекундах) (0-3600000)
ra_retranstime integer< /td> no 0 Объявленное время повторной передачи NS (в миллисекундах) (0-6 0000)
ra_mtu integer no (нет) Максимальный объявленный MTU
ra_dns boolean no 1< /td> Объявлять конфигурацию DNS в сообщениях RA (RFC8106)
ndp string no (none) Указывает, следует ли ретранслировать NDP ( relay ) или отключить ( disabled )
ndproxy_routing< /td> bool no 1 Узнать маршруты из NDP
ndproxy_slave< /td> bool no 0 Игнорировать соседние сообщения на подчиненных ( 1 ) интерфейсах
master boolean no 0 Указывает, является ли DHCPv6, RA и NDP в режиме ретрансляции ведущим интерфейсом или нет.
интерфейс имя логического интерфейса да (нет)< /em> Определяет интерфейс, связанный с h этот пул адресов DHCP; должен быть одним из интерфейсов, определенных в /etc/config/network .
leasetime string yes 12h Указывает время аренды адресов, выдаваемых клиентам, например 12h или 30m
limit integer yes 150 Указывает размер пула адресов (например, при start=100, limit=150 максимальный адрес будет .249)
networkid string no (значение интерфейса ) Функции dhcp, определенные в разделе dhcp, ограничены указанным здесь интерфейсом через его идентификатор сети.В случае, если он опущен, система пытается узнать сетевой идентификатор через настройку интерфейса в этом разделе dhcp посредством консультации с /etc/config/network. Некоторые идентификаторы назначаются динамически, не предоставляются сетью, но все же могут быть установлены здесь.
start integer yes 100 Указывает смещение от сетевого адреса базового интерфейса для расчета минимального адреса, который может быть выделен клиентам. Для охвата подсетей может быть больше 255.
экземпляр экземпляр dnsmasq no < em>(none) Экземпляр Dnsmasq, к которому привязан раздел dhcp; если не указано, раздел действителен для всех экземпляров dnsmasq.
tag список имен тегов no (none) Список тегов, которые dnsmasq должен сопоставить для использования с --dhcp-range .

Интерфейс — это имя логического интерфейса/сети, т. е. lan , wan , wifi и т. д. (имена разделов в /etc/config/network), а НЕ имя устройства уровня 3, например eth0 , eth1 , wlan0 и т. д. (идентификаторы ifname в /etc/config/network).

networkid — это имя устройства уровня 3, т. е. eth0 , eth1 , wlan0 и т. д., а не имя сети (lan , wan , wifi и т. д.).

Это отличается от ifname и network, которые используются в /etc/config/network и /etc/config/wireless, так что проверьте еще раз!

Статическая аренда

Имя Тип Обязательный По умолчанию Описание
ip строка нет (нет) IP-адрес, который будет использоваться для этого хоста, или игнорировать, чтобы игнорировать любой DHCP-запрос от этого хоста
mac string no (none) Аппаратные адреса этого хоста, разделенные пробелами.
hostid string no (none) Идентификатор интерфейса IPv6 ( суффикс адреса) в виде шестнадцатеричного числа (макс. 8 символов)
duid string no (нет) DHCPv6-DUID этого хоста.
name string no (none) Необязательное имя хоста для назначения.
tag string no (none) Установить данный тег для соответствующих хостов .
match_tag список строк нет (нет) Если указано, раздел будет применяться только к запросам, имеющим все теги; имя входящего интерфейса всегда назначается автоматически, другие теги могут быть добавлены через vendorclass/userclass/и т.д. разделы
dns boolean no 0 Добавить статический форвард и обратные записи DNS для этого хоста.
broadcast boolean no 0 Принудительный широковещательный ответ DHCP.
leasetime string no (нет) Время аренды, зависящее от хоста, например 2м, 3ч, 5д. Примечание: добавлено r48801 в магистраль
экземпляр экземпляр dnsmasq no ( none) Экземпляр Dnsmasq, к которому привязан раздел хоста; если не указано, раздел действителен для всех экземпляров dnsmasq.

Примечание: должен быть указан один из mac (можно использовать подстановочные знаки), duid или имя.

Вы также можете включить параметр readethers в разделе dnsmasq и добавить записи в файл /etc/ethers.

Параметры загрузки

Параметры конфигурации в этом разделе используются для создания параметра -M для dnsmasq.

*Примечание*: в настоящее время odhcp не поддерживает спецификацию корневого пути. Если вам нужна эта функция, отключите odhcpd и используйте вместо нее dnsmasq.

< td >(none)
Имя Тип Обязательный По умолчанию Описание
dhcp_option список строк нет (нет) Дополнительные параметры, которые необходимо добавить для этого идентификатора сети. Если вы укажете это, вам также необходимо указать идентификатор сети.
filename string yes (none) Имя файла, которое хост должен запросить у загрузочного сервера.
networkid string no (none) Идентификатор сети, к которому должны применяться эти параметры загрузки. Применяется ко всем клиентам, если не указано иное.
serveraddress string yes ( none) IP-адрес загрузочного сервера.
servername string yes (none) Имя хоста загрузочного сервера.
force bool нет (нет) dhcp_option будет отправляться всегда, даже если клиент не запрашивает его в списке запросов параметров. Иногда это необходимо, например, при отправке параметров в PXELinux.
экземпляр экземпляр dnsmasq no Экземпляр Dnsmasq, к которому привязан загрузочный раздел. Если не указано, раздел действителен для всех экземпляров dnsmasq.

Классификация клиентов и назначение индивидуальных параметров

Вы можете использовать следующие классифицирующие разделы:

< td >Строка, отправленная клиентом, представляющая поставщика клиента. dnsmasq выполняет сопоставление подстроки в строке класса поставщика, используя это значение.
Имя Описание
mac Аппаратный адрес клиента.
метка буквенно-цифровая метка, обозначающая сеть.
vendorclass
userclass Строка, отправленная клиентом, представляющая пользователь клиента. dnsmasq выполняет сопоставление подстроки в строке пользовательского класса, используя это значение.
circuitid Сопоставляет идентификатор канала, отправленный агент ретрансляции, как определено в RFC3046.
remoteid Соответствует удаленному идентификатору, отправленному агентом ретрансляции, как определено в RFC3046.
subscrid Соответствует идентификатору подписчика, отправленному агентом ретрансляции, как определено в RFC3993.
< td >no < td >force
Имя Тип Обязательный По умолчанию Описание
string yes (none) Использовать тип раздела в качестве имени параметра и классифицирующий фильтр как значение параметра.
networkid string yes (none) Тег, который будет назначен соответствующим клиентам.
dhcp_option список строк (none) Дополнительные параметры, которые необходимо добавить для этого идентификатора сети.
bool no false Отправлять ли дополнительные параметры из списка dhcp_option клиентам, которые их не запрашивали.

Тег раздела должен иметь имя и не требует опции classifier . Убедитесь, что _все_ разделы имеют уникальные имена, иначе uci show dhcp вернет uci: Parse error… и odhcpd проигнорирует всю конфигурацию.

Наборы IP-адресов

Требуется полный пакет dnsmasq.

Реле DHCP

Если вы выполняете маршрутизацию между двумя интерфейсами (т. е. они не соединены мостом), вы обнаружите, что клиенты на дальнем конце сети, отправляющие запросы DHCP, не получают ответа, поскольку широковещательная рассылка DHCP не может быть направлена ​​между интерфейсами.

По состоянию на октябрь 2021 г. у LuCI нет интерфейса для этого, поэтому файл конфигурации необходимо редактировать вручную.

Добавьте следующий раздел в /etc/config/dhcp:

< td >(none)
Имя Тип Обязательный По умолчанию Описание
id string yes (нет) Уникальное имя раздела, которое должно отличаться от имени любого другого раздела.
interface string yes< /td> (нет) Имя интерфейса OpenWRT (НЕ имя сетевого устройства), на котором расположен целевой DHCP-сервер.
local_addr string yes (none) Собственный IP-адрес этого устройства OpenWRT адрес в дальней подсети, где он будет прослушивать запросы DHCP.
server_addr string yes IP-адрес вышестоящего DHCP-сервера, доступного через сеть, заданную параметром interface. Ответы DHCP, полученные в дальней подсети, будут ретранслироваться на этот сервер. Этот адрес должен быть правильно маршрутизирован (т. е. вы можете успешно пропинговать его из командной строки OpenWRT).

Перезапустите dnsmasq после внесения изменений с помощью /etc/init.d/dnsmasq restart .

  • Последнее изменение: 18.03.2022, 06:55.
  • от Полферцера

Самостоятельная регистрация на вики отключена.
Если вы хотите внести свой вклад в вики OpenWrt, напишите ЗДЕСЬ на форуме или запросите доступ в IRC.

Если не указано иное, содержимое этой вики предоставляется по следующей лицензии:
CC Attribution-Share Alike 4.0 International


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

Поддержка Raspberry Pi, openwrt, маршрутизатора ASUS, Windows и других устройств.

Оглавление

Выставка программного обеспечения

Ali DNS
Используйте Ali DNS для запроса IP-адреса Baidu и проверки результатов.

smartdns
Используйте SmartDNS для запроса IP-адреса Baidu и проверки результатов.

Возможности

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

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

Спецификация IP-адреса домена
Поддержка настройки IP-адреса определенного домена для достижения эффекта фильтрации рекламы и предотвращения вредоносных веб-сайтов.

Высокоэффективная фильтрация правил доменных имен
Поддержка режима сопоставления суффиксов доменных имен, упрощение настройки фильтрации, фильтрация 200 000 записей и экономия времени

Загрузите соответствующую версию установочного пакета SmartDNS. Соответствующий установочный пакет выглядит следующим образом.

Выпущенные пакеты компилируются статически. Если вам нужен пакет небольшого размера, скомпилируйте его самостоятельно или получите из репозитория openwrt/entware.

Пожалуйста, загрузите со страницы выпуска: Загрузите здесь

  • Информацию о процедуре установки см. в следующих разделах.

Стандартная установка системы Linux/система Raspberry Pi, X86_64

Загрузите установочный пакет, например smartdns.xxxxxxxx.arm-debian-all.deb, и загрузите его в систему Linux. Выполните следующую команду для установки

Для системы X86-64 загрузите установочный пакет, например smartdns.xxxxxxxx.x86_64-linux-all.tar.gz, и загрузите его в систему Linux. Выполните следующую команду для установки

После завершения установки вы можете настроить вышестоящий сервер на smartdns. Конкретные параметры конфигурации см. в разделе «Параметры конфигурации».
Как правило, вам нужно только добавить элементы конфигурации server [IP]:port , server-tcp [IP]:port.
Настройте как можно больше вышестоящих DNS-серверов, включая внутренние и зарубежные. Информацию о параметрах конфигурации см. в разделе «Параметры конфигурации».

Переадресация DNS-запроса в SmartDNS

Измените DNS-сервер локального маршрутизатора и настройте DNS-сервер как SmartDNS.

  • Войдите в маршрутизатор в локальной сети и настройте Raspberry Pi для назначения статического IP-адреса.
  • Измените порт WAN или DHCP DNS на IP-адрес Raspberry Pi. Примечание. I. Каждый метод настройки маршрутизатора отличается. Найдите в Baidu похожие методы настройки. II. некоторые маршрутизаторы могут не поддерживать настройку собственного DNS-сервера. в этом случае измените DNS-сервер ПК и мобильного телефона на IP-адрес Raspberry Pi.

Проверьте, успешно ли настроена служба

Запрос имени домена с помощью nslookup -querytype=ptr smartdns
Проверьте, отображается ли элемент имени в результатах команды как smartdns или hostname , например smartdns

опенврт

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

  • Примечание. Для версий до openwrt 19.07 установите пакет luci-app-smartdns.xxxxxxxxx.all-luci-compat-all.

Войдите на страницу управления openwrt и откройте Службы -> SmartDNS, чтобы настроить SmartDNS.

  • Добавить конфигурацию вышестоящего DNS-сервера к вышестоящим серверам. Рекомендуется настроить несколько DNS-серверов дома и за границей.
  • Укажите IP-адрес определенного доменного имени в поле Адрес домена , который можно использовать для блокировки рекламы.

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

Способ 1: SmartDNS в качестве основного DNS-сервера (схема по умолчанию)

Включить перенаправление порта SmartDNS 53

Войдите в маршрутизатор, нажмите «Сервисы» -> «SmartDNS» -> «Перенаправить» и выберите параметр «Перенаправить порт 53 на SmartDNS», чтобы включить переадресацию порта 53.

Проверьте, успешно ли настроена служба

Запрос имени домена с помощью nslookup -querytype=ptr smartdns Посмотрите, отображается ли элемент имени в результатах команды как smartdns или hostname , например smartdns

Интерфейс сообщает, что переадресация не удалась

  • Проверьте правильность установки команды iptable, ip6table.
  • Система openwrt 15.01 не поддерживает перенаправление IPV6.Если сеть должна поддерживать IPV6, измените исходящий DNSMASQ на smartdns или измените порт smartdns на 53 и отключите dnsmasq.
  • После системы LEDE установите драйвер переадресации IPV6 nat. Нажмите «Система» -> «Программное обеспечение» , нажмите «Обновить списки», чтобы обновить список программного обеспечения, установите ip6tables-mod-nat
  • Используйте следующую команду, чтобы проверить, действует ли правило маршрутизации.
  • Если функция переадресации не работает, используйте метод 2: восходящий поток DNSMASQ.

Способ 2: SmartDNS в качестве вышестоящего DNS-сервера DNSMASQ

Перенаправить запрос dnsmasq в SmartDNS

Войдите в маршрутизатор, нажмите «Службы» -> «SmartDNS» -> «Перенаправить» , выберите «Запустить как вышестоящий сервер dnsmasq», чтобы перенаправить запрос dnsmasq в Smartdns.

Проверьте, успешно ли настроена служба

  • Способ 1. Запрос имени домена с помощью nslookup -querytype=ptr 0.0.0.1 Посмотрите, отображается ли элемент имени в результатах команды как smartdns или hostname , например smartdns

Отметьте «Включить» на странице конфигурации, чтобы запустить сервер SmartDNS.

  • Если chinaDNS уже установлен, рекомендуется настроить восходящий поток chinaDNS как SmartDNS.
  • SmartDNS по умолчанию перенаправляет запросы через порт 53 на локальный порт SmartDNS, управляемый параметром конфигурации перенаправления.

Родная прошивка роутера ASUS / прошивка Merlin

Примечание. Прошивка Merlin является производной от прошивки ASUS и теоретически может использоваться непосредственно с пакетом ASUS. Однако на данный момент это не проверено. Если у вас есть какие-либо вопросы, задайте вопрос.

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

Включить вход по SSH

Войдите в интерфейс управления, нажмите «Управление системой» -> «Настройки системы» и настройте «Включить SSH только для локальной сети» .
Имя пользователя и пароль для входа в SSH такие же, как и в интерфейсе управления.

Установить мастер загрузки

В интерфейсе управления нажмите «Приложение, связанное с USB» -> нажмите «Мастер загрузки», чтобы загрузить его.
После завершения загрузки включите Мастер загрузки. Если вам не нужна функция загрузки, вы можете удалить Download Master здесь, но перед удалением убедитесь, что Download Master включен.

Загрузите программное обеспечение в каталог маршрутизатора /tmp/mnt/sda1 с помощью winscp. (или скопируйте сетевое окружение в общий каталог sda1)

После запуска маршрутизатора используйте nslookup -querytype=ptr smartdns для запроса доменного имени.
Проверьте, отображается ли элемент имени в результате команды как smartdns или hostname , например smartdns

В описанном выше процессе smartdns будет установлен в корневой каталог U-диска и запущен в режиме optware.
Его структура каталогов выглядит следующим образом: (здесь перечислены только файлы, связанные с smartdns)

Чтобы изменить конфигурацию, вы можете использовать ssh для входа в маршрутизатор и использовать команду vi для ее изменения.

Его также можно изменить из сетевого окружения. Из общего каталога соседей sda1 вы не можете увидеть каталог asusware.mipsbig, но вы можете напрямую ввести asusware.mipsbig\etc\init.d в диспетчере файлов, чтобы изменить его.

программное обеспечение/программное обеспечение

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

Загрузите программное обеспечение в каталог /tmp маршрутизатора с помощью winscp и выполните следующую команду для установки.

Изменить конфигурацию smartdns

Примечание: если вам нужна поддержка IPV6, вы можете установить для рабочего режима значение 2 , это отключит службу DNS dnsmasq, и smartdns будет работать в качестве основного DNS-сервера. Измените SMARTDNS_WORKMODE в файле /opt/etc/smartdns/smartdns-opt.conf на 2.

Перезагрузите маршрутизатор, чтобы изменения вступили в силу

После запуска маршрутизатора используйте nslookup -querytype=ptr smartdns для запроса доменного имени. Посмотрите, отображается ли элемент имени в результате команды как smartdns или hostname , например smartdns

Примечание. Если служба не запускается автоматически, необходимо настроить автоматический запуск optwre/entware. Подробнее см. в документации по optware/entware.

Установка Windows 10 WSL/WSL ubuntu

Установите Windows 10 WSL Ubuntu

Установите среду Windows 10 WSL и выберите Ubuntu в качестве дистрибутива по умолчанию. Шаги по установке см. в инструкциях по установке WSL

загрузить установочный пакет smartdns.xxxxxxxx.x86_64-linux-all.tar.gz и разархивировать в каталог D:\, после распаковки каталог выглядит следующим образом:

Дважды щелкните install.bat в каталоге D:\smartdns\package\windows для установки. При вводе пароля введите пароль для WLS ubuntu.

Отредактируйте файл конфигурации smartdns.conf в каталоге D:\smartdns\etc\smartdns, вы можете настроить вышестоящий сервер на smartdns. Конкретные параметры конфигурации см. в разделе «Параметры конфигурации».
Как правило, вам нужно только добавить элементы конфигурации server [IP]:port , server-tcp [IP]:port.
Настройте как можно больше вышестоящих DNS-серверов, включая внутренние и зарубежные. Информацию о параметрах конфигурации см. в разделе «Параметры конфигурации».

Дважды щелкните файл reload.bat в каталоге D:\smartdns\package\windows для перезагрузки.

Переадресация DNS-запроса в SmartDNS

Измените DNS-сервер по умолчанию для Windows на 127.0.0.1 , при этом эти шаги относятся к конфигурации IP

Проверьте, успешно ли настроена служба

Запрос имени домена с помощью nslookup -querytype=ptr smartdns
Проверьте, отображается ли элемент имени в результатах команды как smartdns или hostname , например smartdns

Параметры конфигурации

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

Как включить журнал аудита
Журнал аудита записывает доменное имя, запрошенное клиентом. Информация о записи включает время запроса, IP-адрес запроса, доменное имя запроса и тип запроса. Если вы хотите включить журнал аудита, настройте audit-enable yes в файле конфигурации, audit-size , Audit-file , audit-num настройте размер файла журнала аудита, путь к файлу журнала аудита и количество файлов журнала аудита. . Файл журнала аудита будет сжат для экономии места.

  • Используйте доверенные DNS-серверы.
  • Используйте серверы TLS.
  • Настройте группу вышестоящих DNS-серверов.

Переадресация DNS-запросов В некоторых случаях для переадресации DNS необходимо запрашивать некоторые доменные имена с использованием определенного DNS-сервера. например.

Доменное имя, оканчивающееся на .home, отправляется на 192.168.1.1 для разрешения. Доменное имя, оканчивающееся на .office, отправляется на 10.0.0.1 для разрешения. Другие доменные имена разрешаются в режиме по умолчанию. Конфигурация перенаправления для этого случая следующая:

Приведенную выше конфигурацию можно использовать для реализации разрешения и разгрузки DNS. Если вам нужно реализовать распределение трафика на запрашивающем порту, вы можете настроить второй DNS-сервер. Добавлена ​​конфигурация привязки. Параметр группы указывает имя распределения трафика.

Как использовать функцию оптимизации IP с двойным стеком IPV4 и IPV6
В настоящее время сеть IPV6 в некоторых случаях не так быстра, как IPV4. Чтобы получить лучший опыт в сети с двумя стеками, SmartDNS предоставляет механизм оптимизации IP-адресов с двумя стеками, то же доменное имя и скорость IPV4. Гораздо быстрее, чем IPV6, тогда SmartDNS заблокирует разрешение IPV6, разрешит ПК использовать IPV4, эта функция активируется с помощью dualstack-ip-selection yes, dualstack-ip-selection-threshold [время] для порога. если вы хотите отключить запись IPV6 AAAA, попробуйте force-AAAA-SOA yes .

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

Установите минимальное значение TTL соответствующим образом.
Установите минимальное время TTL DNS на соответствующее значение с помощью rr-ttl-min, чтобы увеличить время кэширования. Рекомендуется установить период ожидания от 10 до 30 минут, чтобы избежать появления недействительных доменных имен при изменении IP-адреса домена.

Включить предварительное получение домена
Включить предварительное получение доменных имен с параметром prefetch-domain yes, чтобы повысить количество попаданий в запросы. по умолчанию Smartdns снова отправит запрос на домен до истечения срока действия кеша и кэширует результат для следующего запроса. Часто используемые доменные имена будут по-прежнему кэшироваться. Эта функция потребляет больше ресурсов ЦП в режиме ожидания.

Функция кэширования с истекшим сроком действия
Включите функцию кэширования с истекшим сроком действия с параметром serve-expired yes, чтобы улучшить частоту попаданий в кэш и снизить нагрузку на ЦП. Эта функция вернет клиенту значение TTL = 0 по истечении тайм-аута TTL и одновременно отправит новый запрос запроса, а также кэширует новые результаты для последующего запроса.

Как второй DNS настраивает дополнительные параметры поведения?
Второй DNS можно использовать в качестве вышестоящего по отношению к другим DNS-серверам, чтобы обеспечить больше вариантов поведения запросов. Поддержка конфигурации привязки может привязывать несколько портов. Для разных портов можно установить разные флаги для реализации разных функций, например

Как получить SPKI DOT
SPKI можно получить на странице, опубликованной поставщиком услуг DNS. Если он не опубликован, его можно получить с помощью следующей команды: замените IP на свой IP.

Скомпилировать

smartdns содержит скрипты для компиляции пакетов, поддерживает компиляцию установочных пакетов luci, debian, openwrt, opare и может выполнять компиляцию package/build-pkg.sh.

Пожертвовать

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

Эта фиксация не принадлежит ни к одной из веток в этом репозитории и может принадлежать ответвлению за пределами репозитория.

2 участника

Пользователи, внесшие вклад в этот файл

  • Открыть с рабочего стола
  • Просмотреть в необработанном виде
  • Копировать исходное содержимое Копировать необработанное содержимое

Копировать необработанное содержимое

Копировать необработанное содержимое

Несвязанный рекурсивный DNS-сервер с UCI

В сборке OpenWrt по умолчанию используется dnsmasq для переадресации DNS и DHCP. При прямом распознавателе зависимость от вышестоящих рекурсоров может быть причиной для беспокойства. Они часто предоставляются интернет-провайдером, и некоторые пользователи переключились на общедоступных поставщиков DNS. В любом случае могут возникнуть проблемы из-за производительности, «отслеживания», угона (MiM) и других причин. Решением может быть запуск рекурсивного распознавателя или распознавателя с поддержкой TLS.

Unbound может быть полезен на встроенном оборудовании потребительского уровня. Он полностью поддерживает DNSSEC и TLS. Он предназначен только для рекурсивного преобразователя. NLnet Labs NSD предназначен для авторитетной задачи. Это отличается от ISC Bind и его инклюзивных функций. Свободные усилия по настройке и потребление памяти может быть легче контролировать. Потребитель может иметь собственный рекурсивный сопоставитель с маршрутизатором 8/64 МБ и устранять потенциальные проблемы с пересылающими сопоставителями, не зависящими от него.

Этот пакет основан на возможностях Unbounds с OpenWrt UCI. Не каждая опция Unbound находится в UCI, скорее, UCI упрощает комбинацию связанных опций. Собственные опции Unbounds объединены и сбалансированы в рамках меньшего набора вариантов. Опции включают ресурсы, DNSSEC, контроль доступа и некоторые настройки TTL. UCI также предоставляет вариант выхода и работает на необработанном уровне unbound.conf.

КАК: Блокировка рекламы

Сценарии UCI будут работать с net/adblock, если он установлен и включен. Все это обнаруживается и интегрируется автоматически. Короче говоря, сценарии блокировки рекламы создают отдельные файлы локальной зоны, которые просто включаются в несвязанный файл конфигурации во время генерации UCI. Если вы этого не хотите, отключите блокировку рекламы или перенастройте блокировку рекламы, чтобы эти файлы не отправлялись в Unbound.

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

/etc/config/брандмауэр:

КАК: Интеграция с DHCP

Некоторые параметры и сценарии UCI помогают Unbound работать с DHCP-серверами для загрузки локального DNS. Приведенные здесь примеры: последовательный dnsmasq с несвязанным, параллельный dnsmasq с несвязанным и несвязанный сценарий с odhcpd.

В этом случае dnsmasq сильно не изменяется по сравнению с конфигурацией OpenWrt по умолчанию. Здесь dnsmasq вынужден использовать локальный экземпляр Unbound в качестве одиночного вышестоящего DNS-сервера вместо вашего интернет-провайдера. Это может быть самая простая реализация, но в сетях с большими объемами может произойти снижение производительности. Unbound и dnsmasq хранят в памяти одну и ту же информацию, и все передачи обрабатываются дважды.

/etc/config/unbound:

/etc/config/dhcp:

/etc/config/unbound:

/etc/config/dhcp:

Непривязанный и odhcpd

Вы можете спросить: "Может ли Unbound заменить dnsmasq?" У вас могут быть записи DHCP-DNS только с Unbound и odhcpd. Скрипты UCI позволят Unbound действовать как dnsmasq. Когда odhcpd настраивает каждую аренду DHCP, он вызывает скрипт. Сценарий, поставляемый с Unbound, будет считывать файл аренды для записей DHCP-DNS. Требуется приложение unbound-control, потому что простое переписывание conf-файлов и перезапуск несвязанного требует слишком много накладных расходов.

  • По умолчанию OpenWrt имеет dnsmasq+odhcpd с odhcpd-ipv6, ограниченным только DHCPv6.
  • Если вы используете dnsmasq+odhcpd вместе, используйте описанные выше последовательные или параллельные методы dnsmasq.
  • Чтобы использовать только odhcpd, необходимо установить пакет odhcpd (полный).
  • Для загрузки и выгрузки аренды необходимо установить пакет unbound-control.
  • Не забудьте удалить (или отключить) dnsmasq, если вы не будете его использовать.

/etc/config/unbound:

/etc/config/dhcp:

КАК: Ручное переопределение

Да, есть UCI для отключения остальной части Unbound UCI. Однако OpenWrt или LEDE предназначены для встроенных машин с флэш-памятью. Сценарии инициализации делают несколько вещей для защиты флэш-памяти.

Полностью вручную (почти)

Все файлы /etc/unbound (постоянные, ПЗУ) копируются в /var/lib/unbound (tmpfs, ОЗУ). Отредактируйте свое руководство /etc/unbound/unbound.conf, указав ссылку на это /var/lib/unbound для включаемых файлов. Обратите внимание, что при подготовке к джейлу /var/lib/unbound chown unbound . Настройте безопасность в /etc/unbound/unbound.conf с параметрами username:unbound и chroot:/var/lib/unbound .

Обновляйте DNSKEY в зависимости от выбранной активности флэш-памяти. Поддержка root.key для DNSKEY RFC5011 будет затруднена во флэш-памяти. Unbound часто обновляется. Он также создает и уничтожает рабочие файлы в процессе. В /var/lib/unbound это не проблема, но при следующей перезагрузке он исчезнет. Если у вас активен DNSSEC (валидатор), вам следует рассмотреть вариант возраста UCI. Выберите, сколько дней копировать из /var/lib/unbound/root.key (tmpfs) в /etc/unbound/root.key (flash).

/etc/config/unbound:

Вам нравится UCI. Тем не менее, вам нужно добавить некоторые сложные для стандартизации параметры или вы просто еще не готовы сделать запрос UCI. Файлы /etc/unbound/unbound_srv.conf и /etc/unbound/unbound_ext.conf будут скопированы в каталог chroot Unbounds и включены во время автоматического создания.

Файл unbound_srv.conf будет добавлен в предложение server:. Файл unbound_ext.conf будет добавлен в конец всей конфигурации. Это для расширенной прямой зоны: , тупиковой зоны: , auth-zone: и view: . Вы также можете отключить unbound-control в UCI, который разрешает только незашифрованные соединения «localhost», а затем добавить зашифрованное удаленное управление: пункт.

КАК: кэшировать файлы зон

Unbound имеет возможность AXFR всей зоны с авторитетного сервера для предварительной выборки зоны. Это может ускорить доступ к общим зонам. У некоторых могут быть особые проблемы с пропускной способностью из-за накладных расходов DNSSEC. Ниже приведен общий пример. По умолчанию UCI включает корневую зону, но в качестве примера она отключена.

/etc/config/unbound:

КАК: TLS через DNS

Unbound может использовать TLS в качестве клиента или сервера. UCI поддерживает Unbound в качестве клиента пересылки с TLS. Серверы более сложны и требуют ручной настройки. Это может быть необходимо для защиты конфиденциальности от скрытого отслеживания. Некоторые общедоступные DNS-серверы, кажется, рекламируют помощь в этом квесте. Если вы ищете лучшего понимания, некоторую информацию можно найти на Cloudflare DNS 1.1.1.1. Ниже приведен общий пример. Вы можете смешивать поставщиков, используя полную спецификацию сервера для переопределения общего порта зон и индекса домена сертификата.

Обновление Unbound 1.9.1: все функции TLS корректно работают с OpenSSL 1.0.2 или 1.1.0. Обязательно установите пакет ca-bundle и используйте opkg для регулярного получения обновлений.

/etc/config/unbound:

Необязательные параметры компиляции

Unbound можно изменить, переключив переключатели в make menuconfig Libraries/Network/libunbound. Отключите libevent, libpthread и ipset, чтобы попытаться повысить производительность и размер на небольших одноядерных целях. Эти варианты понижения версии хорошо протестированы, но они не нужны, если только Unbound не подойдет. Будьте осторожны, прежде чем включать параметры subnetcache, dnscrypt и python. Эти усовершенствования не были полностью протестированы в OpenWrt, и Python является большой зависимостью. Эти улучшения по умолчанию отключены, и они не имеют UCI. Вам нужно будет использовать файлы /etc/unbound/unbound_srv.conf и /etc/unbound/unbound_ext.conf для настройки этих модулей. Строка server: item module: итератор python subnetcache validator будет заполнен, если модули скомпилированы.

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

В настоящее время поддерживается один экземпляр.

Настройте любое сочетание условий Unbound forward-zone: , stub-zone: или auth-zone: . Эти разделы более компактны, чем Unbound, и будут развернуты в соответствии с синтаксисом конфигурации Unbound.

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