Es sind nicht einmal 10 Jahre vergangen, seit die Entwickler von RoS (in stable 6.47) eine Funktion hinzugefügt haben, die es ermöglicht, DNS-Anfragen gemäß speziellen Regeln umzuleiten. Früher musste man sich mit Layer-7-Regeln in der Firewall abmühen, jetzt wird dies einfach und elegant gemacht:
/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
Mein Glück kennt keine Grenzen!
Was bedeutet das für uns?
Mindestens befreien wir uns von seltsamen Konstruktionen mit NAT wie dieser:
/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
Und das ist noch nicht alles, jetzt kann man mehrere Server Weiterleitungen angeben, was bei der DNS-Failover hilft.
Die intelligente Verarbeitung von DNS ermöglicht es, mit der Einführung von IPv6 im Unternehmensnetz zu beginnen. Davor habe ich das nicht gemacht, weil ich eine Reihe von DNS-Namen in lokale Adressen auflösen musste, und das war in IPv6 ohne ziemliche Umwege nicht möglich.
Quelle: habr.com
