Использование Domain Overrides (Split-DNS) для переопределения DNS-сервера для определенного домена.
На практике:
- MikroTik: 192.168.5.1 - DNS-Сервер для локальной сети;
- Samba AD DC: 192.168.5.10 - DNS-Сервер обслуживающий зону net.lan.
Необходимо, чтобы все запросы, связанные с зоной net.lan, обслуживались DNS-Сервером 192.168.5.10.
В pfSense такая возможность присутствует из коробки и делается немного проще чем в MikroTik.
UPD: Начиная с версии RouterOS v6.47, появилась возможность пересылки запросов с помощью встроенного DNS-сервера. Раньше это делалось костылями через L7.
DNS Settings:
Для поддержки Domain Overrides необходимо, чтобы на DNS-Сервере была включена опция "Allow Remote Requests".
/ip dns
set allow-remote-requests=yes
Настройка Firewall:
Разрешаем работу DNS-Сервера на всех интерфейсах, кроме WAN.
/ip firewall filter
add action=accept chain=input protocol=udp dst-port=53 in-interface=!wan
add action=drop chain=input in-interface=wan
Domain Overrides:
Начиная с версии RouterOS v6.47:
Делается это в меню DNS через управление статическими записями. Обязательным условием для работы является отключенный DoH.
/ip dns static add forward-to=192.168.5.10 regexp="((^)|(\.))net.lan$" type=FWD
- .+?\.net\.lan$
- .*\.net\.lan$
- ^.+(net).lan$
Предыдущий способ:
Для полноценного ввода удаленных компьютеров в домен, необходимо в Layer7 Protocols использовать:
regexp=net.lan, а не regexp=\x03net\x03lan\x01
- В L7 regexp=((^)|(\.))net.lan$ не работает.
Иначе при подключениях по RDP, не работает (если включена), проверка подлинности на уровне сети.
Настройка Firewall:
- Layer7 Protocols;
/ip firewall layer7-protocol
add name=net.lan regexp=net.lan
- Mangle;
/ip firewall mangle
add chain=prerouting dst-address=192.168.5.1 layer7-protocol=net.lan action=mark-connection new-connection-mark=net.lan-fwd protocol=tcp dst-port=53
add chain=prerouting dst-address=192.168.5.1 layer7-protocol=net.lan action=mark-connection new-connection-mark=net.lan-fwd protocol=udp dst-port=53
- NAT;
/ip firewall nat
add action=dst-nat chain=dstnat connection-mark=net.lan-fwd to-addresses=192.168.5.10
add action=masquerade chain=srcnat connection-mark=net.lan-fwd
Готово. Также, этот способ работает, когда необходимо, чтобы удаленные клиенты, находящиеся в другой локальной сети и подключенные к MikroTik по L2TP/IPsec туннелю, имели доступ к доменной зоне сервера DC Active Directory. Или, например, когда необходимо открыть заблокированный сайт, используя один из DNS серверов OpenNIC обслуживающий зону .lib.
Links: | Feature request: per-domain forwarding in DNS | Conditional DNS forwarding | MikroTik Conditional DNS Forwarding (with online code generator) | Online regex tester | Pi-hole regular expressions tutorial |