Cisco IOS: DNS-Views

Heute lese ich im IPExpert-Blog über DNS-Views und sage mir, “Hey, darüber habe ich doch auch gerade geschrieben”. Nun, geschrieben schon, aber noch nicht veröffentlicht, was ich hiermit nachhole:

Über den im IOS eingebauten DNS-Server habe ich schon vor längerer Zeit berichtet. Seit einiger Zeit (genauer gesagt seit IOS 12.4(9)T) unterstützt das IOS auch sogenannte DNS-Views. Dabei werden die DNS-Anfragen in Abhängigkeit der angefragten Domains an unterschiedliche DNS-Server gesendet. Ich benutze das z.B. für Wartungszugänge zu Kunden. Wenn eine Anfrage an server.firma1.local am DNS-Server ankommt, wird die Anfrage über das Firma1-VPN weitergeleitet, bei allen anderen Anfragen aber an den DNS-Server des Providers.

Die Konfiguration startet mit den DNS Name-Lists. In diesen werden per Regular Expression die Domain-Namen oder FQDNs beschrieben, für die eine abweichende Behandlung gewünscht ist. In meinem Fall ist dies eine Namensauflösung durch einen anderen DNS-Server:

ip dns name-list 1 permit .firma.local

Als nächstes werden die DNS-Views konfiguriert:

ip dns view FIRMA
 logging
 dns forwarder 10.11.12.13
 dns forwarding source-interface Vlan254
ip dns view default
 logging
 domain timeout 2
 dns forwarder 8.8.8.8

In meinem Beispiel gibt es eine dedizierte View FIRMA und eine optionale default-View.
In der View FIRMA setze ich den zuständigen DNS-Server und die Source-Adresse der Anfrage, damit die Anfrage auch wirklich durch den VPN-Tunnel gesendet wird. Die Default-View verwendet den Google DNS-Server. Für beide Views wird das Logging aktiviert.

Die Verwendung der beiden Views muss als nächstes aktiviert werden:

ip dns view-list DNS
 view FIRMA 10
  restrict name-group 1
 view default 1000
!
ip dns server view-group DNS

Die View-List mit dem Namen DNS spezifiziert, welche View für welche Domains verwendet werden soll. Die View FIRMA wird dabei nur für die Domains verwendet, die in der name-list 1 spezifiziert wurden. Die View default wird für den gesamten Rest verwendet. Die “10” und “1000” gibt dabei die Priorität der Einträge in der List an.
Die View-List kann dann entweder Interface-basiert, oder global (wie in diesem Beispiel) angewendet werden.

Durch das Logging kann man kontrollieren ob die Views verwendet werden:

Feb 20 19:41:34.213 CET: %DNS-6-LOG_ACCESS: DNS View default used for client 10.255.253.74/1904, querying A 'time.apple.com'
Feb 20 19:42:41.301 CET: %DNS-6-LOG_ACCESS: DNS View FIRMA used for client 10.255.250.2/62733, querying AAAA 'www.firma.local'

5 Replies to “Cisco IOS: DNS-Views”

  1. Ausgezeichneter Beitrag!
    Sofort stellt sich mir noch die Frage wie *sicher* dieser DNS-Dienst auf einem IOS-Router ist. Kann man sich trauen einen public-DNS-Server auf Basis eines Routers aufzubauen (mal ungeachtet der Performance)?

    1. Als “Bauchgefühl” würde ich das eher nicht machen. Hauptsächlich aber auch, weil die Konfiguration gegenüber einem “richtigen” DNS-Server wie z.B. BIND doch zu kompliziert ist.

        1. Unbound ist auch schon länger in meiner Linksammlung. Bisher habe ich den aber noch nicht benutzt.
          Und Glückwunsch zu Deinem Ruhm bei Cisco. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.