Suppose you are using your Cisco router as a DNS server, and you would like to have certain domains redirected to specific servers for their lookups. This would be useful for a remote VPN site that needs to look up internal hostnames from other sites, but doesn't want to use the other site's DNS server for internet lookups. You could also use this as a centralized way of banner blocking.
This example works for any hosts in the ".local" domain (ie: myhost.local) and any PTR lookups for 192.168.x.x IPs. Note with this setup, you do not use the ip name-server x.x.x.x global command.
ip dns name-list 100 permit .*.local ip dns name-list 100 permit .*.168.192.IN-ADDR.ARPA ip dns view default domain name-server 220.127.116.11 domain name-server 18.104.22.168 ip dns view INTERNAL domain name-server 10.10.10.5 ip dns view-list DNS-SERVERS view INTERNAL 10 restrict name-group 100 view default 100
When a host queries the DNS server, it checks to see if the query matches name-list 100. If it matches, it queries the INTERNAL group of servers. Otherwise, it queries the default group. Note that "default" is actually a keyword. It refers to the same set of nameservers that the router will use for lookups when executing commands (ie "ping www.google.ca").