RouterOS handleiding

DNS

Introduction

Domain Name System (DNS) wordt meestal het telefoonboek van het internet genoemd. Met andere woorden: DNS is een database die tekenreeksen (bekend als hostnamen), zoals mikrotik.com, koppelt aan een specifiek IP-adres, zoals 159.148.172.205 of 2a02:610:7501:2000::205

Een MikroTik-router met de DNS-functie ingeschakeld kan worden ingesteld als DNS-cache voor elke DNS-compatibele client. Bovendien kan een MikroTik-router worden opgegeven als primaire DNS-server in de instellingen van zijn DHCP-server. Wanneer externe verzoeken zijn toegestaan, beantwoordt een MikroTik-router TCP- en UDP-DNS-verzoeken op poort 53.

Wanneer er zowel statische als dynamische servers zijn ingesteld, hebben statische serververmeldingen de voorkeur; dit betekent echter niet dat er altijd een statische server wordt gebruikt (als er bijvoorbeeld eerder een query van een dynamische server is ontvangen en er daarna een statische is toegevoegd, krijgt de dynamische vermelding de voorkeur).

Tip Wanneer bij de DNS server allow-remote-requests wordt gebruikt, zorg er dan voor dat je de toegang tot je server via de TCP- en UDP-poort 53 beperkt tot alleen bekende hosts.

Er zijn verschillende opties voor het beheren van DNS-functionaliteit op uw LAN - publieke DNS gebruiken, de router als cache gebruiken, of de DNS-configuratie ongemoeid laten. Laten we als voorbeeld de volgende opstelling nemen: internetprovider (ISP) → Gateway (GW) → Local area network (LAN). De GW is een apparaat op basis van RouterOS met de standaardconfiguratie:

  • Je configureert geen DNS-servers in de netwerkconfiguratie van de "GW" DHCP server. Het apparaat stuurt de van de ISP ontvangen configuratie van het DNS-server-IP-adres door naar LAN-apparaten.
  • Je configureert DNS-servers in de netwerkconfiguratie van de "GW" DHCP server. Het apparaat geeft de geconfigureerde DNS-servers door aan LAN-apparaten (ook "/ip/dns/set allow-remote-requests=yes*" moet* zijn ingeschakeld).
  • "dns-none" is geconfigureerd onder DNS-servers in de netwerkconfiguratie van de "GW" DHCP-server - het apparaat stuurt geen enkele dynamische DNS-server door naar LAN-apparaten.

DNS-configuratie

De DNS-faciliteit wordt gebruikt om domeinnaamresolutie te bieden voor de router zelf en voor de clients die ermee verbonden zijn.

