Кратко — нужный принцип: сделать так, чтобы MikroTik действительно мог достучаться до Amnezia DNS через VPN‑туннель (т. е. к IP‑адресу, видимому в VPN), назначить этот IP как DNS‑сервер на MikroTik и (опционально) раздать его клиентам по DHCP или принудительно перенаправлять все DNS‑запросы клиентов на этот IP. Ниже — пошагово с примерами команд.
1) Убедитесь, что VPN‑туннель поднят и DNS‑сервер Amnezia доступен по VPN‑IP
- Вы должны знать VPN‑IP сервера Amnezia (например 10.10.10.1) и интерфейс, через который ходит туннель (WireGuard/PPP/etc).
- Проверьте из MikroTik: ping 10.10.10.1 (или /tool ping).
- Если VPN устанавливается в контейнере внутри MikroTik, убедитесь, что контейнерная сеть маршрутизируется наружу и что MikroTik ядро видит маршрут до VPN‑IP. При необходимости добавьте статический маршрут к этому IP через интерфейс туннеля.
/ip route add dst-address=10.10.10.1/32 gateway=<WG-GATEWAY-IF-or-next-hop>
Примеры WireGuard (если вы создаёте интерфейс прямо в RouterOS):
/interface wireguard add name=wg-amnezia mtu=1420
/ip address add address=10.10.10.2/32 interface=wg-amnezia
/interface wireguard peers add interface=wg-amnezia public-key="PUBKEY_SERVER" endpoint-address=<server_public_ip> endpoint-port=51820 allowed-address=10.10.10.0/24 persistent-keepalive=25
2) Назначьте этот VPN‑IP как DNS для RouterOS
- Настройка DNS резолвера RouterOS так, чтобы он использовал Amnezia DNS:
/ip dns set servers=10.10.10.1 allow-remote-requests=yes
- Проверьте резолв с конкретным сервером:
/tool dig @10.10.10.1 example.com
Важно: указывать нужно именно VPN‑IP сервера (внутренний адрес), а не публичный IP сервера в облаке, потому что Amnezia DNS обслуживает запросы только внутри VPN.
3) Раздать DNS клиентам (DHCP / PPP)
- Если клиенты получают DNS по DHCP:
/ip dhcp-server network set <network-number> dns-server=10.10.10.1
- Для PPP/PPPoE/L2TP профиля — выставьте соответствующий DNS в профиле.
4) Принудительное перенаправление всех клиентских DNS (опционально, если клиенты ставят свои DNS)
Если вы хотите, чтобы все запросы на порт 53 из LAN попадали на Amnezia DNS независимо от настроек клиента — добавьте dst‑nat правила:
/ip firewall nat add chain=dstnat dst-port=53 protocol=udp action=dst-nat to-addresses=10.10.10.1 to-ports=53 \
dst-address-type=!local comment="Redirect UDP DNS to Amnezia"
/ip firewall nat add chain=dstnat dst-port=53 protocol=tcp action=dst-nat to-addresses=10.10.10.1 to-ports=53 \
dst-address-type=!local comment="Redirect TCP DNS to Amnezia"
Пояснения:
- dst-address-type=!local предотвращает переадресацию запросов, адресованных самому MikroTik.
- Если RouterOS у вас старой версии без dst-address-type, добавьте более точные условия (например src-address=<LAN_NET> и dst-address!=10.10.10.1).
- Если DNS сервер слушает другой порт — скорректируйте to-ports и dst-port.
5) Правила firewall / forwarding
Разрешите пересылку DNS через туннель, если у вас есть строгие filter‑правила:
/ip firewall filter add chain=forward src-address=<LAN_NET> dst-address=10.10.10.1 protocol=tcp dst-port=53 action=accept
/ip firewall filter add chain=forward src-address=<LAN_NET> dst-address=10.10.10.1 protocol=udp dst-port=53 action=accept
6) Тестирование
- С роутера: /tool dig @10.10.10.1 example.com
- С клиента в LAN: nslookup example.com (должен вернуть ответ от 10.10.10.1)
- Если использовали dst‑nat — проверьте, что трасса проходит через туннель (tool torch на порт 53 и на wg интерфейсе).
Возможные проблемы и советы
- Если RouterOS пытается резолвить домены и использует не тот источник (не VPN IP), добавьте статические маршруты или используйте policy based routing, чтобы трафик к 10.10.10.1 шел через туннель и имел правильный исходный адрес.
- Порядок NAT‑прав важен — dst‑nat должно стоять до других правил, которые могли бы менять маршрут.
- Если DNS использует DoH/DoT или нестандартный порт — настройте перенаправление/покупку в соответствии с этим.
- Для отладки используйте torch, packet sniffer и лог firewall.
Если напишите точные параметры вашей схемы (какой тип VPN, IP адреса туннеля, слушающий порт DNS, RouterOS версия), я дам конкретные команды под вашу конфигурацию и учту нюансы (например, VPN в контейнере на MikroTik).