Stopping the lookup before the connection
Almost every connection to a named site begins with a DNS query (see the DNS lesson). Malware and phishing sites need names too. If the resolver refuses to give their addresses, the connection does not start and the other web controls have nothing to do. That is the idea of DNS-layer security. Cisco's service for it has been called Umbrella. Product names and packaging change, so check the current naming in the documentation.
How the edge applies it
On a WAN Edge (cEdge/vEdge) the feature is built from an SD-WAN Manager policy that is attached to service VPNs. The edge intercepts DNS queries from clients in those VPNs and forwards them to the cloud resolver, instead of letting them go to the DNS server the client was given.
- A client at BR-01 in VPN 10 asks for a name. The query goes to the router, which is the client's DNS path or sits in front of it.
- The DNS security policy matches the VPN. The edge checks the name against the local domain list.
- If the name is a listed local domain, the query goes to internal DNS as before.
- Otherwise it goes to the cloud resolver, with information that identifies the organisation (see below).
- The resolver compares the name with the organisation's policy. If it is blocked, the answer points to a block page or fails. If it is allowed, the true address comes back and the client connects.
On small screens, swipe sideways or focus the diagram and use the arrow keys.
Identifying the organisation to the service
The cloud service must know whose policy to apply. In SD-WAN the edge is registered with the service using credentials or an API token created in the cloud console, and queries carry an identity such as the device or network identity. Where you enter the token in SD-WAN Manager, and which identity options exist, depends on your release. Keep tokens out of documents and tickets: store them in the Manager only, and rotate them if exposed. This lesson does not show example secrets.
Local domains must stay local
A public cloud resolver does not know your private zones. If a query for corp.example.net or an Active Directory name goes to it, the answer is an error, and logins or file shares fail. The policy therefore has a list of local domains that bypass the cloud and go to internal DNS.
On small screens, swipe sideways or focus the diagram and use the arrow keys.
Include every private zone: reverse zones, split-horizon names and partner zones reached over the overlay. A missing entry usually shows up as one application that cannot resolve a name while the web works.
Encrypting the DNS path
Ordinary DNS is plain text on UDP or TCP port 53, so anyone on the path can read or alter it. The cloud service supports encrypting the path between the edge and the resolver. The name used by that service for its protocol is DNSCrypt. Check whether your release offers the option, and whether your platform and service combination supports it. It protects the path to the cloud. It does not change what the policy blocks.
Where it sits in the order of controls
DNS-layer blocking acts first, at the lookup. If a name is blocked, the connection does not happen, so URL filtering and the file scanning behind it do not see it. If a name is allowed, URL filtering and the other web controls still apply to the connection afterwards. The layers add up: DNS filtering is cheap and early, while URL filtering is more detailed.
The gaps worth knowing:
- IP-literal connections. There is no lookup, so DNS filtering cannot act.
- Other resolvers. A client or application that uses a different DNS server directly, or DNS over HTTPS to a public provider, goes around the edge's interception. If the policy needs to cover them, block those paths with firewall policy and keep clients on the intended resolver. Test with a client that has its own DNS settings.
- Cached answers. A name resolved before the block may keep working until its cache entry expires.
Why is DNS-over-HTTPS a problem for this design?
DNS over HTTPS looks like ordinary HTTPS traffic to a web server. The edge cannot tell it from browsing unless it knows the resolver's addresses or names. A browser configured to use such a resolver skips the cloud security policy entirely. Organisations that rely on DNS-layer security often block known public DoH resolvers and set the browser policy centrally.
If the cloud resolver cannot be reached
The edge depends on the resolver for every external name. If the path fails, queries can time out, and users see a total web outage even though the circuit is up. A release may let the edge fall back to another resolver, which keeps users working but loses the filtering. Failing (no answer) is safer for security, falling back is safer for availability. This is a design decision, so check what your release offers, decide on purpose, and test it by blocking the path in the lab.
Verifying the policy
- In SD-WAN Manager, confirm the DNS security policy is attached to the intended VPNs only (for example 10 and 30 in the lab, not 20 voice) and that the template push succeeded.
- Confirm the local domain list contains every private zone.
- From a client in the VPN, look up a public name and an internal name.
- Use the test domain the service provides for checking that blocking works. The service documents how: look it up in the current documentation, since names and addresses change.
- Confirm the event shows in the cloud console against the organisation's identity.
nslookup app.corp.example.net
nslookup www.example.orgRun on a client in VPN 10. The first name should answer from the internal DNS server. The second should answer from the cloud resolver's path. Compare the answering server's address in each output.
C:\>nslookup app.corp.example.net Server: dns.corp.example.net Address: 10.20.1.53 Name: app.corp.example.net Address: 10.20.1.20
Test yourself on DNS-layer security
After DNS security is enabled for VPN 10, the web works but domain logins to app.corp.example.net fail. What is the likely fix?
A user connects directly to http://203.0.113.45 and reaches a site the cloud policy blocks by name. Why?
Which control sees the connection first for an allowed name: DNS-layer security or URL filtering?
A browser on a branch PC uses DNS over HTTPS to a public provider, and a blocked domain loads. What do you check?