Property Description
allow-remote-requests (yes | no; Standaard: no) Geeft aan of de router als DNS-cache voor externe clients mag worden gebruikt. Anders gebruikt alleen de router zelf de DNS-configuratie.
address-list-extra-time (time; Standaard: 0s) Extra tijd die aan de TTL wordt toegevoegd bij het aanmaken van een address-list-entry.
cache-max-ttl (time; Standaard: 1w) Maximale time-to-live voor cacherecords. Met andere woorden, cacherecords verlopen onvoorwaardelijk na de tijd cache-max-TTL. Kortere TTLs die van DNS-servers worden ontvangen, worden gerespecteerd.
cache-size (integer[64..4294967295]; Standaard: 2048) Geeft de grootte van de DNS-cache in KiB aan.
max-concurrent-queries (integer; Standaard: 100) Specificeert hoeveel gelijktijdige queries zijn toegestaan.
max-concurrent-tcp-sessions (integer; Standaard: 20) Specificeert hoeveel gelijktijdige TCP sessies zijn toegestaan.
max-udp-packet-size (integer [50..65507]; Standaard: 4096) Maximale grootte van een toegestaan UDP-packet.
mdns-repeat-ifaces (lijst met interfaces; Standaard: ) Zodra een interface in deze lijst een mDNS-pakket ontvangt, stuurt hij dit door naar alle andere interfaces in deze lijst. Ondersteunt alleen IPv4.
query-server-timeout (time; Standaard: 2s) Specificeert hoe lang er wordt gewacht op een antwoord van een server op een query.
query-total-timeout (time; Standaard: 10s) Specificeert hoe lang er in totaal op een antwoord op een query wordt gewacht. Let op dat deze instelling moet worden geconfigureerd met inachtneming van "query-server-timeout" en het aantal gebruikte DNS servers.
servers (list of IPv4/IPv6 addresses@vrf; Default: ) Lijst met IPv4-/IPv6-adressen van DNS-servers
cache-used (integer) Toont de momenteel gebruikte cachegrootte in KiB
dynamic-server (IPv4/IPv6 list) Lijst met dynamisch toegevoegde DNS-servers van verschillende services, bijvoorbeeld DHCP.
doh-max-concurrent-queries (integer; Default: 50) Specificeert hoeveel gelijktijdige DoH queries zijn toegestaan.
doh-max-server-connections (integer; Default: 5) Specificeert hoeveel gelijktijdige verbindingen met de DoH server zijn toegestaan.
doh-timeout (time; Default: 5s) Specificeert hoe lang er wordt gewacht op een antwoord van de DoH server op een query.
use-doh-server (string; Default: ) Geeft aan welke DoH-server voor DNS-queries moet worden gebruikt. De DoH-functionaliteit overschrijft het gebruik van "servers" indien opgegeven. De server moet worden opgegeven met een "https://"-prefix. Ondersteunt slechts één DoH-server.
verify-doh-cert (yes | no; Default: no) Geeft aan of de DoH-server moet worden gevalideerd wanneer er een wordt gebruikt. Hiervoor wordt de lijst "/certificate" gebruikt om de geldigheid van de server te verifiëren.
vrf (vrf; Default: main) Geeft de VRF aan die de DNS-resolver moet gebruiken. De DNS-resolver verwerkt alleen aanvragen die afkomstig zijn uit de aangewezen VRF of van de resolver zelf.
[admin@MikroTik] > ip dns print         
                      servers: 
              dynamic-servers: 10.155.0.1
               use-doh-server: 
              verify-doh-cert: no
   doh-max-server-connections: 5
   doh-max-concurrent-queries: 50
                  doh-timeout: 5s
        allow-remote-requests: yes
          max-udp-packet-size: 4096
         query-server-timeout: 2s
          query-total-timeout: 10s
       max-concurrent-queries: 100
  max-concurrent-tcp-sessions: 20
                   cache-size: 2048KiB
                cache-max-ttl: 1d
                   cache-used: 48KiB

Dynamische DNS-servers worden verkregen uit verschillende voorzieningen die in RouterOS beschikbaar zijn, bijvoorbeeld de DHCP-client, VPN-client, IPv6 Router Advertisements, enz.

Servers worden in wachtrijvolgorde verwerkt - statische servers als een geordende lijst, dynamische servers als een geordende lijst. Wanneer de DNS-cache een verzoek naar de server moet sturen, probeert deze de servers een voor een tot een van hen antwoordt. Daarna wordt deze server gebruikt voor alle typen DNS-verzoeken. Dezelfde server wordt gebruikt voor alle typen DNS-verzoeken, bijvoorbeeld de typen A en AAAA. Als u alleen dynamische servers gebruikt, kunnen de door DNS geretourneerde resultaten na een herstart veranderen, omdat servers in een andere volgorde in de IP/DNS-instellingen geladen kunnen worden door verschillende snelheden waarmee ze van de hierboven genoemde voorzieningen worden ontvangen.

Als de server die werd gebruikt op enig moment onbereikbaar wordt en geen DNS-antwoorden meer kan geven, herstart de DNS-cache het opzoekproces van de DNS-server en doorloopt hij de lijst met opgegeven servers opnieuw.

DNS-cache

Dit menu biedt twee lijsten met DNS-records die op de server zijn opgeslagen:

  • "/ip/dns/cache": dit menu biedt een lijst van in de cache opgeslagen DNS-items waarmee de RouterOS-cache kan antwoorden op clientverzoeken;
  • "/ip/dns/cache/all": Dit menu biedt een volledige lijst van alle in de cache opgeslagen DNS-records, inclusief bijvoorbeeld ook PTR-records.

Tip Je kunt de DNS-cache legen met het commando: /ip/dns/cache/flush.

DNS Static

