Условная переадресация DNS-запросов на MikroTik

Вводная информация DNS forwarding

Если используете маршрутизатор MikroTik с настроенным VPN между офисами, вероятно приходилось сталкиваться с проблемой переадресации DNS-запросов на внутренний сервер имён. Существует DNS-сервер, который автоматически разрешает имена сайтов на другом конце туннеля. Однако, если вы запрашиваете DNS-запись для внутреннего домена, например, company.ru, на другом конце, маршрутизатор MikroTik попытается преобразовать запрос через собственный DNS-сервер, который, очевидно, не имеет необходимой информации. Разберемся с проблемой DNS forwarding более детально.

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

Как ни странно, у Микротика нет простого решения для условной пересылки DNS или пересылки DNS-запросов для определенного домена на конкретный сервер, однако мы сможем решить данную задачу с помощью командной строки.

Буду считать, что читатель знаком с командной строкой Mikrotik и нет необходимости расписывать используемый функционал, – это выходит за рамки этой публикации. В решении мы будем работать на 7 уровне сетевой модели OSI или прикладном уровне.

Прежде чем начать, вам понадобится следующая информация:

  • Внутренний IP адрес вашего маршрутизатора MikroTik (172.16.100.1 в моем случае)
  • IP адрес внутреннего DNS сервера (10.100.100.2 в моем случае)
  • Имя внутреннего домена (mycompany.ru в моем случае)
  • Доступ к маршрутизатору Микротик по протоколу ssh

Приступим к решению

1. Откройте текстовый редактор, например, notepad и вставьте следующие команды:

/ip firewall layer7-protocol add name=mycompany.ru regexp=mycompany.ru /ip firewall mangle add chain=prerouting dst-address=172.16.100.1 layer7-protocol=mycompany.ru action=mark-connection new-connection-mark=mycompany.ru-forward protocol=tcp dst-port=53 /ip firewall mangle add chain=prerouting dst-address=172.16.100.1 layer7-protocol=mycompany.ru action=mark-connection new-connection-mark=mycompany.ru-forward protocol=udp dst-port=53 /ip firewall nat add action=dst-nat chain=dstnat connection-mark=mycompany.ru-forward to-addresses=10.100.100.2 /ip firewall nat add action=masquerade chain=srcnat connection-mark=mycompany.ru-forward

2. В списке команд выше необходимо изменить внутренний IP-адрес вашего маршрутизатора (зеленый цвет), имя внутреннего домена (оранжевый цвет) и адрес внутреннего DNS сервера (синий цвет) в соответствии с вашими настройками в текстовом редакторе.

Низкая скорость GRE IPSec тоннеля AES CBC

3. Откройте ssh-сеанс на маршрутизаторе MikroTik и вставьте отредактированное содержимое текстового редактора в командную строку.

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

/system reboot

Поиск неисправностей

Нам необходимо проверить, сможем ли попасть на сайты интрасети с другой стороны VPN. Если вы не можете, убедитесь, что туннель vpn запущен и работает, и что сайты действительно доступны через их внутренние IP-адреса, например, проверка по ping-протоколу нашего DNS-сервера 10.100.100.2. Следующим шагом является устранение проблемы с разрешением DNS при помощи таких команд, как nslookup. Сначала убедитесь, что DNS-сервер с другой стороны туннеля отвечает на запросы NS, выдавая команду:

C:\&gt,nslookup — 10.100.100.2 Default Server : dns.mycompany.ru Address: 10.100.100.2 &gt,

где 10.100.100.2 DNS-сервер Интранета.

После приглашения &gt, введите имя одного из ваших сайтов интрасети, и сервер имен должен сообщить его IP-адрес:

Default Server : dns.mycompany.ru Address: 10.100.100.2 &gt,server1.mycompany.ru Name: server1.mycompany.ru Address: 10.100.100.50

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

C:\&gt,nslookup — 172.16.100.1

где 172.16.100.1 внутренний IP-адрес нашего маршрутизатора MikroTik.

Default Server : router Address: 172.16.100.1 &gt,server1.mycompany.ru Name: server1.mycompany.ru Address: 10.100.100.50

Если результат не совпадает с вышеописанным, необходимо вернутся к списку команд в текстовом редакторе и убедитесь, что всё введено правильно. Исправьте ошибки и попробуйте еще раз.

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

Материал любезно предоставлен Johann Fenech — https://blog.johannfenech.com/?p=536

,

Команды ввел правильно, VPN канал с центральной сетью установлен, ip-адреса центральной сети пингуются, а имена нет. С другой стороны VPN выполняю команду:

C:Usersuser&gt,nslookup 192.168.1.2

╤хЁтхЁ: UnKnown

Address: 192.168.9.1

*** UnKnown не удалось найти 192.168.1.2: Non-existent domain

где 192.168.1.2 контроллер домена центральной сети

192.168.9.1 Mikrotik другой сети

,

Здравствуйте.

Не могли бы Вы привести результат выполнения команды /ip firewall export ?

Спасибо.

,

Было бы честно с вашей стороны указать, что это перевод статьи

https://blog.johannfenech.com/?p=536

,

Коллеги, спасибо за бдительность!