Разрешение имен хостов локальной сети через DNSCrypt-Proxy - PullRequest
0 голосов
/ 28 сентября 2019

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

Настройка DNSCrypt-Proxy на шлейфовом порту 5353,и указал на DNS-сервер AdGuard Family Shield.

Включить DNSMasq в качестве локального DNS-сервера, транслируемого по DHCP.

Отключить DNS-серверы, поставляемые поставщиком услуг Интернета, и заставить все DNS-запросы, поступающие на DNSMasq, бытьперенаправлен на DNSCrypt-Proxy.

Таким образом, КАЖДОЕ устройство в моей сети будет маршрутизироваться через семейные безопасные DNS-серверы (да, даже если вы попытаетесь перейти, скажем, к 1.1.1.1, мои правила брандмауэра будутпоймайте это и измените направление соответственно).

Я нашел, что это отличное решение для моих детей и моего душевного спокойствия, но слишком ограничивающее для жены и меня.Мы хотим иметь возможность просматривать контент для взрослых, НО только на ограниченном наборе устройств, явно включенных одно за другим.

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

Создан2-й экземпляр DNSCrypt-Proxy на шлейфовом порту 5354, и наведите его на Adguard DNS Server (который блокирует только рекламу, не более)

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

Наконец, созданы правила брандмауэра (перечислены ниже) для маршрутизации 5 конкретных устройств STRAIGHT к DNSCrypt-Proxy через порт 5354, за которыми следуют дополнительные правила, которые захватывают ВСЕ ДРУГОЙ трафик DNS и направляют его на DNSMasq намаршрутизатор, который, в свою очередь, пересылает на безопасный DNS-сервер.

Надеюсь, это четко описывает мои настройки.

Теперь вот проблема, с которой я столкнулся:

Мой ноутбук сDNS-запросы, перенаправленные на DNSCrypt-Proxy через порт 5354, BYPASSING DNSMasq, больше не могут разрешать локальные имена хостов.В то время как другие клиенты локальной сети могут, потому что они проходят через DNSMasq, который знает об именах хостов в локальной сети из запросов DHCP.Таким образом, в основном экземпляр DNSCrypt-Proxy, предназначенный для моих неограниченных устройств, совершенно не знает о других хостах на локальной сети.

Как я могу это исправить?В идеале без добавления записей в файл роутеров / etc / hosts.Как я могу сделать, чтобы локальный экземпляр DNSCrypt мог разрешать имена хостов в локальной сети?

Спасибо за чтение этого!

Правила брандмауэра ниже.Кстати, мне пришлось поместить эту команду "echo 1> / proc / sys / net / ipv4 / conf / br-lan / route_localnet" в мой /etc/rc.local, чтобы включить маршрутизацию от br-lan к интерфейсу обратной связи.без него правила перенаправления неограниченных DNS-запросов на 127.0.0.1:5354 не выполняли НИЧЕГО.

RESTRICTED_DNS = 192.168.1.1

UNRESTRICTED_DNS = 127.0.0.1: 5354

RESTRICTED_CLIS"-s 0.0.0.0/0"

UNRESTRICTED_CLIENTS =" - m iprange --src-range 192.168.1.10-192.168.1.14 "

iptables -t nat -A zone_lan_prerouting -p tcp$ UNRESTRICTED_CLIENTS --dport 53 -j DNAT --to $ UNRESTRICTED_DNS

iptables -t nat -A zone_lan_prerouting -p udp $ UNRESTRICTED_CLIENTS --dport 53 -j DNAT - до $ UNRESTRICT43_S *iptables -t nat -A zone_lan_prerouting -p tcp $ RESTRICTED_CLIENTS --dport 53 -j DNAT --to $ RESTRICTED_DNS

iptables -t nat -A zone_lan_prerouting -p udp $ RESTRICTED_CLIENTS --port --в $ RESTRICTED_DNS

...