De MikroTik RouterOS DNS-cache beschikt over een extra ingebouwde DNS-serverfunctie waarmee u meerdere typen DNS-records kunt configureren die gebruikt kunnen worden door DNS-clients die de router als hun DNS-server gebruiken. Deze functie kan ook worden gebruikt om onjuiste DNS-informatie aan uw netwerkclients te verstrekken. Zo kan elk DNS-verzoek voor een bepaalde set domeinen (of voor het hele internet) naar uw eigen pagina worden herleid.

[admin@MikroTik] /ip/dns/static/add name=www.mikrotik.com address=10.0.0.1

De server kan DNS-verzoeken ook oplossen op basis van eenvoudige reguliere expressies, zodat meerdere verzoeken met dezelfde vermelding kunnen worden gematcht. Als een vermelding niet voldoet aan de DNS-naamgevingsstandaarden, wordt deze als een reguliere expressie beschouwd. De lijst is geordend en wordt van boven naar beneden gecontroleerd. Reguliere expressies worden als eerste gecontroleerd, daarna de gewone records.

Gebruik regex om DNS-verzoeken te matchen:

[admin@MikroTik] /ip/dns/static/add regexp=".*mikrotik.*" address=10.0.0.2

Als de lijst met statische DNS-vermeldingen overeenkomt met de gevraagde domeinnaam, gaat de router ervan uit dat deze router verantwoordelijk is voor elk type DNS-verzoek voor die specifieke naam. Als er bijvoorbeeld alleen een "A"-record in de lijst staat, maar de router ontvangt een "AAAA"-verzoek, dan antwoordt hij met een "A"-record uit de statische lijst en zal hij de upstream-server bevragen voor het "AAAA"-record. Als er een record bestaat, wordt het antwoord doorgestuurd. Zo niet, dan antwoordt de router met een "ok" DNS-antwoord zonder records erin. Als u domeinnaamrecords van de upstream-server wilt overschrijven met onbruikbare records, dan kunt u bijvoorbeeld een statische vermelding voor die specifieke domeinnaam toevoegen en er een dummy IPv6-adres voor opgeven, "::ffff".

Toon alle geconfigureerde DNS-entries als een geordende lijst:

[admin@MikroTik] /ip/dns/static/print 
Columns: NAME, REGEXP, ADDRESS, TTL
# NAME             REGEXP       ADDRESS   TTL
0 www.mikrotik.com               10.0.0.1  1d 
1                  [*mikrotik*]  10.0.0.2  1d
Property Description
address (IPv4/IPv6) Het adres dat gebruikt zal worden voor records van het type "A" of "AAAA".
cname(string*)* Aliasnaam voor een domeinnaam.
forward-to Het IP-adres van een domeinnaamserver waarnaar een bepaald DNS-verzoek moet worden doorgestuurd.
mx-exchange (string) De domeinnaam van de MX-server.
name (string) Domeinnaam.
srv-port (integer; Default: 0) De TCP- of UDP-poort waarop de dienst te vinden is.
srv-target De canonieke hostnaam van de machine die de dienst levert eindigt op een punt.
text (string*)* Tekstuele informatie over de domeinnaam.
type(A | AAAA | CNAME | FWD | MX | NS | NXDOMAIN | SRV | TXT ; Default: A) Type van het DNS-record.
address-list (string*)* Naam van de Firewall address list waaraan het adres dynamisch moet worden toegevoegd wanneer een verzoek overeenkomt met het item. Het item wordt uit de address list verwijderd wanneer de TTL verloopt.
comment(string*)* Opmerking over het domeinnaamrecord.
disabled (yes | no; Standaard: yes) Of het DNS-record actief is.
match-subdomain (yes | no; Standaard: no) Of het record ook aanvragen voor subdomeinen matcht.
mx-preference (integer; Standaard: 0) Voorkeur van het betreffende MX-record.
ns(string) Naam van de autoritatieve domeinnaamserver voor het betreffende record.
regexp (regex) Reguliere expressie waartegen domeinnamen geverifieerd moeten worden.
srv-priority (integer; Default: 0) Prioriteit van het betreffende SRV-record.
srv-weight (integer; Default: 0) Gewicht van het betreffende SRV-record.
ttl (time; Default: 24h) Maximale time-to-live voor gecachte records.

