-
Jarl v0.4.0-rc.5 Pre-release
released this
2026-10-11 21:33:22 +01:00 | 80 commits to main since this releaseUpgrading from 0.3
- Back up first (
sudo jarld backup). - When jarld first starts, it rewrites named's configuration: options
move into their new fixed order, and every view gets its view key in
match-clientsandkeys.conf. It is checked with named-checkconf
before named reloads, like any apply. Files you changed by hand are left
alone; the log then says to runjarl resync. - The systemd unit changed (it allows
AF_NETLINK). The package replaces
it; an override that addsAF_NETLINK(systemctl edit jarl) does no
harm and can be removed. - The database moves to schema 8 (disabled zones, client groups) as
jarld starts. - If statistics showed a spike after views were created or changed, see
"Statistics" under Fixed: the bad minutes can be removed from
/var/lib/jarl/stats.db(minute rows haveres = 'm'; the hours and
days that include them are'h'and'd').
Added
- Different blocking for different devices (docs/blocking.md), like
Pi-hole's groups, in one view and without loading any list twice.
Client groups put devices (addresses, networks or ACLs of them) at a
blocking step:off(only your rules),normal(the default), or steps
you add above it, each including the lists of the steps below. Lists
start at a step. Jarl puts a small "gate" policy zone in front of each
step's lists that lets the devices below that step through. Web UI: a
Devices panel on the Blocking page and a step on each list. CLI:jarl block step,jarl block group,jarl blocklist update --step. API:
/blocking/steps,/blocking/groups. Database schema 8. - View keys: every view gets a TSIG key,
jarl-view-NAME, at the front of
its match-clients, so a query signed with it lands in that view from any
address. Jarl signs its delegation check's queries to this server's own
addresses with the key of the zone's view: before, they got whichever
view matched the server's own address (usually internal), so the check
could report the wrong serial for the external view.jarl view key VIEWshows a key, fordig -k(docs/views.md). The first apply after
upgrading adds the keys to named.conf and keys.conf. - Server statistics: named's memory (resident, and its own count) and
CPU use, its cache size, sockets, and recursive and TCP clients against
their limits; the host's memory and load; free space where zone files,
logs and Jarl's data are. Memory and CPU are kept over time like the
other statistics. Statistics page → Server,jarl stats server, API
/stats/server. Read from named's statistics channel,rndc statusand
/proc, with no extra privileges. - CLI: the record commands that change records take several views,
--view internal,external, or--view all, and make the change in each,
as one changeset (all views or none). - Blocking can be paused until resumed, like Pi-hole's "indefinitely":
jarl block pause indefinitely, Until I resume on the Blocking page,
{"indefinitely": true}in the API. - Disabled zones: a zone can be disabled instead of deleted. named stops
loading it (its zone statement is left out of named.conf), while Jarl
keeps it with its records, options and history, still editable;
enabling it serves it as it is then. Disabling says what clients get
instead (recursion, or REFUSED). Signed zones can't be disabled. Web
UI: Disable/Enable on the zone page, a badge in the zone list. CLI:
jarl zone disable|enable. API:PATCH /zones/{zone}with
{"disabled": true}. Database schema 7. - Blocking (docs/blocking.md): named answers "doesn't exist" for ads,
trackers and malware, using BIND's response policy zones.- Blocklists in Adblock, hosts or plain-domain format, downloaded by jarld
and checked daily (blocking.refresh). A list is downloaded only when
the server says it changed, checked with named-checkzone, and reloaded
only when its content differs; a failed update keeps the previous
version and shows on the dashboard. - Your own block and allow rules, for a domain and the names below it or
the exact name. Rules take precedence over every list, and the most
specific rule wins. - Lists and rules apply to chosen views, or to every view that offers
recursion. They are configuration: staged, reviewed and reverted like
any change. - Checking a name says whether it is blocked and by which rule or list
entry, with an Allow button in the web UI. - Web UI: a Blocking page, with well-known lists to pick and named's
memory per list. CLI:jarl blocklistandjarl block. API:
/blocking/lists,/blocking/rules,/blocking/check. - Pausing:
jarl block pause [DURATION]or the Blocking page lets every
name through for a while (at most a day); blocking resumes by itself.
The lists stay loaded, so it takes effect at once. - Statistics: blocked queries over time (a line on the queries chart)
and their share, blocked per list, the most blocked names and the
clients with the most blocked queries (jarl stats top blocked,
top blocked-clients). Blocked answers no longer count as names that
don't exist. - The view choice in the web UI's forms is a compact dropdown, however
many views there are. - A
blockingpermission; database schema 6.
- Blocklists in Adblock, hosts or plain-domain format, downloaded by jarld
Changed
- Web UI: each view has its own page, like a zone: Settings (match lists,
comment, colour), Options and Zones tabs (with New zone in VIEW),
and Delete. The Views page lists them in order, with the arrows that
reorder them; view links everywhere open the view's page. - Web UI: A and AAAA records have a + CNAME button that fills in the
add form with a CNAME pointing to the record's name, leaving only the
alias's name to type. It shows when the row is hovered or focused
(always on touch screens). - Blocking page: how many queries each blocklist blocked in the last 24
hours, and your rules together, with statistics on (linking to the
Statistics page). - Options are kept in one fixed order, in named.conf, the web UI and the
CLI: grouped by topic (files, listening, access control, recursion and
forwarding, DNSSEC, transfers and notify, then the rest), alphabetical
within a group. The same option is now in the same place in every view
and zone. The first apply after upgrading reorders named.conf (a diff
that only moves lines). Top-level statements keep their order. - Options that end in a list (
allow-transfer,forwarders,
listen-on, ...) can be given without their braces, in the web UI, CLI
and API:10.0.10.53; key xferbecomes{ 10.0.10.53; key xfer; }.
Before, only some server options (those edited one element per line)
added them. - The dashboard's configuration checks include named-checkconf's own
warnings about the running configuration (such asboth "recursion no;" and "allow-recursion" active), which before only showed while applying.
The CLI now prints them after an apply too. - Statistics page: cards and tiles fill their rows instead of leaving one
alone beside an empty space, and the queries and failed answers charts
have the same margins, so their time axes line up. - Dashboard: options have their own tile; "0 TSIG keys · 22 options" read
as if the options belonged to the keys. - Web UI times use the 24-hour clock.
- Diffs of named.conf say which block each change is in, after the
@@
line numbers (@@ -50,6 +49,8 @@ view "internal" {), like git does
with function names. Moving an option from the server's options into a
view no longer looks like two unrelated edits. - Web UI options (server, top-level, view and zone): values with blocks,
such as logging, are shown and edited laid out as in named.conf, over
several lines with indentation. The editor grows with its content, Tab
indents and Enter keeps the indentation (Esc, then Tab, moves on). With
a draft open, the tables show the draft's values, so a staged edit stays
visible after Save. - The pending-changes banner has an Apply now button: it applies your
draft without going to the Changes page, and stays on the page you're
on. If the changes are refused, a dialog says why and links to Changes. - Blocking page: blocklists and rules have an Edit button (name, URL,
views, comment; a rule's action and scope). The list button that
downloads now is called Refresh, likejarl blocklist refresh. - Records table: disabled records are hatched and have a "disabled" badge
next to their name, instead of only a muted colour and a badge in the
comment column.
Fixed
- Reverting a changeset added needless "restore" operations for
blocklists, rules and views that hadn't changed: copying the state
turned their empty view lists into missing ones. - Under the shipped systemd unit, jarld couldn't list the host's
addresses (it needs a netlink socket, whichRestrictAddressFamilies
didn't allow), so the name server checks didn't recognize this server's
own addresses. The Name servers tab then queried them like another
server's, and the delegation check didn't sign those queries with the
view's key: with views, both got the view matching the server's own
address (usually internal) and reported a wrong serial. The unit now
allowsAF_NETLINK, and without it jarld reads the addresses from
/proc. - Statistics: after a reconfig that added, removed or recreated views
(creating the first view, for instance), a minute could count everything
since named started: millions of queries in an hour. A per-view counter
(cache, upstream times, validation) going down was taken for a restart
of named. Now only a new boot time means a restart, and a counter that
goes down counts 0 for that minute. - Blocking page, checking a name: when your own block rule is for that very
name, it offers to remove the rule instead of an allow rule, which was
refused as a second rule for the same name. It also names the rule that
matched rather than the policy zone entry. - docs/validation.md lacked the
disabled_conflictwarning added in 0.3.0.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Back up first (