On Monday, February 3, 2025 10:19:59 PM CET Paul Hoffman wrote:
> I have made many updates to the draft based on the input so far. Please see
> the extended use case and design parts, as well as the other additions
> y'all have suggested.
 
> --Paul Hoffman

Hello,

I have read your draft revision, and like the sentiment behind it. To introduce 
a portable 
format like JSON into the DNS, seems like a prudent decision to make. This 
would 
ultimately increase portability.

As you may or may not have seen in bind-users 
(https://lists.isc.org/pipermail/bind-users/
2025-January/109451.html[1]), I have made a JSON interface for both ISC DHCP 
and BIND. 
The intention behind that implementation was different from yours, yet 
strikingly similar. 
The idea behind my implementation was that of repeated record entries, and 
rebuilding 
entire zone files based on JSON inventory. Meanwhile it appears that your 
sentiment is 
more aligned with commercial providers (e.g. SPF, DKIM, DMARC, Google, 
Microsoft, ...) 
using DNS to prove domain ownership and policy, and its interface with 
registrars.

As such, I will consider your perceived use case primary to my own. I will, 
however, express 
my gratitude and respect towards you if my email ended up being the catalyst. 
That's 
more than I could've ever wished for. Thank you.

I've kept tabs on the feedback you've received until now, and was particularly 
interested in 
the matter of newlines, and other such formatting. Perhaps it would be more 
important to 
ensure that those remain aligned to the I-JSON specification (RFC 7493?), than 
to introduce 
our own interpretations to this matter.

That being said, we should certainly not underestimate users' ability to mangle 
these 
things. A certain law firm I work with, prints e-mailed documents before 
scanning them 
back in for retransmission in another e-mail. For remote management of my 
systems in 
crisis situations, I have had significant trouble expressing to people on-call 
where to put 
dashes and spaces in shell commands. Ultimately, I resorted to only ever having 
them 
responsible for pressing the power button, and designing my systems around 
successful 
SSH service regardless of circumstance.

When it comes to what's actually expressed in my JSON databases, I think I may 
have 
some useful input for you. Especially if this work is indeed in response to my 
message on 
bind-users, I'd consider it a disservice to not share my own notes with you.

>From https://git.nixmagic.com/infra/config/src/branch/dev/readme.md[2] 
>(private):

Network configuration toolkit
This project contains the network configuration files, and tools to create 
associated 
domain-specific language files.

For now the project only supports classful networking, with development being 
done 
against infrastructure with multiple /24 networks.

Configuration syntax
The configuration file uses the following syntax:

{ "network": [{
        "domain":       [ "example.com" ],
        "serial":       "1",
        "prefix":       [ "192.168.0" ],
        "description":  [ "Example network" ],
        "hosts": [
        {
                "name": "example",
                "mac":  "01:23:45:67:89:ab",
                "ip":   "1",
                "type": "example"
        }]
}

--EOF--

The rationale is that this offers inventory, for multiple networks that have 
each been 
assigned one or more zone names, and one or more network prefixes (whose 
amounts 
must match). These are one-to-one relationships, so e.g. the first zone matches 
against 
the first prefix. The serial is analogous to the zone's serial, and matches all 
networks / 
zones. The idea is that if a change is expressed in the JSON file, it affects 
all resulting zone 
files and DHCP configs equally. With no exceptions I can think of, this affects 
all networks 
expressed in that block. Lastly, the description is used to offer a comment in 
the zone file, 
for an operator that may not be aware of, or willing to integrate with the JSON 
scheme. 
Organizational inertia is certainly worth considering, and it's why I consider 
the voluntary 
basis of this proposed standard a good thing.

Perhaps Section 1.2 is worth reconsidering though, JSON is inherently a 
machine-readable 
format. To which extent its syntax is compatible with DNS, is certainly 
something worth 
looking into -- particularly for use cases more complex than A and PTR, and 
perhaps MX 
and TXT records. So far, my own implementation only implements the former two. 
But if 
machine-to-machine transmission (across different organizations) is to be 
excluded, then 
perhaps other formats like TOML or YAML may be better contenders to this role. 
Regardless, I would like to continue the push into JSON here, with the 
long-term 
expectation for such machine-to-machine interface to be normalized.

Regarding the remarks on Base64, I completely agree. This is meant to be for 
binary 
compatibility and (within offensive security context) obfuscation, not 
reliability. A mangled 
Base64 string is still just as mangled as the thing it encodes.

Regarding Section 2, I would like to propose something akin to the syntax I 
alluded to 
above. Rather than using an array where elements are to be addressed by element 
alone, 
using it as key-value pairs may offer both more descriptive and resilient 
results. This would 
increase both user awareness, and implementation stability. The only cost 
trade-off I could 
think of, is that it is more verbose.

Other than that, I quite like the proposal and have no further objections. 
Thank you for 
having spent your time and effort on this, and for having read my e-mail(s) to 
this point.

-- 
Met vriendelijke groet,
Michael De Roover

Mail: i...@nixmagic.com
Web: michael.de.roover.eu.org

--------
[1] https://lists.isc.org/pipermail/bind-users/2025-January/109451.html
_______________________________________________
DNSOP mailing list -- dnsop@ietf.org
To unsubscribe send an email to dnsop-le...@ietf.org

Reply via email to