Info Voor elke statische A- en AAAA-record wordt er automatisch een PTR-record in de cache toegevoegd.

Waarschuwing Regexp is hoofdlettergevoelig, maar DNS-verzoeken zijn dat niet, dus zet RouterOS DNS-namen om naar kleine letters voordat statische vermeldingen worden gematcht. U moet regex alleen met kleine letters schrijven. Het matchen van reguliere expressies is aanzienlijk trager dan platte tekstvermeldingen, dus het wordt aangeraden om het aantal regels met reguliere expressies te beperken en de expressies zelf te optimaliseren.

Waarschuwing Wees voorzichtig wanneer u regex configureert via gemengde gebruikersinterfaces - CLI en GUI. Het toevoegen van de vermelding zelf kan escape-tekens vereisen wanneer dit vanuit de CLI gebeurt. Het wordt aanbevolen om een vermelding toe te voegen en het print-commando uit te voeren om te controleren of de regex tijdens het toevoegen niet is gewijzigd.

DNS over HTTPS (DoH)

RouterOS ondersteunt DNS over HTTPS (DoH). DoH gebruikt het HTTPS-protocol om DNS-verzoeken te verzenden en te ontvangen voor een betere gegevensintegriteit. Het belangrijkste doel is privacy te bieden door "man-in-the-middle"-aanvallen (MITM) uit te sluiten.

Video: DoH instellen

Configureer de DoH-server:

/ip/dns/set use-doh-server=DoH_Server_Query_URL verify-doh-cert=yes

Info Het is mogelijk om de ingebouwde store met certificaatautoriteiten te gebruiken voor de validatie van het DoH-servercertificaat, zonder dat u het betreffende rootcertificaat handmatig hoeft te importeren.

Info Er wordt slechts één DoH-server ondersteund.

Merk op dat u ten minste één gewone DNS-server geconfigureerd moet hebben zodat de router de DoH-hostnaam zelf kan resolven.

/ip/dns/set servers=1.1.1.1

Als u geen enkele dynamische of statische DNS-server hebt geconfigureerd, voeg dan een statische DNS-vermelding toe voor de domeinnaam van de DoH-server, zoals hier:

/ip/dns/static/add address=IP_Address name=Domain_Name

Tip Als er een DoH server wordt gebruikt (de DoH DNS-naam kan worden geresolved), dan is dat op dat moment de enige werkende DNS-service en worden de standaard DNS servers uit de lijst IP/DNS servers niet gebruikt.

Tip Als /certificate/settings/set crl-use op yes staat, controleert RouterOS de CRL voor elk certificaat in een certificaatketen. Daarom moet een volledige certificaatketen op een apparaat worden geïnstalleerd - te beginnen bij de Root CA, de tussenliggende CA's (als die er zijn) en het certificaat dat voor een specifieke service wordt gebruikt.

Zo bevatten de volledige ketens van Google DoH, Cloudflare en OpenDNS drie certificaten, terwijl NextDNS er vier heeft.

Info De ARM64-, x86- en CHR-apparaten onderhandelen over HTTP/2 bij communicatie met een DoH-server. Als de server dat ondersteunt, gebruikt de router HTTP/2 voor DNS over HTTPS-query's, wat betere multiplexing en lagere latency biedt dan HTTP/1.1. Als een van beide kanten geen HTTP/2 ondersteunt, valt de verbinding terug op HTTP/1.1.

Compatibiliteit van DoH-diensten

Compatibele DoH-diensten werken op alle apparaatarchitecturen

  • Cloudflare
  • Control D
  • Google
  • NextDNS
  • OpenDNS

DoH-diensten die alleen werken op ARM64-, x86- en CHR-apparaten

  • Mullvad
  • UncensoredDNS
  • Quad9

Adlist

