Skip to content

DNS Load Balancer Plugin

Overview

The DNS Load Balancer plugin uses dnsdist to distribute DNS queries across multiple resolvers with rules, address lists, and domain lists.

Plugin ID: dnslb

Service Control

GET /api/dnslb/status
POST /api/dnslb/start
POST /api/dnslb/stop
POST /api/dnslb/restart

DNS Servers (Backends)

GET /api/dnslb/servers
POST /api/dnslb/servers
{
  "name": "resolver1",
  "address": "8.8.8.8",
  "port": 53
}
DELETE /api/dnslb/servers/:name

Rules

GET /api/dnslb/rules
POST /api/dnslb/rules
{
  "name": "Block malware domains",
  "type": "domain_list",
  "list": "malware",
  "action": "drop"
}
POST /api/dnslb/rules/reorder
{ "order": ["rule1", "rule2"] }
DELETE /api/dnslb/rules/:id

Address Lists

GET /api/dnslb/address-lists
POST /api/dnslb/address-lists
{
  "name": "allowed_clients",
  "entries": ["10.0.0.0/8", "192.168.0.0/16"]
}
DELETE /api/dnslb/address-lists/:name

Domain Lists

GET /api/dnslb/domain-lists
POST /api/dnslb/domain-lists
{
  "name": "malware",
  "domains": ["bad.example.com", "malware.example.org"]
}
POST /api/dnslb/domain-lists/reorder
DELETE /api/dnslb/domain-lists/:name

Stats & Config

GET /api/dnslb/stats
GET /api/dnslb/config
POST /api/dnslb/config
{ "config": "..." }
POST /api/dnslb/sync-files

Multi-Server Management

Manage multiple dnsdist servers from a single panel:

GET /api/dnslb/multi-servers
POST /api/dnslb/multi-servers
{
  "name": "Edge DNS EU",
  "host": "eu-dns.example.com",
  "port": 2087,
  "token": "secret"
}
DELETE /api/dnslb/multi-servers/:id
POST /api/dnslb/multi-servers/:id/test
POST /api/dnslb/multi-servers/:id/sync
POST /api/dnslb/multi-servers/sync-all

Dashboard (Proxied)

The dnsdist web dashboard is proxied through the panel:

GET/POST /api/dnslb/dashboard/*path