User guide
DNS Server Sentinel documentation
Use this guide to install, configure, run, and test DNS Server Sentinel in Service or Portable mode.
Quick start
- Download and extract the ZIP package.
- Run the Admin application included in the package.
- Download the Service edition for a Windows Service, or the Portable edition for a project-local DNS server.
- Create or choose a configuration file.
- Add a zone and records.
- Start the service or launch portable mode.
Admin app
The Admin app is the graphical control panel for DNS Server Sentinel. Use it to edit zones and DNS records, manage the Windows Service edition, launch the Portable edition, open settings, view basic statistics, inspect logs when enabled, and install a Pro license.
The Service package includes DnsServerSentinel.Admin.Service.exe. The Portable package includes DnsServerSentinel.Admin.Portable.exe. Both edit the same JSON configuration format, but each edition is tailored to its runtime mode.
Service mode
The Service edition installs DNS Server Sentinel as a Windows Service named DnsServerSentinel. Use it when the DNS server should run continuously in the background.
Default system paths
- Configuration:
C:\ProgramData\DnsServerSentinel\dns-config.json - Logs:
C:\ProgramData\DnsServerSentinel\Logs\
Portable mode
The Portable edition starts the DNS service process directly without installing a Windows Service. It is useful for development, demos, and project-specific DNS configurations.
For practical scenarios, see Portable DNS Server for Windows and DNS Server for Developers.
& ".\DnsServerSentinel.Service.exe" --portable --config ".\.sentinel\dns-config.json"
If logs are enabled, Admin adds the --logs argument. If logs are disabled, the argument is omitted.
License
DNS Server Sentinel uses offline license keys. The Admin app verifies the key locally using the product public key.
- Without Pro, both editions run in Free mode.
- Free mode answers DNS queries for 48 hours from each server start.
- After 48 hours, the server stops resolving DNS requests. Stop and start the Windows Service, or close and relaunch portable mode, to resume DNS resolution.
- Pro licenses are bound to the Machine ID shown in
Settings > License. - Pro removes the 48-hour runtime limit on the licensed machine.
- Install a license from
Settings > License. - Service licenses are stored in
C:\ProgramData\DnsServerSentinel\license.key. - Portable licenses are stored next to the selected portable configuration file.
How to buy and activate Pro
Pro removes the 48-hour Free runtime limit on the licensed machine. The license is generated for the Machine ID shown by the Admin app.
- Open the Admin app on the machine where DNS Server Sentinel will run.
- Open
Settings > License. - Copy the Machine ID, or click the purchase link from the License page if available.
- Open the Buy Pro page and make sure the Machine ID field contains the correct value.
- Fill in the customer and billing details.
- Complete the payment with PayPal.
- After payment, the license request is reviewed and the Pro license key is sent to the email address used during purchase.
- Return to
Settings > License, paste the license key, and install it. - Restart the Service or relaunch Portable mode so the running server picks up the Pro license.
Configuration files
The configuration is JSON-based and shared by Admin, Service, and Portable mode. The server watches the file and reloads settings when possible.
| Setting | Default | Description |
|---|---|---|
| Bind IP | 0.0.0.0 | Listen on all IPv4 interfaces. |
| Port | 53 | Standard DNS port. |
| Forwarding | Off | Only local authoritative zones are answered unless enabled. |
| Logs | Off | Disk logging is optional. |
| Recursion allowlist | 127.0.0.1, ::1 | Only localhost can use recursive forwarding by default. |
Zones
A zone groups the records for a DNS namespace, such as example.local or 0.0.127.in-addr.arpa.
Name servers and SOA
Use the zone name server window to configure optional SOA and NS metadata. The Admin UI lets users type local parts like ns1 and shows the zone suffix next to the field.
| Field | Example | Meaning |
|---|---|---|
| Primary NS | ns1 | Main authoritative server for the zone. |
| Admin Mailbox | admin | Responsible mailbox, stored in DNS SOA format. |
| Serial | 2026053001 | Zone version. Increase it when publishing a zone change. |
| Refresh, Retry, Expire, TTL | 3600 | Time values in seconds. |
Records
Records can be edited inline in the grid or through the structured editor. Invalid rows are highlighted in light red.
| Type | Purpose | Value example |
|---|---|---|
| A | IPv4 address | 192.168.1.10 |
| AAAA | IPv6 address | 2001:db8::10 |
| CNAME | Alias to another host | www |
| MX | Mail exchange | 10 mail |
| SRV | Service discovery | 10 5 5060 sip |
| PTR | Reverse DNS target | mail.example.local |
| CAA | Certificate authority policy | 0 issue letsencrypt.org |
| NAPTR | Service rewrite rules | 100 10 U E2U+sip !^.*$!sip:info@example.local! |
Wildcards
* = any direct name under the zone
*.wild = any direct name under wild.example.local
Forwarding and cache
Forwarding sends unanswered local queries to upstream DNS servers. Cache stores forwarded answers until their TTL expires.
- Use forwarding for normal internet DNS resolution.
- Use cache to reduce repeated upstream traffic.
- TCP fallback retries upstream UDP responses when they are truncated.
- Global fallback A/AAAA can return a configured IP for unmatched local requests.
Protections
Protections limit traffic and control who can use recursive forwarding.
- Max UDP/TCP query size: drops or closes oversized queries.
- Rate per minute: limits requests from the same client IP.
- Max TCP clients: caps concurrent TCP clients.
- Recursion allowlist: restricts forwarding to trusted clients.
- Ignored domains: silently drops matching domains or subdomains.
Ignored domains
Ignored domains are not answered. Sentinel silently drops matching requests instead of returning an error response.
| Pattern | Matches | Does not match |
|---|---|---|
roblox.com | roblox.com and every subdomain below it | notroblox.com |
*.example.local | Direct subdomains of example.local | The apex example.local |
ads.example.local | ads.example.local and nested subdomains | example.local |
Global fallback
Global fallback can answer unmatched local A or AAAA requests with a configured address. Use it only when you intentionally want unknown names to resolve to a controlled destination.
- A fallback returns the configured IPv4 address for unmatched A queries.
- AAAA fallback returns the configured IPv6 address for unmatched AAAA queries.
- Disable fallback when you prefer NXDOMAIN or forwarding behavior.
Logs and stats
Logs are disabled by default. Enable logs from Settings when troubleshooting or observing server behavior. The Stats panel reads recent log lines and summarizes queries, forwarding, cache, listeners, and errors.
Troubleshooting
Port 53 is already in use
Stop the other DNS service, change the Sentinel port, or run Sentinel on a machine/interface where port 53 is available.
Forwarding returns REFUSED
Check that forwarding is enabled and that the client IP is present in the recursion allowlist.
A record row is red
The row contains invalid DNS data. Hover the cell to read the validation message, then correct the name, type, value, or TTL.