Adlist is een integraal onderdeel van advertentieblokkering op netwerkniveau en bestaat uit een samengestelde verzameling domeinnamen die bekendstaan om het aanbieden van advertenties. Deze functie werkt door Domain Name System (DNS)-resolutie te gebruiken om A- en AAAA-verzoeken naar deze domeinen te onderscheppen. Wanneer een clientapparaat een DNS-server bevraagt voor een domein dat op de adlist staat, wordt het DNS-resolutieproces gewijzigd. In plaats van het werkelijke IP-adres van het advertentiedomein terug te geven, antwoordt de DNS-server met het IP-adres 0.0.0.0. Hiermee wordt het verzoek effectief null-routed, aangezien 0.0.0.0 een niet-routeerbaar meta-adres is dat een ongeldig, onbekend of niet-toepasbaar doel aanduidt. Door advertentiegerelateerde verzoeken op deze manier om te leiden, zorgt de adlist-functie ervoor dat advertentie-inhoud niet wordt geladen, wat de netwerkprestaties verbetert en de gebruikerservaring ten goede komt doordat ongewenst advertentieverkeer wordt verminderd.

Video: Adlist instellen

Waarschuwing Vergroot voor het configureren de DNS-cache, aangezien deze wordt gebruikt om adlist-vermeldingen op te slaan. Als de limiet wordt bereikt, wordt in het topic DNS,error een fout afgedrukt: "adlist read: max cache size reached"

Waarschuwing Adlist wordt opgeslagen in het interne geheugen van het apparaat. Zorg ervoor dat er genoeg vrije ruimte is om de gewenste adlist op te slaan.

Info Er worden maximaal 64 adlists ondersteund.

Property Description
url Wordt gebruikt om de URL van een adlist op te geven.
ssl-verify Geeft aan of het SSL-certificaat van de Adlist URL-server moet worden gevalideerd. Hiervoor wordt de lijst "/certificate" gebruikt om de geldigheid van de server te verifiëren.
match-count Aantal overeenkomende DNS-naamaanvragen.
name-count Aantal DNS-namen dat uit de Adlist is geïmporteerd.
file Wordt gebruikt om een lokaal bestandspad op te geven waaruit adlist-gegevens worden gelezen.
pause Pauzeer tijdelijk het gebruik van alle adlists.
reload Controleert op updates voor alle lijsten; als er updates worden gevonden, wordt de lijst bijgewerkt en worden items verwijderd of toegevoegd waar nodig. De lijsten worden bij een reload niet volledig opnieuw gedownload, in plaats daarvan worden alleen de noodzakelijke updates uitgevoerd. Belangrijk: het is niet verplicht om reload te gebruiken om de lijsten bij te werken, Adlist controleert eens per vier uur op nieuwe updates.

Whitelist voor Adlist

Om bepaalde domeinen uit te sluiten van Adlist, moet u een statisch DNS FWD-item aanmaken, bijvoorbeeld /ip/dns/static/add name=bar.test type=FWD. Als zo'n item aanwezig is, wordt de query door de router beantwoord als deze een relevant statisch DNS-item heeft /ip/dns/static/add name=bar.test type=A, of anders, als er geen statische regel aanwezig is, doorgestuurd naar de volgende DNS, hetzij dynamisch, hetzij een die is geconfigureerd onder /ip/dns/set servers=. FWD-items worden ook door DoH ondersteund.

Configuratievoorbeelden

Op URL gebaseerde adlist

/ip/dns/adlist/add url=https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts ssl-verify=no

Om te zien hoeveel domeinnamen aanwezig zijn en gematcht worden, kunt u uitvoeren:

/ip/dns/adlist/print 
Flags: X - disabled 
0 url="https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts" ssl-verify=no match-count=122 name-count=164769

Lokaal gehoste adlist

Om uw adlist te maken, kunt u een tekstbestand met de domeinen aanmaken. Voorbeeld:

0.0.0.0 example1.com
0.0.0.0 eu1.example.com
0.0.0.0 ex.com
0.0.0.0 com.example.com

Info U kunt het txt-bestand op uw pc aanmaken, maar het is ook mogelijk om het in RouterOS aan te maken met de volgende commando's

"/file/add name=host.txt", en daarna kun je "/file/edit host.txt contents" uitvoeren nadat je items hebt toegevoegd. Druk op "ctrl o" om de items op te slaan.

Om een bestand aan adlist toe te voegen:

/ip/dns/adlist/add file=host.txt

Info U kunt met /ip/dns/adlist/print controleren of het bestand correct is opgemaakt; de resultaten tonen hoeveel hostnamen u hebt toegevoegd. De hostnaamindeling moet overeenkomen met de indeling uit het vorige voorbeeld.

