Zedmos

5.6 Services

The network services the appliance runs for the networks behind it: handing out addresses, answering names, distributing time, advertising IPv6, and scanning files.

Every service group ends with a Log File entry, and most have a Status page. When a service misbehaves, open its status page first and its log second — in that order, because the status page usually answers the question in one line.

DHCP: two backends, one at a time

The appliance can hand out addresses with Kea (the default) or with Dnsmasq, which does DNS and DHCP together. They do the same job; running both on the same network produces two servers answering one request, which is exactly as confusing as it sounds.

Take Kea unless you have a reason not to: it is what the interface editor configures when you switch on a DHCP server, and what the console's LAN setup uses. Take Dnsmasq when you want DHCP and DNS from one small service with per-host names, or on a very small appliance.

Kea DHCP

Kea DHCPv4 — /m/kea/dhcp4

Services: Kea DHCPv4
Services: Kea DHCPv4

Subnets and pools: for each network the appliance serves, the range it hands out, the router and DNS it announces, the lease time, and any reservations that pin a device to a fixed address by MAC.

Keep the pool clear of everything with a static address — the appliance itself, printers, switches. A pool that includes the router's own address is a fault the page will warn you about.

Kea DHCPv6 — /m/kea/dhcp6

Services: Kea DHCPv6
Services: Kea DHCPv6

The same for IPv6. Usually paired with Router Advertisements below: most IPv6 clients take their address from advertisements and only ask DHCPv6 for the extras.

Control API — /m/kea/ctrl_agent

Services: Kea control API
Services: Kea control API

Opens the command API of the DHCPv4 and DHCPv6 servers over HTTP or HTTPS, for tools such as kea-shell or Stork. The appliance itself does not need it. This Kea (3.2) has no separate control agent: each server listens on its own port and accepts requests only with the user name and password you enter here, which it reads from files the appliance keeps readable by root only. Choose a certificate from the trust store to serve HTTPS; keep plain HTTP on 127.0.0.1.

DDNS Agent — /m/kea/ddns

Services: Kea DDNS
Services: Kea DDNS

Registers leases into DNS, so a machine that just got an address is reachable by name.

Leases DHCPv4 / DHCPv6 — /leases/kea4, /leases/kea6

Services: Kea DHCPv4 leases
Services: Kea DHCPv4 leases

Who holds which address, since when, and until when. The first page to open when someone says "my machine has no network": either they have a lease, in which case the problem is elsewhere, or they do not, in which case it is here.

Services: Kea DHCPv6 leases
Services: Kea DHCPv6 leases

Log File — /log/core/kea

Services: Kea log
Services: Kea log

Dnsmasq DNS & DHCP

Services: Dnsmasq general
Services: Dnsmasq general

A single small service that answers DNS and hands out addresses. Its pages follow its configuration:

PageFor
General — #generalWhether it runs, which interfaces it listens on, and its DNS behaviour.
Domains — #domainsDomain overrides: send one domain to a different resolver.
Hosts — #hostsStatic name-to-address entries.
DHCP ranges — #dhcprangesThe pools it hands out.
DHCP options — #dhcpoptionsExtra options for clients (NTP servers, boot parameters, vendor options).
DHCP boot — #dhcpbootNetwork boot: the TFTP server and boot file for PXE clients.
DHCP tags — #dhcptagsTags that let one range or option apply to a subset of clients.
Leases — /leases/dnsmasqCurrent leases.

Dnsmasq cannot answer DNS on the port Unbound uses: beside Unbound, set its Listen port to 0 and it serves DHCP only, which is what the setup wizard does. Nor can it serve DHCP for an IP version Kea serves; such a save is refused. A range works only on an interface dnsmasq listens on (Interfaces on the General page, empty for all), and the interface editor adds the interface when it creates a range. A host entry with a MAC address or client identifier is a DHCP reservation, with one IPv4 address. The DHCP options page lists the option codes by name. With Register Kea leases and Register Kea reservations the names Kea hands out resolve through dnsmasq too, and a domain override can fill an External alias with the addresses its names resolve to.

Services: Dnsmasq DHCP ranges
Services: Dnsmasq DHCP ranges

Unbound DNS

The recursive resolver the appliance offers to its networks. It is on by default and is what clients use unless you point them elsewhere.

General — /m/unbound/unboundplus

Services: Unbound general
Services: Unbound general

Whether the resolver runs, which interfaces it answers on, whether it validates DNSSEC, and whether it registers DHCP leases so local machines resolve by name.

With no listen interface selected the resolver answers on every address, and the firewall rules decide who reaches it; 127.0.0.1 and ::1 are always included so the firewall itself can resolve. Switching DNSSEC on installs the root trust anchor, and answers that fail validation become SERVFAIL. Register DHCP leases and Register DHCP reservations cover Kea and Dnsmasq; a reservation added later resolves without anything else to do.

