DNS provider
The DNS provider exposes DNS records as files. Every record type for a domain becomes a readable leaf; ls shows which types have answers, cat returns the record data one entry per line.
No credentials required. The provider sends DNS-over-HTTPS (DoH) queries through the host runtime. Cloudflare (1.1.1.1) and Google (8.8.8.8) are preconfigured; you can pin a different resolver per query using the @resolver path segment.
Mount point
Section titled “Mount point”All paths live under /dns (or wherever you mount omnifs; examples below assume the default /omnifs mount).
Path reference
Section titled “Path reference”| Path | Operation | Returns |
|---|---|---|
/dns/{name} | ls | Record types with answers: A, AAAA, MX, NS, TXT, CNAME, SOA, SRV, _all, _raw |
/dns/{name}/{type} | cat | Records for that type, one per line |
/dns/{name}/_all | cat | All record types concatenated, labelled by type |
/dns/{name}/_raw | cat | Raw DoH JSON response from the resolver |
/dns/@{resolver}/{name}/{type} | cat | Same as above, routed through the named resolver |
/dns/_reverse/{ip}/PTR | cat | Reverse DNS lookup for an IPv4 or IPv6 address |
{name} is any fully-qualified domain name. {type} is the record type in uppercase: A, AAAA, MX, NS, TXT, CNAME, SOA, SRV.
{resolver} in the @-prefixed paths is a resolver alias or a bare IP. The two built-in aliases are cloudflare and google.
Configuration
Section titled “Configuration”The provider has one optional configuration key.
| Key | Type | Required | Default |
|---|---|---|---|
resolver | string | no | cloudflare |
Set resolver to change the default DoH endpoint used when no @resolver segment appears in the path. Cloudflare and Google are available without further setup; supply a full URL to use any RFC 8484-compliant DoH server.
Examples
Section titled “Examples”List record types for a domain:
ls /omnifs/dns/example.com# A AAAA MX NS TXT CNAME SOA SRV _all _rawRead the A record:
cat /omnifs/dns/example.com/A# 93.184.216.34Read the MX records (priority and hostname, one entry per line):
cat /omnifs/dns/example.com/MX# 10 mail.example.com.# 20 mail2.example.com.Read the NS records:
cat /omnifs/dns/example.com/NS# a.iana-servers.net.# b.iana-servers.net.Read a TXT record (useful for SPF, DKIM, domain verification tokens):
cat /omnifs/dns/example.com/TXT# "v=spf1 -all"Read all record types at once:
cat /omnifs/dns/example.com/_allPipe _all into grep to filter without switching tools:
cat /omnifs/dns/example.com/_all | grep MXQuery a specific resolver for a record:
cat /omnifs/dns/@google/example.com/AAAAcat /omnifs/dns/@cloudflare/example.com/NSReverse lookup:
cat /omnifs/dns/_reverse/93.184.216.34/PTR# example.com.Check CNAME chains (read the CNAME leaf, then read the target):
cat /omnifs/dns/www.example.com/CNAME# example.com.
cat /omnifs/dns/example.com/A# 93.184.216.34Get the raw DoH response to inspect TTLs and full answer sections:
cat /omnifs/dns/example.com/_raw | jq '.Answer[] | {name, type, TTL, data}'Using omnifs DNS in scripts
Section titled “Using omnifs DNS in scripts”Because records are plain files, standard POSIX tools work without any DNS library:
# Block until an A record appears (useful after DNS propagation)until cat /omnifs/dns/mynewdomain.example/A 2>/dev/null | grep -q .; do sleep 5doneecho "DNS propagated"# Audit MX records across a list of domainswhile read domain; do echo "=== $domain ===" cat /omnifs/dns/$domain/MX 2>/dev/null || echo "(no MX)"done < domains.txt# Compare what two resolvers return for a recorddiff \ <(cat /omnifs/dns/@cloudflare/example.com/A) \ <(cat /omnifs/dns/@google/example.com/A)Supported record types
Section titled “Supported record types”| Type | Description |
|---|---|
A | IPv4 address |
AAAA | IPv6 address |
MX | Mail exchange (priority + hostname) |
NS | Authoritative nameservers |
TXT | Text records (SPF, DKIM, verification) |
CNAME | Canonical name alias |
SOA | Start of authority |
SRV | Service locator (priority, weight, port, target) |
PTR records are available only through the /dns/_reverse/{ip}/PTR path.