/ip/dns/adlist/print 
Flags: X - disabled 
 0   file=host.txt match-count=0 name-count=4 

Forwarders

Met DNS Forwarders kan een gebruiker een benoemde DNS-forwarder configureren die als forward-to-waarde voor statische FWD-vermeldingen gebruikt kan worden.

Voor elke Forwarder is het mogelijk meerdere reguliere upstream- en DoH-servers te configureren. Geconfigureerde forwarder-servers worden volgens het round-robin-algoritme gebruikt: voor elke query wordt de volgende server gebruikt om de DNS-naam op te lossen.

Forwarder-configuratie

In de sectie /ip/dns/forwarders kunnen forwarders worden toegevoegd, gewijzigd of verwijderd.

Property Description
name (string; Standaard: ) Naam van de forwarder.
dns-servers (string; Default: ) Een IP-adres of een DNS-naam van een domeinnaamserver. Kan meerdere records bevatten, bijvoorbeeld dns-servers=1.1.1.1,8.8.8.8,local.dns
doh-servers(string; Default: ) Een URL van een DoH-server. Kan meerdere records bevatten.
verify-doh-cert (yes | no*;* Default: yes) Geeft aan of de DoH-server moet worden gevalideerd wanneer er een wordt gebruikt. Hiervoor wordt de lijst "/certificate" gebruikt om de geldigheid van de server te verifiëren.

Configuratievoorbeeld

Configureer/voeg een forwarder toe:

/ip/dns/forwarders
add dns-servers=1.1.1.1,local.dns doh-servers=https://dns.google/dns-query name=forwarder1

Configureer/voeg een statische DNS FWD-regel toe:

/ip/dns/static
add forward-to=forwarder1 name=mikrotik.com type=FWD

Telkens wanneer een router nu een verzoek ontvangt om mikrotik.com te resolven, wordt het verzoek via een round-robin-algoritme doorgestuurd naar 1.1.1.1, local.dns of de Google DoH-server.

mDNS

RouterOS ondersteunt Multicast DNS (mDNS) voor het ontdekken van services in het lokale netwerk. Standaard werkt mDNS binnen één subnet. Met de mDNS repeater-functie kan de mDNS-functionaliteit worden uitgebreid over verschillende interfaces of VLAN's met behulp van de eigenschap "mdns-repeat-ifaces".

Impact van het gebruik van mDNS Repeater

  • Service discovery over subnetten heen: apparaten in verschillende subnetten of VLAN's kunnen elkaar ontdekken, wat het vinden van diensten (bijvoorbeeld printers, bestandsdeling) verbetert.
  • Meer netwerkverkeer: een mDNS-repeater kan het multicastverkeer verhogen, wat tot congestie kan leiden, vooral in grotere netwerken met veel apparaten.

De mDNS repeater wordt vaak gebruikt met apparaten zoals:

  • Apple-ecosysteem (AirPrint, AirPlay).
  • Smart Home apparaten (Thread, IoT).
  • Chromecast en mediastreaming.
  • Avahi (Linux/Unix).

Om de mDNS-repeater tussen interfaces in te schakelen, zodat apparaten die op deze interfaces zijn aangesloten elkaar via mDNS kunnen ontdekken, gebruikt u het volgende commando:

/ip/dns/set mdns-repeat-ifaces=<interface1>,<interface2>

Info mDNS repeater vereist interfaces die multicast ondersteunen (bijv. Ethernet, VLAN, bridge). Tunnelinterfaces zoals WireGuard worden niet ondersteund.

Momenteel wordt alleen IPv4 ondersteund.

Waarschuwing De MikroTik mDNS Repeater is een lokale dienst die multicastpakketten onderschept om ze opnieuw uit te zenden. Deze vereist een "input"-regel. mDNS-multicastverkeer doorloopt de "forward"-chain niet. Als u strikte firewallregels hebt die uw router tegen lokale subnetten beschermen, moet u mDNS-verkeer expliciet toestaan vóór elke drop - toegestaan om UDP-poort 5353-verkeer op de "input"-chain te ontvangen.

Bron

Bijgewerkt op 2026-08-22.