Port 53 can only be held by one service. Unbound refuses to save a port Dnsmasq already answers DNS on, and says so.

Overrides — ?a=hosts/host,aliases/alias

Services: Unbound overrides
Services: Unbound overrides

Host overrides (a name that answers with an address you choose) and aliases. This is how you make an internal service answer with its internal address while the public DNS points elsewhere.

A host of answers for every name in the domain. More names for the same record can be typed straight into the override's Aliases* field; each becomes an alias row, and aliases get no reverse name.

Access Lists — ?a=acls/acl

Services: Unbound access lists
Services: Unbound access lists

Which networks may query the resolver. An open resolver reachable from the internet will be abused; keep this to your own networks.

The default action (Allow) applies to every address no list covers; where networks overlap, the most specific one decides.

Blocklists — ?a=dnsbl/blocklist

Services: Unbound blocklists
Services: Unbound blocklists

DNS-level blocking from subscribed lists — advertising, tracking, malware domains — with your own allow and block entries on top. Cheap, effective, and invisible to clients.

Each row is a policy with its own lists, allowlist and answer (NXDOMAIN or a redirect address). A policy with Source networks applies only to those clients; a client covered by several policies gets all of them, and where two list the same name the one with the smaller network decides. A plain name blocks exactly that name; Blocked domains, list entries written *.name and adblock entries ||name^ also block every name under it. Lists are fetched again when their cache time runs out (the firewall checks every 10 minutes) and loaded without restarting the resolver; when a download fails, the previous copy stays in use.

Query Forwarding / DNS over TLS

Services: Unbound query forwarding
Services: Unbound query forwarding

Forwarding sends queries to chosen upstream resolvers instead of resolving from the root. DNS over TLS does the same over an encrypted channel, so the upstream provider is the only party that sees your queries.

Query Forwarding lists the plain DNS servers and DNS over TLS the encrypted ones; a server added on a page is of that page's kind. An empty port means 53 for plain DNS and 853 for TLS. For TLS, fill in Server name to verify (for example dns.quad9.net); without it any certificate from a trusted authority is accepted. While Use the system nameservers is on, servers without a domain are not used.

Services: Unbound DNS over TLS
Services: Unbound DNS over TLS

Advanced — /m/unbound/unboundplus

Services: Unbound advanced
Services: Unbound advanced

Cache sizes, thread counts, prefetching and the rest. Defaults are sane for an appliance; raise the cache before anything else if the resolver is busy.

A numeric field left empty uses Unbound's own default, which each help text names. Harden DNSSEC data is on by default: turn it off only if something upstream strips DNSSEC records.

Statistics — /unbound-stats

Services: Unbound statistics
Services: Unbound statistics

Queries answered, cache hit rate, what was blocked. A low hit rate on a busy network is the sign that the cache is too small.

Log File — /log/core/resolver

Services: Resolver log
Services: Resolver log

DHCRelay — /m/dhcrelay/dhcrelay

Services: DHCP relay
Services: DHCP relay

Forwards DHCP requests from a network with no local server to a server somewhere else — the usual arrangement when a central server owns all addressing. Configure the interface to listen on and the server to relay to.

Services: DHCP relay log
Services: DHCP relay log

Router Advertisements — /m/radvd/radvd

Services: Router advertisements
Services: Router advertisements

How the appliance announces itself as an IPv6 router: the mode (unmanaged, managed, assisted), the prefixes it advertises, and the DNS it hands out. Without this, IPv6 clients on the segment get no address at all.

Network Time

General — /system-ntp

Services: Network time
Services: Network time

The time service: which servers the appliance follows, and whether it serves time to the networks behind it.

Time matters more than it looks. Certificate validation, VPN negotiation, logging and compliance records all depend on the clock being right.

GPS / PPS — #gps, #pps

Services: NTP GPS
Services: NTP GPS
Services: NTP PPS
Services: NTP PPS

For appliances with a GPS receiver or a pulse-per-second input: a local reference clock, for sites that cannot depend on the internet for time.

Status — /ntp-status

Services: NTP status
Services: NTP status

The peer table: which server is actually selected, the offset, and the jitter. "Synchronised" is a state you can read here, not an assumption.

Log File — /log/core/ntpd

Services: NTP log
Services: NTP log

ClamAV Antivirus

Settings — /m/clamav/clamav

Services: ClamAV settings
Services: ClamAV settings

The virus scanner: whether it runs, how often signatures refresh, and the scan limits.

ClamAV holds its signature database in memory — about a gigabyte. On an appliance with 2 GB of RAM, enabling it changes the machine's character. Budget 4 GB or more if you want it on.

Status — /clamav-status

Services: ClamAV status
Services: ClamAV status

Whether the scanner is up, how old the signatures are, and what the last update did. An old signature date is the thing to notice here.

Log File — /log/core/clamav

Services: ClamAV log
Services: ClamAV log