/ip dns static
add forward-to=192.168.88.3 regexp=".*\\.test1\\.localdomain" type=FWD
add forward-to=192.168.88.56 regexp=".*\\.test2\\.localdomain" type=FWD
Моему счастью нет предела!
Чем это нам грозит?
Как минимум, мы избавляемся от странных конструкций с NAT наподобие этой:
/ip firewall layer7-protocol
add comment="DNS Nat contoso.com" name=contoso.com regexp="\\x07contoso\\x03com"
/ip firewall mangle
add action=mark-packet chain=prerouting comment="mark dns contoso.com" dst-address-type=local dst-port=53 in-interface-list=DNSMASQ layer7-protocol=contoso.com new-packet-mark=dns-contoso.com passthrough=yes protocol=udp
add action=mark-packet chain=prerouting comment="mark dns contoso.com" dst-address-type=local dst-port=53 in-interface-list=DNSMASQ layer7-protocol=contoso.com new-packet-mark=dns-contoso.com passthrough=yes protocol=tcp
/ip firewall nat
add action=dst-nat chain=dstnat comment="DST-NAT dns contoso.com" dst-port=53 in-interface-list=DNSMASQ packet-mark=dns-contoso.com protocol=udp to-addresses=192.0.2.15
add action=dst-nat chain=dstnat comment="DST-NAT dns contoso.com" dst-port=53 in-interface-list=DNSMASQ packet-mark=dns-contoso.com protocol=tcp to-addresses=192.0.2.15
add action=masquerade chain=srcnat comment="mask dns contoso.com" dst-port=53 packet-mark=dns-contoso.com protocol=udp
add action=masquerade chain=srcnat comment="mask dns contoso.com" dst-port=53 packet-mark=dns-contoso.com protocol=tcp
И это не все, теперь можно прописать несколько серверов пересылки, что поможет сделать dns failover.
Интелектуальная обработка DNS даст возможность начать внедрение ipv6 в сеть компании. До этого я этого не делал, причина в том, что мне нужно было разрешать ряд dns имен в локальные адреса, а в ipv6 это было не сделать без довольно больших костылей.
Alkop
А расскажите подробней — для чего это надо?
MagicGTS Автор
Да все просто.
Допустим, у вас есть домен, причем он имеет глобальное имя, к примеру в зоне .ru
И вот вам нужно, что-бы некоторые ресурсы были доступны как из интернета так и во внутренней сети за NAT. Реализуется это тем, что-бы внутри NAT отвечать на DNS запрос IP адресом из серой сети, а не публичны. Или надо выносить все подобные сервера в DMZ.
rstepanov
Это зонами делается в BIND
MagicGTS Автор
Это совсем грустный вариант для нано филиальчиков. Куда водружать BIND, если в филиале кроме двух ПК и mikrotik ничего нет?
Заруливать DNS в туннель до головного офиса — совсем не лучшая затея.
rstepanov
Это был грустный вариант раньше, а теперь ставишь малину и на нее — все, что душе угодно: прокси, тор, днс, впн-сервер, веб-сервер, баннерорезку и т.п.
MagicGTS Автор
Зачем тогда Mikrotik? Это создает дополнительные точки отказа и усложняет поддержку.
rstepanov
Я в целом положительно отношусь к микротикам, просто хотел отметить, что это не единственное решение описанной проблемы, можно было и раньше, и при сравнимом бюджете. И вообще хорошо, когда вариантов больше одного.
А вообще, когда у вас есть внутренние ресурсы в филиале, но нет ни одного сервера — тут что-то не сходится, вспоминаю про трусы и крестик. Разве что камера какая-нибудь или принтер, но это на большинстве роутеров прикручивается через LAN DNS функцию, даже с динамическим внутренним IP.
MagicGTS Автор
У меня в практике вполне типичная ситуация: точка продаж.
На точке есть пара ПК и принтер, иногда камера. Mikrotik обеспечивает туннель до общей сети. И тут как раз split dns мне сильно помогает, если падает туннель, то пропадают внутренние ресурсы, но остаётся интернет. И если туда приезжает менеджер с ноутом, то ему не надо ничего специально настраивать, все работает как из головного офиса или дома.
AcidVenom
del
AxisPod
Прокси, впн? И получаешь скорость в пол байта в секунду?
rstepanov
А вам сколько надо? Если гигабит/с — то узнайте сначала сколько такой канал стоит для юрлиц.
Am0ralist
10-100 мбит/с в регионах могут быть не так уж и дороги.
На прошлой работе вообще, насколько помню, услугу создания сети между точками продаж и головной фирмой провайдер предлагал на неплохих скоростях.
rstepanov
Pine A64 (Cortex-A53) легко справляется с 300 мбит каналом как некэширующий прокси-сервер, RPi4(Cortex-A72) еще быстрее. Для каналов быстрее 500 мбит/с я бы уже задумался о чем-нибудь более серьезном, но это не точка продаж ни разу, там такие скорости не нужны.
net_racoon
А вы считаете, что нагружать софтроутер разборами ДНС запросов затея получше? Кроме того, если у меня 500 таких филиалов, то каждый филиал- это отдельная точка для настройки?
MagicGTS Автор
А как вы настраиваете такие филиалы? Прямо из коробки в бой?
net_racoon
Я про эксплуатацию. Вот поступила вам команда зарезать хабр на все 500 филиалов. Вы предлагаете зайти на каждый и править фильтр вместо централизованного управления?
MagicGTS Автор
Тут уже можно делать по разному, но я в компании смог объяснить, что технические запреты ресурсов (типа сайтов), ничего не решат, поэтому такой команды мне не дадут.
Если надо массового настроить 500 роутеров, то тут прямая дорога к изучению ros api, что поможет делать не только это.
Alkop
ааа… я это делал путём дополнительного правила в NAT
MagicGTS Автор
Ага, Layer-7, mangle, NAT. И скажи нет dns failover для таких доменов, проблема с большими пакетами и т.п.
Alkop
Да у меня там один сайтик был :) Так что не сильно парился.
jocelot
Если я не ошибаюсь, то ситуация с сервером за NAT'ом и пробросом портов решается NAT-loopbak правилом без всяких layer 7 и DNS вообще. Например, для внктренней сети 192.168.0.0/24 вот так:
chain=srcnat action=masquerade protocol=tcp src-address=192.168.0.0/24 dst-address=192.168.0.0/24 out-interface=<Your_LAN_bridge> dst-port=0-65535
MagicGTS Автор
Это близкий случай, но не тот.
jocelot
Странно. У меня вроде работает. Расскажите, пожалуйста, когда это не работает для сервера за NAT'ом. Я бы тоже у себя пофиксил.
MagicGTS Автор
Первое, чем мне не нравится hairpin nat это то, что мы нагружаем роутер лишним трафиком.
Плюсы split-dns в том, что можно держать в глобальной доступности всего пару сервисов, а остальные в привате. И тут для пользователя самое удобное, он не встречает никаких различий между подключением к сервисам внутренним и внешним, для него это выглядит прозрачно и в голове он держит только один домен. В случае без split dns, очень часто имеется ситуация с существованием как глобального домена так и локального.
maxzhurkin
Например, можно сделать так, чтобы запросы на внутренние ресурсы локальной сети/интранет сети не уходили в «дикий интернет».
У некоторых провайдеров довольно паршиво настроенные сервера DNS, можно отправить все запросы на широко известные публичные сервера, а запросы на ресурсы провайдера — на его сервер/сервера.
Некоторые носят компактные модели MikroTik с собой и подключают в разных местах (заранее известных) можно учесть специфику сразу всех этих сетей, до этого в особо специфичных случаях приходилось что-нибудь перенастраивать
usego
Например есть у вас в облаке домен ourcloud.internal и VPN туда из офиса, и надо что бы из офиса резолвились server1.ourcloud.internal, redis23.ourcloud.internal и т.п. Направляете запросы *.ourcloud.internal на облачный ресолвер, а остальные как обычно.
KonstantineZ
Вот мой случай: два провайдера, у каждого есть внутренние сервисы (сайт, личный кабинет), не доступные из интернета. Один из провайдеров часто меняет IP этих сервисов. Таким образом, мне необходимы ДНС обоих провайдеров, причем имена сайтов должны резолвиться именно своим ДНС-сервером. Я вот до этой статьи и не обратил внимания на изменения, в основном потому что на long term сидел. Перешел на stable.