Sets from Jarl: sets holding the addresses of names in Jarl
A set can take its addresses from Jarl: every A and AAAA record of its
names (NAME@VIEW), CNAMEs followed within Jarl's zones in the same view.
housecarld reads them every jarl.refresh and after each change, keeps
only the addresses within the zones and networks the set allows, and
keeps what it last read (saved in the database and the boot ruleset)
while Jarl can't be reached. A change of the addresses applies the
ruleset again without a history entry and is audited (set.jarl).
hc set add --jarl --within, hc set jarl; the kind "from Jarl" and
Addresses… on the Sets page; GET /sets/{name}/jarl and /jarl/refresh;
validation codes set_jarl_*, status warnings jarl_*; docs/jarl.md.
e2e phase with scripts/fakejarl.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
50dce02746
commit
68ba2d06c5
37 files changed
+2315
-59
No files matched your search
@@ -8,6 +8,24 @@ All notable changes to Housecarl are documented here. The format follows
|
||||
|
||||
### Added
|
||||
|
||||
- **Sets from Jarl** ([docs/jarl.md](docs/jarl.md#sets-from-jarl)). A set
|
||||
can hold the addresses of names in Jarl instead of listing them:
|
||||
every A and AAAA record of each name, CNAMEs followed (within Jarl's
|
||||
zones, in the same view), one view per name (`NAME@VIEW`; a name more
|
||||
than one view covers must say which). housecarld reads them through
|
||||
Jarl's API every `jarl.refresh` (a minute) and after each change, and
|
||||
when they change applies the ruleset again, without a history entry
|
||||
(audited as `set.jarl`). A set uses only the addresses `within` the
|
||||
zones (their connected networks, which grow with the zone) and
|
||||
networks it names; others are left out and warned of (`jarl_outside`).
|
||||
While Jarl can't be read, sets keep the addresses they had, saved in
|
||||
the database for restarts and in the boot ruleset (`jarl_unreachable`).
|
||||
Names that give nothing say why (`jarl_name`: no record, a wildcard
|
||||
only, a CNAME out of Jarl or in a loop, below a delegation, a secondary
|
||||
zone, more than one view). `hc set add --jarl NAME@VIEW --within ZONE`,
|
||||
`hc set jarl SET [--refresh]`; the kind "from Jarl" and Addresses… on
|
||||
the Sets page; `GET /sets/{name}/jarl`, `POST /sets/{name}/jarl/refresh`.
|
||||
Housecarl's Jarl token needs `records:read` for the zones.
|
||||
- An administrator can make an API token for another user in the web
|
||||
UI: New token on the user's row under Users (the CLI's `hc token create
|
||||
--user` and the API could already).
|
||||
|
||||
Reference in new issue
Block a user