Named Config¶
NamedConfig
pydantic-model
¶
Bases: BindBaseModel
Complete BIND9 configuration (named.conf).
NOTE: This file was automatically generated by bindantic, please adjust.
Show JSON schema:
{
"$defs": {
"AAAARecord": {
"description": "AAAA record - maps a hostname to an IPv6 address.\n\nGrammar (Reference: RFC 3596 Section 2.2):\n```\n[<NAME>] [<TTL>] [<CLASS>] AAAA <ADDRESS>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "AAAA"
},
"address": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
}
],
"description": "IPv6 address",
"title": "Address"
}
},
"required": [
"address"
],
"title": "AAAARecord",
"type": "object"
},
"ARecord": {
"description": "A record - maps a hostname to an IPv4 address.\n\nGrammar (Reference: RFC 1035 Section 3.4.1):\n```\n[<NAME>] [<TTL>] [<CLASS>] A <ADDRESS>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "A"
},
"address": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
}
],
"description": "IPv4 address",
"title": "Address"
}
},
"required": [
"address"
],
"title": "ARecord",
"type": "object"
},
"AclBlock": {
"description": "ACL block for BIND configuration.\n\nThe acl statement assigns a symbolic name to an address match list. It gets its name from one of the primary uses of address match lists: Access Control Lists (ACLs).\n\nThe following ACLs are built-in:\n- any: Matches all hosts.\n- none: Matches no hosts.\n- localhost: Matches the IPv4 and IPv6 addresses of all network interfaces on the system.\nWhen addresses are added or removed, the localhost ACL element\nis updated to reflect the changes.\n- localnets: Matches any host on an IPv4 or IPv6 network for which the system\nhas an interface. When addresses are added or removed, the localnets ACL element\nis updated to reflect the changes. Some systems do not provide a way to determine\nthe prefix lengths of local IPv6 addresses; in such cases, localnets only matches\nthe local IPv6 addresses, just like localhost.\n\nGrammar:\n```\nacl <string> { <address_match_element>; ... }; // may occur multiple times\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"description": "ACL name",
"title": "Name",
"type": "string"
},
"addresses": {
"description": "List of address match elements",
"items": {},
"title": "Addresses",
"type": "array"
}
},
"required": [
"name"
],
"title": "AclBlock",
"type": "object"
},
"AlsoNotifyBlock": {
"description": "Options block also-notify with structure.",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"global_port": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Global port for all servers",
"title": "Global Port"
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv4 source for notifications",
"title": "Source"
},
"source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv6 source for notifications",
"title": "Source V6"
},
"servers": {
"description": "Server list for notifications",
"items": {
"$ref": "#/$defs/ServerSpecifier"
},
"title": "Servers",
"type": "array"
}
},
"title": "AlsoNotifyBlock",
"type": "object"
},
"CAARecord": {
"description": "CAA record - Certification Authority Authorization.\n\nGrammar (Reference: RFC 6844):\n```\n[<NAME>] [<TTL>] [<CLASS>] CAA <FLAGS> <TAG> \"<VALUE>\"\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "CAA"
},
"flags": {
"default": 0,
"description": "Flags (0-255, usually 0 or 128 for critical)",
"maximum": 255,
"minimum": 0,
"title": "Flags",
"type": "integer"
},
"tag": {
"$ref": "#/$defs/CAATagEnum",
"description": "CAA property tag"
},
"value": {
"description": "Property value",
"title": "Value",
"type": "string"
}
},
"required": [
"tag",
"value"
],
"title": "CAARecord",
"type": "object"
},
"CAATagEnum": {
"description": "CAA tag values.",
"enum": [
"issue",
"issuewild",
"iodef",
"contact"
],
"title": "CAATagEnum",
"type": "string"
},
"CERTRecord": {
"description": "CERT record - certificate storage.\n\nGrammar (Reference: RFC 4398):\n```\n[<NAME>] [<TTL>] [<CLASS>] CERT <CERT_TYPE> <KEY_TAG> <ALGORITHM> <CERTIFICATE>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "CERT"
},
"cert_type": {
"description": "Certificate type",
"title": "Cert Type",
"type": "integer"
},
"key_tag": {
"description": "Key tag",
"title": "Key Tag",
"type": "integer"
},
"algorithm": {
"description": "Algorithm",
"title": "Algorithm",
"type": "integer"
},
"certificate": {
"description": "Certificate data",
"title": "Certificate",
"type": "string"
}
},
"required": [
"cert_type",
"key_tag",
"algorithm",
"certificate"
],
"title": "CERTRecord",
"type": "object"
},
"CNAMERecord": {
"description": "CNAME record - alias for another domain name.\n\nGrammar (Reference: RFC 1035 Section 3.3.1):\n```\n[<NAME>] [<TTL>] [<CLASS>] CNAME <CANONICAL_NAME>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "CNAME"
},
"canonical_name": {
"description": "Canonical domain name (the real name)",
"title": "Canonical Name",
"type": "string"
}
},
"required": [
"canonical_name"
],
"title": "CNAMERecord",
"type": "object"
},
"CatalogZoneBlock": {
"description": "Catalog zone configuration.",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"zone": {
"description": "Catalog zone name",
"title": "Zone",
"type": "string"
},
"default_primaries": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Default primary servers for member zones",
"title": "Default Primaries"
},
"zone_directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Directory for zone files",
"title": "Zone Directory"
},
"in_memory": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Keep catalog in memory",
"title": "In Memory"
},
"min_update_interval": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum interval between updates",
"title": "Min Update Interval"
}
},
"required": [
"zone"
],
"title": "CatalogZoneBlock",
"type": "object"
},
"ControlsBlock": {
"description": "Controls block for BIND9 configuration.\n\nSpecifies control channels to be used to manage the name server via rndc.\n\nNOTE: If no controls statement is present, BIND9 sets up default control channels\non loopback addresses (127.0.0.1 and ::1) with port 953.\n\nGrammar:\n```\ncontrols {\n inet ( <ipv4_address> | <ipv6_address> | * )\n [ port ( <integer> | * ) ]\n allow { <address_match_element>; ... }\n [ keys { <string>; ... } ]\n [ read-only <boolean> ];\n};\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"controls": {
"description": "List of control channel specifications.\nEmpty list disables control channels.\nMultiple inet statements can be used.",
"items": {
"$ref": "#/$defs/InetControl"
},
"title": "Controls",
"type": "array"
}
},
"title": "ControlsBlock",
"type": "object"
},
"DNAMERecord": {
"description": "DNAME record - delegation name (creates a subtree delegation).\n\nGrammar (Reference: RFC 6672 Section 2):\n```\n[<NAME>] [<TTL>] [<CLASS>] DNAME <TARGET>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "DNAME"
},
"target": {
"description": "Target domain name for delegation",
"title": "Target",
"type": "string"
}
},
"required": [
"target"
],
"title": "DNAMERecord",
"type": "object"
},
"DNSKEYRecord": {
"description": "DNSKEY record - DNS public key (DNSSEC).\n\nGrammar (Reference: RFC 4034):\n```\n[<NAME>] [<TTL>] [<CLASS>] DNSKEY <FLAGS> <PROTOCOL> <ALGORITHM> <PUBLIC_KEY>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "DNSKEY"
},
"flags": {
"description": "Flags (256=Zone Key, 257=Secure Entry Point)",
"maximum": 65535,
"minimum": 0,
"title": "Flags",
"type": "integer"
},
"protocol": {
"default": 3,
"description": "Protocol (always 3 for DNSSEC)",
"title": "Protocol",
"type": "integer"
},
"algorithm": {
"$ref": "#/$defs/DNSSECAlgorithmEnum",
"description": "DNSSEC algorithm used"
},
"public_key": {
"description": "Base64 encoded public key",
"title": "Public Key",
"type": "string"
}
},
"required": [
"flags",
"algorithm",
"public_key"
],
"title": "DNSKEYRecord",
"type": "object"
},
"DNSSECAlgorithmEnum": {
"description": "DNSSEC algorithms as defined in RFC 4034.",
"enum": [
1,
2,
3,
5,
6,
7,
8,
10,
12,
13,
14,
15,
16
],
"title": "DNSSECAlgorithmEnum",
"type": "integer"
},
"DSRecord": {
"description": "DS record - delegation signer (DNSSEC).\n\nGrammar (Reference: RFC 4034):\n```\n[<NAME>] [<TTL>] [<CLASS>] DS <KEY_TAG> <ALGORITHM> <DIGEST_TYPE> <DIGEST>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "DS"
},
"key_tag": {
"description": "Key tag value",
"maximum": 65535,
"minimum": 0,
"title": "Key Tag",
"type": "integer"
},
"algorithm": {
"$ref": "#/$defs/DNSSECAlgorithmEnum",
"description": "DNSSEC algorithm used"
},
"digest_type": {
"description": "Digest type (1=SHA-1, 2=SHA-256)",
"maximum": 255,
"minimum": 0,
"title": "Digest Type",
"type": "integer"
},
"digest": {
"description": "Hexadecimal digest value",
"title": "Digest",
"type": "string"
}
},
"required": [
"key_tag",
"algorithm",
"digest_type",
"digest"
],
"title": "DSRecord",
"type": "object"
},
"DSTrustAnchor": {
"description": "Trust anchor entry for DS format (static-ds or initial-ds).\n\nFormat: <domain> static-ds|initial-ds <key_tag> <algorithm> <digest_type> <digest>",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"domain": {
"description": "Domain name for the trust anchor",
"title": "Domain",
"type": "string"
},
"anchor_type": {
"description": "Type of DS trust anchor",
"enum": [
"static-ds",
"initial-ds"
],
"title": "Anchor Type",
"type": "string"
},
"key_tag": {
"description": "Key tag value",
"maximum": 65535,
"minimum": 0,
"title": "Key Tag",
"type": "integer"
},
"algorithm": {
"description": "DNSSEC algorithm number",
"title": "Algorithm",
"type": "integer"
},
"digest_type": {
"description": "Digest type (1=SHA1, 2=SHA256, 3=SHA384, 4=SHA512)",
"title": "Digest Type",
"type": "integer"
},
"digest": {
"description": "Hexadecimal digest value",
"title": "Digest",
"type": "string"
}
},
"required": [
"domain",
"anchor_type",
"key_tag",
"algorithm",
"digest_type",
"digest"
],
"title": "DSTrustAnchor",
"type": "object"
},
"Dns64Block": {
"description": "DNS64 configuration block.",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"prefix": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4network",
"type": "string"
},
{
"format": "ipv6network",
"type": "string"
}
],
"description": "DNS64 prefix",
"title": "Prefix"
},
"break_dnssec": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable DNS64 synthesis even if DNSSEC validation fails",
"title": "Break Dnssec"
},
"clients": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Clients affected by this DNS64 prefix",
"title": "Clients"
},
"exclude": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv6 addresses to exclude from DNS64",
"title": "Exclude"
},
"mapped": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv4 addresses to map in DNS64",
"title": "Mapped"
},
"recursive_only": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Apply DNS64 only to recursive queries",
"title": "Recursive Only"
},
"suffix": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Suffix for mapped IPv4 addresses",
"title": "Suffix"
}
},
"required": [
"prefix"
],
"title": "Dns64Block",
"type": "object"
},
"DnssecAlgorithmEnum": {
"description": "DNSSEC algorithms as defined by BIND.",
"enum": [
"rsamd5",
"dh",
"dsa",
"rsasha1",
"dsa-nsec3-sha1",
"rsasha1-nsec3-sha1",
"rsasha256",
"rsasha512",
"ecc-gost",
"ecdsap256sha256",
"ecdsap384sha384",
"ed25519",
"ed448"
],
"title": "DnssecAlgorithmEnum",
"type": "string"
},
"DnssecDigestTypeEnum": {
"description": "DNSSEC digest types for CDS records.",
"enum": [
"SHA-1",
"SHA-256",
"SHA-384",
"SHA-512"
],
"title": "DnssecDigestTypeEnum",
"type": "string"
},
"DnssecKeyEntry": {
"description": "Key entry in dnssec-policy keys block.\n\nGrammar:\n```\n( csk | ksk | zsk ) [ key-directory | key-store <string> ]\n lifetime <duration_or_unlimited> algorithm <string>\n [ tag-range <integer> <integer> ] [ <integer> ];\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"role": {
"$ref": "#/$defs/KeyRoleEnum",
"description": "Key role: csk, ksk, or zsk"
},
"storage_type": {
"anyOf": [
{
"$ref": "#/$defs/KeyStorageEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Storage type: key-directory or key-store"
},
"key_store_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Name of key store (if storage_type is key-store)",
"title": "Key Store Name"
},
"lifetime": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"const": "unlimited",
"type": "string"
}
],
"description": "Key lifetime or 'unlimited'",
"title": "Lifetime"
},
"algorithm": {
"anyOf": [
{
"$ref": "#/$defs/DnssecAlgorithmEnum"
},
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "DNSSEC algorithm name or number",
"title": "Algorithm"
},
"key_size": {
"anyOf": [
{
"ge": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Key size in bits (optional, must be positive)",
"title": "Key Size"
},
"tag_range": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "integer"
},
{
"type": "integer"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Valid key tag range [min, max]",
"title": "Tag Range"
}
},
"required": [
"role",
"lifetime",
"algorithm"
],
"title": "DnssecKeyEntry",
"type": "object"
},
"DnssecPolicyBlock": {
"description": "DNSSEC key and signing policy (KASP) configuration block for BIND.\n\nBuilt-in policies: \"default\", \"insecure\", \"none\"\n\nGrammar:\n```\ndnssec-policy <string> {\n cdnskey <boolean>;\n cds-digest-types { <string>; ... };\n dnskey-ttl <duration>;\n inline-signing <boolean>;\n keys { ... };\n manual-mode <boolean>;\n max-zone-ttl <duration>;\n nsec3param [ ... ];\n offline-ksk <boolean>;\n parent-ds-ttl <duration>;\n parent-propagation-delay <duration>;\n publish-safety <duration>;\n purge-keys <duration>;\n retire-safety <duration>;\n signatures-jitter <duration>;\n signatures-refresh <duration>;\n signatures-validity <duration>;\n signatures-validity-dnskey <duration>;\n zone-propagation-delay <duration>;\n};\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"description": "Name of the DNSSEC policy",
"title": "Name",
"type": "string"
},
"cdnskey": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Publish CDNSKEY records during KSK rollover",
"title": "Cdnskey"
},
"inline_signing": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Maintain separate signed version of zone",
"title": "Inline Signing"
},
"manual_mode": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Run key management in manual mode",
"title": "Manual Mode"
},
"offline_ksk": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Sign DNSKEY/CDS/CDNSKEY RRsets offline",
"title": "Offline Ksk"
},
"dnskey_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TTL for DNSKEY records (default: 1h)",
"title": "Dnskey Ttl"
},
"max_zone_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum TTL for zone records (default: 24h)",
"title": "Max Zone Ttl"
},
"parent_ds_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TTL of DS RRset in parent zone (default: 1d)",
"title": "Parent Ds Ttl"
},
"parent_propagation_delay": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Parent zone propagation delay (default: 1h)",
"title": "Parent Propagation Delay"
},
"publish_safety": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Safety margin before key activation (default: 1h)",
"title": "Publish Safety"
},
"purge_keys": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to keep deleted keys (default: 90d)",
"title": "Purge Keys"
},
"retire_safety": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Safety margin after key deactivation (default: 1h)",
"title": "Retire Safety"
},
"signatures_jitter": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Jitter range for signature expiration (default: 12h)",
"title": "Signatures Jitter"
},
"signatures_refresh": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Signature refresh interval (default: 5d)",
"title": "Signatures Refresh"
},
"signatures_validity": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Signature validity period (default: 2w)",
"title": "Signatures Validity"
},
"signatures_validity_dnskey": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSKEY signature validity period (default: 2w)",
"title": "Signatures Validity Dnskey"
},
"zone_propagation_delay": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Zone propagation delay (default: 5m)",
"title": "Zone Propagation Delay"
},
"cds_digest_types": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/DnssecDigestTypeEnum"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Digest types for CDS records (default: SHA-256 only)",
"title": "Cds Digest Types"
},
"keys": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/DnssecKeyEntry"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Key specifications",
"title": "Keys"
},
"nsec3param": {
"anyOf": [
{
"$ref": "#/$defs/Nsec3ParamBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "NSEC3 parameters (use NSEC3 instead of NSEC)"
}
},
"required": [
"name"
],
"title": "DnssecPolicyBlock",
"type": "object"
},
"FileSuffixEnum": {
"enum": [
"increment",
"timestamp"
],
"title": "FileSuffixEnum",
"type": "string"
},
"ForwardersBlock": {
"description": "Options block forwarders with structure.",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"global_port": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Global port for all servers",
"title": "Global Port"
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv4 source for notifications",
"title": "Source"
},
"source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv6 source for notifications",
"title": "Source V6"
},
"servers": {
"description": "List of forwarding servers",
"items": {
"$ref": "#/$defs/ServerSpecifier"
},
"title": "Servers",
"type": "array"
}
},
"title": "ForwardersBlock",
"type": "object"
},
"HINFORecord": {
"description": "HINFO record - host information.\n\nGrammar (Reference: RFC 1035 Section 3.3.11):\n```\n[<NAME>] [<TTL>] [<CLASS>] HINFO \"<CPU>\" \"<OS>\"\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "HINFO"
},
"cpu": {
"description": "CPU type",
"title": "Cpu",
"type": "string"
},
"os": {
"description": "Operating system",
"title": "Os",
"type": "string"
}
},
"required": [
"cpu",
"os"
],
"title": "HINFORecord",
"type": "object"
},
"HttpBlock": {
"description": "HTTP configuration block for DNS-over-HTTPS (DoH) in BIND.\n\nGrammar:\n```\nhttp <string> {\n endpoints { <quoted_string>; ... };\n listener-clients <integer>;\n streams-per-connection <integer>;\n}; // may occur multiple times\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"description": "Name of the HTTP configuration",
"title": "Name",
"type": "string"
},
"endpoints": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "HTTP query paths to listen on",
"title": "Endpoints"
},
"listener_clients": {
"anyOf": [
{
"ge": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-listener quota for active connections",
"title": "Listener Clients"
},
"streams_per_connection": {
"anyOf": [
{
"ge": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum concurrent HTTP/2 streams per connection",
"title": "Streams Per Connection"
}
},
"required": [
"name"
],
"title": "HttpBlock",
"type": "object"
},
"InetChannel": {
"description": "Single inet channel configuration for statistics-channels.\n\nGrammar:\n```\ninet ( <ipv4_address> | <ipv6_address> | * )\n [ port ( <integer> | * ) ]\n [ allow { <address_match_element>; ... } ];\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"address": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"enum": [
"*",
"::"
],
"type": "string"
}
],
"description": "IP address to listen on (* for IPv4 wildcard, :: for IPv6 wildcard)",
"title": "Address"
},
"port": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Port to listen on (default: 80)",
"title": "Port"
},
"allow": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Access control list for this channel",
"title": "Allow"
}
},
"required": [
"address"
],
"title": "InetChannel",
"type": "object"
},
"InetControl": {
"description": "Inet control channel specification for BIND9.\n\nSpecifies a TCP socket as a control channel for rndc.\n\nNOTE: Unix control channel has been removed in BIND9.\n\nGrammar:\n```\ninet ( <ipv4_address> | <ipv6_address> | * )\n [ port ( <integer> | * ) ]\n allow { <address_match_element>; ... }\n [ keys { <string>; ... } ]\n [ read-only <boolean> ];\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"ip_address": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"enum": [
"*",
"::"
],
"type": "string"
}
],
"description": "IP address to listen on. Can be:\n- IPv4 address (e.g., 127.0.0.1)\n- IPv6 address (e.g., ::1)\n- '*' for all IPv4 interfaces\n- '::' for all IPv6 interfaces",
"title": "Ip Address"
},
"port": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"default": 953,
"description": "Port number or '*'. Default is 953.\nNOTE: '*' cannot be used for port in BIND9 controls.",
"title": "Port"
},
"allow": {
"description": "Address match list for IP-based access control.\nAny server_key elements in this list are ignored.",
"items": {},
"title": "Allow",
"type": "array"
},
"keys": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of authorized server keys.\nEach listed key is authorized to execute commands over the control channel.",
"title": "Keys"
},
"read_only": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "If enabled (yes), limits to read-only commands:\nnta -dump, null, status, showzone, testgen, zonestatus.\nDefault is read-write access.",
"title": "Read Only"
}
},
"required": [
"ip_address",
"allow"
],
"title": "InetControl",
"type": "object"
},
"KeyBlock": {
"description": "Key block for BIND configuration.\n\nDefines a shared secret key for use with TSIG or the command channel.\n\nGrammar:\n```\nkey <string> {\n algorithm <string>;\n secret <string>;\n};\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"description": "Key name (server_key)",
"title": "Name",
"type": "string"
},
"algorithm": {
"description": "Authentication algorithm",
"title": "Algorithm",
"type": "string"
},
"secret": {
"description": "Base64-encoded secret string",
"title": "Secret",
"type": "string"
}
},
"required": [
"name",
"algorithm",
"secret"
],
"title": "KeyBlock",
"type": "object"
},
"KeyRoleEnum": {
"description": "Key roles in DNSSEC policy.",
"enum": [
"csk",
"ksk",
"zsk"
],
"title": "KeyRoleEnum",
"type": "string"
},
"KeyStorageEnum": {
"description": "Key storage types.",
"enum": [
"key-directory",
"key-store"
],
"title": "KeyStorageEnum",
"type": "string"
},
"KeyStoreBlock": {
"description": "Key-store block for BIND configuration.\n\nConfigures a DNSSEC key store.\n\nGrammar:\n```\nkey-store <string> {\n directory <quoted_string>;\n pkcs11-uri <quoted_string>;\n};\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"description": "Key store name",
"title": "Name",
"type": "string"
},
"directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Directory for key files",
"title": "Directory"
},
"pkcs11_uri": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "PKCS#11 URI for token storage",
"title": "Pkcs11 Uri"
}
},
"required": [
"name"
],
"title": "KeyStoreBlock",
"type": "object"
},
"KeyTrustAnchor": {
"description": "Trust anchor entry for DNSKEY format (static-key or initial-key).\n\nFormat: <domain> static-key|initial-key <flags> <protocol> <algorithm> <key_data>",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"domain": {
"description": "Domain name for the trust anchor",
"title": "Domain",
"type": "string"
},
"anchor_type": {
"description": "Type of key trust anchor",
"enum": [
"static-key",
"initial-key"
],
"title": "Anchor Type",
"type": "string"
},
"flags": {
"description": "DNSKEY flags (256 for ZSK, 257 for KSK)",
"title": "Flags",
"type": "integer"
},
"protocol": {
"description": "DNSKEY protocol (must be 3 for DNSSEC)",
"title": "Protocol",
"type": "integer"
},
"algorithm": {
"description": "DNSSEC algorithm number",
"title": "Algorithm",
"type": "integer"
},
"key_data": {
"description": "Base64 encoded public key data",
"title": "Key Data",
"type": "string"
}
},
"required": [
"domain",
"anchor_type",
"flags",
"protocol",
"algorithm",
"key_data"
],
"title": "KeyTrustAnchor",
"type": "object"
},
"LOCRecord": {
"description": "LOC record - geographical location.\n\nGrammar (Reference: RFC 1876):\n```\n[<NAME>] [<TTL>] [<CLASS>] LOC <LATITUDE> <LONGITUDE> <ALTITUDE>\n <SIZE> <HPREC> <VPREC>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "LOC"
},
"latitude": {
"description": "Latitude (e.g., 51 30 12.123 N)",
"title": "Latitude",
"type": "string"
},
"longitude": {
"description": "Longitude (e.g., 0 7 39.456 W)",
"title": "Longitude",
"type": "string"
},
"altitude": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "Altitude in meters",
"title": "Altitude"
},
"size": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Diameter of sphere in meters",
"title": "Size"
},
"hprecision": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Horizontal precision in meters",
"title": "Hprecision"
},
"vprecision": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Vertical precision in meters",
"title": "Vprecision"
}
},
"required": [
"latitude",
"longitude",
"altitude",
"size",
"hprecision",
"vprecision"
],
"title": "LOCRecord",
"type": "object"
},
"LogCategory": {
"description": "Log category definition for BIND9 logging configuration.\n\nGrammar:\n```\ncategory <string> { <string>; ... };\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"$ref": "#/$defs/LogCategoryEnum",
"description": "Category name"
},
"channels": {
"description": "List of channel names to receive messages from this category",
"items": {
"type": "string"
},
"title": "Channels",
"type": "array"
}
},
"required": [
"name"
],
"title": "LogCategory",
"type": "object"
},
"LogCategoryEnum": {
"enum": [
"client",
"cname",
"config",
"database",
"default",
"dispatch",
"dnssec",
"dnstap",
"edns-disabled",
"general",
"lame-servers",
"network",
"notify",
"nsid",
"queries",
"query-errors",
"rate-limit",
"resolver",
"responses",
"rpz",
"rpz-passthru",
"security",
"serve-stale",
"spill",
"sslkeylog",
"trust-anchor-telemetry",
"unmatched",
"update",
"update-security",
"xfer-in",
"xfer-out",
"zoneload"
],
"title": "LogCategoryEnum",
"type": "string"
},
"LogChannel": {
"description": "Log channel definition for BIND9 logging configuration.\n\nGrammar:\n```\nchannel <string> {\n buffered <boolean>;\n file <quoted_string> [ versions ( unlimited | <integer> ) ] [ size <size> ] [ suffix ( increment | timestamp ) ];\n null;\n print-category <boolean>;\n print-severity <boolean>;\n print-time ( iso8601 | iso8601-utc | local | <boolean> );\n severity <log_severity>;\n stderr;\n syslog [ <syslog_facility> ];\n};\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"description": "Channel name",
"title": "Name",
"type": "string"
},
"file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Log to specified file. Mutually exclusive with syslog/stderr/null",
"title": "File"
},
"syslog": {
"anyOf": [
{
"$ref": "#/$defs/SyslogFacilityEnum"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Log to syslog with optional facility. Mutually exclusive with file/stderr/null",
"title": "Syslog"
},
"stderr": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Log to standard error. Mutually exclusive with file/syslog/null",
"title": "Stderr"
},
"null": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Discard all messages. Mutually exclusive with file/syslog/stderr",
"title": "Null"
},
"versions": {
"anyOf": [
{
"const": "unlimited",
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of backup versions to keep (unlimited or integer)",
"title": "Versions"
},
"size": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum file size before rotation",
"title": "Size"
},
"suffix": {
"anyOf": [
{
"$ref": "#/$defs/FileSuffixEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Backup file naming method"
},
"buffered": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "If yes, output is not flushed after each log entry",
"title": "Buffered"
},
"print_category": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Include category name in log messages",
"title": "Print Category"
},
"print_severity": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Include severity level in log messages",
"title": "Print Severity"
},
"print_time": {
"anyOf": [
{
"$ref": "#/$defs/TimeFormatEnum"
},
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Include timestamp in log messages",
"title": "Print Time"
},
"severity": {
"anyOf": [
{
"$ref": "#/$defs/LogSeverityEnum"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum severity level to log",
"title": "Severity"
}
},
"required": [
"name"
],
"title": "LogChannel",
"type": "object"
},
"LogSeverityEnum": {
"enum": [
"critical",
"error",
"warning",
"notice",
"info",
"debug",
"dynamic"
],
"title": "LogSeverityEnum",
"type": "string"
},
"LoggingBlock": {
"description": "Logging block for BIND9 configuration.\n\nConfigures logging options for the name server.\n\nBlock Grammar:\n```\nlogging {\n category <string> { <string>; ... };\n channel <string> {\n buffered <boolean>;\n file <quoted_string> [ versions ( unlimited | <integer> ) ] [ size <size> ] [ suffix ( increment | timestamp ) ];\n null;\n print-category <boolean>;\n print-severity <boolean>;\n print-time ( iso8601 | iso8601-utc | local | <boolean> );\n severity <log_severity>;\n stderr;\n syslog [ <syslog_facility> ];\n };\n};\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"channels": {
"description": "List of log channel definitions",
"items": {
"$ref": "#/$defs/LogChannel"
},
"title": "Channels",
"type": "array"
},
"categories": {
"description": "List of log category definitions",
"items": {
"$ref": "#/$defs/LogCategory"
},
"title": "Categories",
"type": "array"
}
},
"title": "LoggingBlock",
"type": "object"
},
"MXRecord": {
"description": "MX record - mail exchange server with priority.\n\nGrammar (Reference: RFC 1035 Section 3.3.9):\n```\n[<NAME>] [<TTL>] [<CLASS>] MX <PREFERENCE> <EXCHANGE>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "MX"
},
"preference": {
"description": "Priority (lower value = higher priority)",
"maximum": 65535,
"minimum": 0,
"title": "Preference",
"type": "integer"
},
"exchange": {
"description": "Hostname of mail server",
"title": "Exchange",
"type": "string"
}
},
"required": [
"preference",
"exchange"
],
"title": "MXRecord",
"type": "object"
},
"NAPTRRecord": {
"description": "NAPTR record - naming authority pointer.\n\nGrammar (Reference: RFC 3403):\n```\n[<NAME>] [<TTL>] [<CLASS>] NAPTR <ORDER> <PREFERENCE> <FLAGS>\n <SERVICES> \"<REGEXP>\" <REPLACEMENT>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "NAPTR"
},
"order": {
"description": "Order (lower processed first)",
"title": "Order",
"type": "integer"
},
"preference": {
"description": "Preference within same order",
"title": "Preference",
"type": "integer"
},
"flags": {
"description": "Flags (S, A, U, P)",
"title": "Flags",
"type": "string"
},
"services": {
"description": "Service parameters",
"title": "Services",
"type": "string"
},
"regexp": {
"description": "Regular expression",
"title": "Regexp",
"type": "string"
},
"replacement": {
"description": "Replacement dns name",
"title": "Replacement",
"type": "string"
}
},
"required": [
"order",
"preference",
"flags",
"services",
"regexp",
"replacement"
],
"title": "NAPTRRecord",
"type": "object"
},
"NSECRecord": {
"description": "NSEC record - next secure record (DNSSEC).\n\nGrammar (Reference: RFC 4034):\n```\n[<NAME>] [<TTL>] [<CLASS>] NSEC <NEXT_DOMAIN_NAME> <TYPE_BIT_MAPS>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "NSEC"
},
"next_domain_name": {
"description": "Next domain name in zone",
"title": "Next Domain Name",
"type": "string"
},
"type_bit_maps": {
"description": "Type bit maps",
"items": {
"type": "string"
},
"title": "Type Bit Maps",
"type": "array"
}
},
"required": [
"next_domain_name",
"type_bit_maps"
],
"title": "NSECRecord",
"type": "object"
},
"NSRecord": {
"description": "NS record - authoritative name server for a domain.\n\nGrammar (Reference: RFC 1035 Section 3.3.11):\n```\n[<NAME>] [<TTL>] [<CLASS>] NS <NSDNAME>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "NS"
},
"nsdname": {
"description": "Hostname of authoritative name server",
"title": "Nsdname",
"type": "string"
}
},
"required": [
"nsdname"
],
"title": "NSRecord",
"type": "object"
},
"Nsec3ParamBlock": {
"description": "NSEC3 parameters configuration.\n\nGrammar:\n```\nnsec3param [ iterations <integer> ] [ optout <boolean> ] [ salt-length <integer> ];\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"iterations": {
"anyOf": [
{
"ge": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of hash iterations (default: 0)",
"title": "Iterations"
},
"optout": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable opt-out (default: no)",
"title": "Optout"
},
"salt_length": {
"anyOf": [
{
"ge": 0,
"le": 255,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Salt length in bytes (default: 0)",
"title": "Salt Length"
}
},
"title": "Nsec3ParamBlock",
"type": "object"
},
"OptionsBlock": {
"description": "Global options block for BIND configuration.\n\nThis is the grammar of the options statement in the named.conf file\n\nGrammar:\n```\noptions {\n directory <quoted_string>;\n pid-file ( <quoted_string> | none );\n ... # dozens of directives grouped by area (server info, query processing,\n # zone/transfer defaults, DNSSEC, caching, rate limiting, notify targets,\n # response policy, catalog zones, etc.) - see the field descriptions below\n # and https://bind9.readthedocs.io/en/latest/reference.html#options-statement-grammar\n};\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"catalog_zones": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/CatalogZoneBlock"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Catalog zones configuration",
"title": "Catalog Zones"
},
"response_policy": {
"anyOf": [
{
"$ref": "#/$defs/ResponsePolicyBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Response policy configuration"
},
"rate_limit": {
"anyOf": [
{
"$ref": "#/$defs/RateLimitBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Response rate limiting configuration"
},
"also_notify": {
"anyOf": [
{
"$ref": "#/$defs/AlsoNotifyBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional servers to notify"
},
"sig_signing_nodes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum nodes to examine per quantum when signing",
"title": "Sig Signing Nodes"
},
"sig_signing_signatures": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Signature threshold per quantum when signing",
"title": "Sig Signing Signatures"
},
"sig_signing_type": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Private RDATA type for signing-state records",
"title": "Sig Signing Type"
},
"preferred_glue": {
"anyOf": [
{
"enum": [
"A",
"AAAA"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Preferred glue record type",
"title": "Preferred Glue"
},
"min_transfer_rate_in": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "integer"
},
{
"type": "integer"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum inbound transfer rate",
"title": "Min Transfer Rate In"
},
"min_refresh_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum refresh time for secondary zones",
"title": "Min Refresh Time"
},
"max_refresh_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum refresh time for secondary zones",
"title": "Max Refresh Time"
},
"min_retry_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum retry time for secondary zones",
"title": "Min Retry Time"
},
"max_retry_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum retry time for secondary zones",
"title": "Max Retry Time"
},
"rrset_order": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/RrsetOrderRule"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "RRset ordering rules",
"title": "Rrset Order"
},
"lmdb_mapsize": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum size for LMDB memory map",
"title": "Lmdb Mapsize"
},
"attach_cache": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cache to attach to for shared caching",
"title": "Attach Cache"
},
"match_mapped_addresses": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Match IPv4-mapped IPv6 addresses",
"title": "Match Mapped Addresses"
},
"disable_algorithms": {
"anyOf": [
{
"items": {
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
],
"type": "array"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Disable DNSSEC algorithms for specific zones",
"title": "Disable Algorithms"
},
"disable_ds_digests": {
"anyOf": [
{
"items": {
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
],
"type": "array"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Disable DS digest types for specific zones",
"title": "Disable Ds Digests"
},
"dns64_server": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server name for DNS64 zones",
"title": "Dns64 Server"
},
"dns64_contact": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Contact for DNS64 zones",
"title": "Dns64 Contact"
},
"dns64_blocks": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Dns64Block"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS64 configuration blocks",
"title": "Dns64 Blocks"
},
"ipv4only_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable automatic IPv4-only zones",
"title": "Ipv4Only Enable"
},
"ipv4only_server": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server name for IPV4ONLY.ARPA zone",
"title": "Ipv4Only Server"
},
"ipv4only_contact": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Contact for IPV4ONLY.ARPA zone",
"title": "Ipv4Only Contact"
},
"resolver_query_timeout": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Resolver query timeout in milliseconds",
"title": "Resolver Query Timeout"
},
"resolver_use_dns64": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Apply DNS64 to recursive queries",
"title": "Resolver Use Dns64"
},
"check_names": {
"anyOf": [
{
"items": {
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "string"
},
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
}
],
"type": "array"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Domain name checking rules",
"title": "Check Names"
},
"qname_minimization": {
"anyOf": [
{
"enum": [
"strict",
"relaxed",
"disabled",
"off"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "QNAME minimization behavior",
"title": "Qname Minimization"
},
"max_ixfr_ratio": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"const": "unlimited",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum IXFR size as percentage of zone",
"title": "Max Ixfr Ratio"
},
"ixfr_from_differences": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Generate IXFR from differences",
"title": "Ixfr From Differences"
},
"provide_ixfr": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Provide IXFR to secondaries",
"title": "Provide Ixfr"
},
"request_ixfr": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Request IXFR from primaries",
"title": "Request Ixfr"
},
"request_expire": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Request EDNS EXPIRE value",
"title": "Request Expire"
},
"dnssec_policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSSEC key and signing policy",
"title": "Dnssec Policy"
},
"trust_anchor_telemetry": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send trust anchor telemetry queries",
"title": "Trust Anchor Telemetry"
},
"validate_except": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Domains to exclude from DNSSEC validation",
"title": "Validate Except"
},
"key_directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSSEC key directory",
"title": "Key Directory"
},
"managed_keys_directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Managed keys directory",
"title": "Managed Keys Directory"
},
"new_zones_directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "New zones configuration directory",
"title": "New Zones Directory"
},
"nxdomain_redirect": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Suffix for NXDOMAIN redirection",
"title": "Nxdomain Redirect"
},
"deny_answer_addresses": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"items": {},
"type": "array"
},
{
"items": {
"type": "string"
},
"type": "array"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter answers containing specific addresses",
"title": "Deny Answer Addresses"
},
"deny_answer_aliases": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"items": {
"type": "string"
},
"type": "array"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter answers containing specific aliases",
"title": "Deny Answer Aliases"
},
"empty_server": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server name for empty zones",
"title": "Empty Server"
},
"empty_contact": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Contact for empty zones",
"title": "Empty Contact"
},
"empty_zones_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable built-in empty zones",
"title": "Empty Zones Enable"
},
"disable_empty_zone": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Disable specific empty zones",
"title": "Disable Empty Zone"
},
"version": {
"anyOf": [
{
"type": "string"
},
{
"const": "none",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server version string",
"title": "Version"
},
"hostname": {
"anyOf": [
{
"type": "string"
},
{
"const": "none",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server hostname string",
"title": "Hostname"
},
"server_id": {
"anyOf": [
{
"type": "string"
},
{
"enum": [
"none",
"hostname"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server identifier",
"title": "Server Id"
},
"max_query_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum iterative queries per recursive query",
"title": "Max Query Count"
},
"max_recursion_depth": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum recursion depth",
"title": "Max Recursion Depth"
},
"max_recursion_queries": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum iterative queries per recursive query",
"title": "Max Recursion Queries"
},
"max_query_restarts": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum CNAME chain length",
"title": "Max Query Restarts"
},
"notify_defer": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Delay before sending NOTIFY messages",
"title": "Notify Defer"
},
"notify_delay": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Delay between NOTIFY message sets",
"title": "Notify Delay"
},
"max_rsa_exponent_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum RSA exponent size in bits",
"title": "Max Rsa Exponent Size"
},
"prefetch": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "integer"
},
{
"type": "integer"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Prefetch trigger and eligibility TTLs",
"title": "Prefetch"
},
"v6_bias": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv6 server preference bias in milliseconds",
"title": "V6 Bias"
},
"masterfile_format": {
"anyOf": [
{
"enum": [
"raw",
"text"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Zone file format",
"title": "Masterfile Format"
},
"masterfile_style": {
"anyOf": [
{
"enum": [
"full",
"relative"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Zone file dump style",
"title": "Masterfile Style"
},
"edns_udp_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum advertised EDNS UDP buffer size",
"title": "Edns Udp Size"
},
"max_udp_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum EDNS UDP message size to send",
"title": "Max Udp Size"
},
"response_padding": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"items": {},
"type": "array"
},
{
"type": "integer"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "EDNS Padding configuration",
"title": "Response Padding"
},
"zone_statistics": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"enum": [
"full",
"terse",
"none"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Level of zone statistics gathering",
"title": "Zone Statistics"
},
"lame_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TTL for lame server caching",
"title": "Lame Ttl"
},
"servfail_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TTL for SERVFAIL caching",
"title": "Servfail Ttl"
},
"min_ncache_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum negative cache TTL",
"title": "Min Ncache Ttl"
},
"min_cache_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum positive cache TTL",
"title": "Min Cache Ttl"
},
"max_ncache_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum negative cache TTL",
"title": "Max Ncache Ttl"
},
"max_cache_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum positive cache TTL",
"title": "Max Cache Ttl"
},
"max_stale_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum stale record TTL",
"title": "Max Stale Ttl"
},
"dnssec_loadkeys_interval": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSSEC key repository check interval in minutes",
"title": "Dnssec Loadkeys Interval"
},
"nta_lifetime": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Negative trust anchor lifetime",
"title": "Nta Lifetime"
},
"nta_recheck": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Negative trust anchor recheck interval",
"title": "Nta Recheck"
},
"stale_answer_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TTL for stale answers",
"title": "Stale Answer Ttl"
},
"stale_answer_client_timeout": {
"anyOf": [
{
"type": "integer"
},
{
"enum": [
"disabled",
"off"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Timeout before returning stale answers",
"title": "Stale Answer Client Timeout"
},
"stale_refresh_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time window for returning stale answers",
"title": "Stale Refresh Time"
},
"nocookie_udp_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum UDP response size without valid cookie",
"title": "Nocookie Udp Size"
},
"cookie_algorithm": {
"anyOf": [
{
"const": "siphash24",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cookie generation algorithm",
"title": "Cookie Algorithm"
},
"cookie_secret": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Shared secrets for EDNS COOKIE generation",
"title": "Cookie Secret"
},
"serial_update_method": {
"anyOf": [
{
"enum": [
"date",
"increment",
"unixtime"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Dynamic DNS serial number update method",
"title": "Serial Update Method"
},
"max_journal_size": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"enum": [
"default",
"unlimited"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum journal file size",
"title": "Max Journal Size"
},
"max_records": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum records per zone",
"title": "Max Records"
},
"max_records_per_type": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum records per RRset",
"title": "Max Records Per Type"
},
"max_types_per_name": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum RR types per owner name",
"title": "Max Types Per Name"
},
"recursive_clients": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum concurrent recursive clients",
"title": "Recursive Clients"
},
"tcp_clients": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum simultaneous TCP connections",
"title": "Tcp Clients"
},
"clients_per_query": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Initial simultaneous clients per query",
"title": "Clients Per Query"
},
"max_clients_per_query": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum simultaneous clients per query",
"title": "Max Clients Per Query"
},
"fetches_per_zone": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum fetches per zone",
"title": "Fetches Per Zone"
},
"fetches_per_server": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum fetches per server",
"title": "Fetches Per Server"
},
"fetch_quota_params": {
"anyOf": [
{
"items": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "string"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Parameters for dynamic fetch quota adjustment",
"title": "Fetch Quota Params"
},
"max_cache_size": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"enum": [
"default",
"unlimited"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum cache size",
"title": "Max Cache Size"
},
"update_quota": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum concurrent UPDATE messages",
"title": "Update Quota"
},
"sig0key_checks_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum SIG(0) keys to consider",
"title": "Sig0Key Checks Limit"
},
"sig0message_checks_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum SIG(0) keys to try",
"title": "Sig0Message Checks Limit"
},
"forward": {
"anyOf": [
{
"enum": [
"first",
"only"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Forwarding behavior",
"title": "Forward"
},
"forwarders": {
"anyOf": [
{
"$ref": "#/$defs/ForwardersBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Forwarding servers"
},
"dual_stack_servers": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ServerSpecifier"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Dual-stack servers for last resort",
"title": "Dual Stack Servers"
},
"check_dup_records": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for duplicate records in primary zones",
"title": "Check Dup Records"
},
"check_integrity": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Perform zone integrity checks",
"title": "Check Integrity"
},
"check_mx": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check MX records",
"title": "Check Mx"
},
"check_mx_cname": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check MX records referring to CNAMEs",
"title": "Check Mx Cname"
},
"check_sibling": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for sibling glue",
"title": "Check Sibling"
},
"check_spf": {
"anyOf": [
{
"enum": [
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for TXT SPF records",
"title": "Check Spf"
},
"check_srv_cname": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check SRV records referring to CNAMEs",
"title": "Check Srv Cname"
},
"check_svcb": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Check SVCB records",
"title": "Check Svcb"
},
"check_wildcard": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for non-terminal wildcards",
"title": "Check Wildcard"
},
"multi_master": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Multiple primary servers for a zone",
"title": "Multi Master"
},
"notify": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"enum": [
"explicit",
"master-only",
"primary-only"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Send NOTIFY messages on zone changes",
"title": "Notify"
},
"notify_to_soa": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send NOTIFY to SOA MNAME",
"title": "Notify To Soa"
},
"try_tcp_refresh": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Try TCP if UDP refresh fails",
"title": "Try Tcp Refresh"
},
"zero_no_soa_ttl": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Set TTL to 0 for negative SOA responses",
"title": "Zero No Soa Ttl"
},
"allow_new_zones": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Allow runtime zone addition via rndc addzone",
"title": "Allow New Zones"
},
"auth_nxdomain": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Always set AA bit on NXDOMAIN responses",
"title": "Auth Nxdomain"
},
"flush_zones_on_shutdown": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Flush pending zone writes on shutdown",
"title": "Flush Zones On Shutdown"
},
"root_key_sentinel": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Respond to root key sentinel probes",
"title": "Root Key Sentinel"
},
"reuseport": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable kernel socket load-balancing",
"title": "Reuseport"
},
"message_compression": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Use DNS name compression in responses",
"title": "Message Compression"
},
"minimal_responses": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"enum": [
"no-auth",
"no-auth-recursive"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimize authority and additional sections",
"title": "Minimal Responses"
},
"minimal_any": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Return only one RRset for ANY queries over UDP",
"title": "Minimal Any"
},
"recursion": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Allow recursion",
"title": "Recursion"
},
"request_nsid": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send NSID option in queries",
"title": "Request Nsid"
},
"require_server_cookie": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Require valid server cookie for UDP responses",
"title": "Require Server Cookie"
},
"answer_cookie": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send COOKIE EDNS option in replies",
"title": "Answer Cookie"
},
"send_cookie": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send COOKIE EDNS option in queries",
"title": "Send Cookie"
},
"stale_answer_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Return stale cached answers when servers are down",
"title": "Stale Answer Enable"
},
"stale_cache_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Retain stale cached answers",
"title": "Stale Cache Enable"
},
"dnssec_validation": {
"anyOf": [
{
"enum": [
"yes",
"no",
"auto"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable DNSSEC validation",
"title": "Dnssec Validation"
},
"dnssec_accept_expired": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Accept expired DNSSEC signatures",
"title": "Dnssec Accept Expired"
},
"querylog": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable query logging at startup",
"title": "Querylog"
},
"zero_no_soa_ttl_cache": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Set TTL to 0 when caching negative SOA responses",
"title": "Zero No Soa Ttl Cache"
},
"synth_from_dnssec": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable aggressive use of DNSSEC-validated cache",
"title": "Synth From Dnssec"
},
"allow_query": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to send queries",
"title": "Allow Query"
},
"allow_query_on": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Local addresses allowed to receive queries",
"title": "Allow Query On"
},
"allow_transfer": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to receive zone transfers",
"title": "Allow Transfer"
},
"allow_update": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to submit dynamic updates",
"title": "Allow Update"
},
"allow_notify": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to send NOTIFY messages",
"title": "Allow Notify"
},
"allow_update_forwarding": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to forward dynamic updates",
"title": "Allow Update Forwarding"
},
"allow_query_cache": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to access cache",
"title": "Allow Query Cache"
},
"allow_query_cache_on": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Local addresses allowed to send cache responses",
"title": "Allow Query Cache On"
},
"allow_recursion": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to perform recursive queries",
"title": "Allow Recursion"
},
"allow_recursion_on": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Local addresses allowed to receive recursive queries",
"title": "Allow Recursion On"
},
"blackhole": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts to ignore completely",
"title": "Blackhole"
},
"no_case_compress": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Clients requiring case-insensitive compression",
"title": "No Case Compress"
},
"directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server's working directory",
"title": "Directory"
},
"pid_file": {
"anyOf": [
{
"type": "string"
},
{
"const": "none",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "PID file path",
"title": "Pid File"
},
"session_keyfile": {
"anyOf": [
{
"type": "string"
},
{
"const": "none",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Session key file path",
"title": "Session Keyfile"
},
"session_keyname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Session key name",
"title": "Session Keyname"
},
"session_keyalg": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Session key algorithm",
"title": "Session Keyalg"
},
"port": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "UDP/TCP port for DNS traffic",
"title": "Port"
},
"tls_port": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "TCP port for DNS-over-TLS",
"title": "Tls Port"
},
"https_port": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "TCP port for DNS-over-HTTPS",
"title": "Https Port"
},
"http_port": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "TCP port for unencrypted DNS-over-HTTP",
"title": "Http Port"
},
"http_listener_clients": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum concurrent HTTP connections per listener",
"title": "Http Listener Clients"
},
"http_streams_per_connection": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum HTTP/2 streams per connection",
"title": "Http Streams Per Connection"
},
"listen_on": {
"anyOf": [
{
"items": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv4 addresses to listen on",
"title": "Listen On"
},
"listen_on_v6": {
"anyOf": [
{
"items": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv6 addresses to listen on",
"title": "Listen On V6"
},
"query_source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"enum": [
"*",
"none"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv4 address for queries",
"title": "Query Source"
},
"query_source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"enum": [
"*",
"none"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv6 address for queries",
"title": "Query Source V6"
},
"transfer_source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv4 address for zone transfers",
"title": "Transfer Source"
},
"transfer_source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv6 address for zone transfers",
"title": "Transfer Source V6"
},
"notify_source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv4 address for NOTIFY messages",
"title": "Notify Source"
},
"notify_source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv6 address for NOTIFY messages",
"title": "Notify Source V6"
},
"parental_source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv4 address for parental agent queries",
"title": "Parental Source"
},
"parental_source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv6 address for parental agent queries",
"title": "Parental Source V6"
},
"max_transfer_time_in": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum inbound transfer time in minutes",
"title": "Max Transfer Time In"
},
"max_transfer_idle_in": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum idle time for inbound transfers in minutes",
"title": "Max Transfer Idle In"
},
"max_transfer_time_out": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum outbound transfer time in minutes",
"title": "Max Transfer Time Out"
},
"max_transfer_idle_out": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum idle time for outbound transfers in minutes",
"title": "Max Transfer Idle Out"
},
"max_transfers_in": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum concurrent inbound transfers",
"title": "Max Transfers In"
},
"max_transfers_out": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum concurrent outbound transfers",
"title": "Max Transfers Out"
},
"transfers_per_ns": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum inbound transfers per name server",
"title": "Transfers Per Ns"
},
"notify_rate": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "NOTIFY messages per second during normal operation",
"title": "Notify Rate"
},
"startup_notify_rate": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "NOTIFY messages per second at startup",
"title": "Startup Notify Rate"
},
"serial_query_rate": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "SOA queries per second",
"title": "Serial Query Rate"
},
"transfer_format": {
"anyOf": [
{
"enum": [
"many-answers",
"one-answer"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Zone transfer format",
"title": "Transfer Format"
},
"transfer_message_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum zone transfer message size",
"title": "Transfer Message Size"
},
"automatic_interface_scan": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Automatically rescan network interfaces",
"title": "Automatic Interface Scan"
},
"responselog": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable response logging at startup",
"title": "Responselog"
},
"tcp_receive_buffer": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "TCP receive buffer size",
"title": "Tcp Receive Buffer"
},
"udp_receive_buffer": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "UDP receive buffer size",
"title": "Udp Receive Buffer"
},
"tcp_send_buffer": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "TCP send buffer size",
"title": "Tcp Send Buffer"
},
"udp_send_buffer": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "UDP send buffer size",
"title": "Udp Send Buffer"
},
"dnstap": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSTAP message types to log",
"title": "Dnstap"
},
"dnstap_identity": {
"anyOf": [
{
"type": "string"
},
{
"enum": [
"none",
"hostname"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSTAP identity string",
"title": "Dnstap Identity"
},
"dnstap_version": {
"anyOf": [
{
"type": "string"
},
{
"const": "none",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSTAP version string",
"title": "Dnstap Version"
},
"fstrm_set_buffer_hint": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "FSTRM buffer hint",
"title": "Fstrm Set Buffer Hint"
},
"fstrm_set_flush_timeout": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "FSTRM flush timeout",
"title": "Fstrm Set Flush Timeout"
},
"fstrm_set_input_queue_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "FSTRM input queue size",
"title": "Fstrm Set Input Queue Size"
},
"fstrm_set_output_notify_threshold": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "FSTRM output notify threshold",
"title": "Fstrm Set Output Notify Threshold"
},
"fstrm_set_output_queue_model": {
"anyOf": [
{
"enum": [
"mpsc",
"spsc"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "FSTRM output queue model",
"title": "Fstrm Set Output Queue Model"
},
"fstrm_set_output_queue_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "FSTRM output queue size",
"title": "Fstrm Set Output Queue Size"
},
"fstrm_set_reopen_interval": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "FSTRM reopen interval",
"title": "Fstrm Set Reopen Interval"
},
"dump_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Database dump file path",
"title": "Dump File"
},
"memstatistics_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Memory statistics file path",
"title": "Memstatistics File"
},
"recursing_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Recursing queries dump file path",
"title": "Recursing File"
},
"statistics_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Statistics file path",
"title": "Statistics File"
},
"secroots_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Security roots dump file path",
"title": "Secroots File"
},
"geoip_directory": {
"anyOf": [
{
"type": "string"
},
{
"const": "none",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "GeoIP database directory",
"title": "Geoip Directory"
},
"interface_interval": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Network interface scan interval",
"title": "Interface Interval"
},
"tcp_listen_queue": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "TCP listen queue depth",
"title": "Tcp Listen Queue"
},
"tcp_initial_timeout": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Initial TCP timeout in deciseconds",
"title": "Tcp Initial Timeout"
},
"tcp_idle_timeout": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "TCP idle timeout in deciseconds",
"title": "Tcp Idle Timeout"
},
"tcp_keepalive_timeout": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "TCP keepalive timeout in deciseconds",
"title": "Tcp Keepalive Timeout"
},
"tcp_advertised_timeout": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Advertised TCP timeout in deciseconds",
"title": "Tcp Advertised Timeout"
}
},
"title": "OptionsBlock",
"type": "object"
},
"PTRRecord": {
"description": "PTR record - pointer for reverse DNS lookups.\n\nGrammar (Reference: RFC 1035 Section 3.3.12):\n```\n[<NAME>] [<TTL>] [<CLASS>] PTR <DOMAIN_NAME>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "PTR"
},
"domain_name": {
"description": "Canonical domain name",
"title": "Domain Name",
"type": "string"
}
},
"required": [
"domain_name"
],
"title": "PTRRecord",
"type": "object"
},
"RPRecord": {
"description": "RP record - responsible person.\n\nGrammar (Reference: RFC 1183):\n```\n[<NAME>] [<TTL>] [<CLASS>] RP <MBOX_DNAME> <TXT_DNAME>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "RP"
},
"mbox_dname": {
"description": "Mailbox domain name",
"title": "Mbox Dname",
"type": "string"
},
"txt_dname": {
"description": "TXT record domain name",
"title": "Txt Dname",
"type": "string"
}
},
"required": [
"mbox_dname",
"txt_dname"
],
"title": "RPRecord",
"type": "object"
},
"RRClassEnum": {
"enum": [
"IN",
"CH",
"HS"
],
"title": "RRClassEnum",
"type": "string"
},
"RRSIGRecord": {
"description": "RRSIG record - digital signature for RRset (DNSSEC).\n\nGrammar (Reference: RFC 4034):\n```\n[<NAME>] [<TTL>] [<CLASS>] RRSIG <TYPE_COVERED> <ALGORITHM> <LABELS>\n <ORIGINAL_TTL> <SIGNATURE_EXPIRATION> <SIGNATURE_INCEPTION>\n <KEY_TAG> <SIGNER_NAME> <SIGNATURE>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "RRSIG"
},
"type_covered": {
"description": "RR type covered by signature",
"title": "Type Covered",
"type": "string"
},
"algorithm": {
"$ref": "#/$defs/DNSSECAlgorithmEnum",
"description": "DNSSEC algorithm used"
},
"labels": {
"description": "Number of labels in original name",
"title": "Labels",
"type": "integer"
},
"original_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "Original TTL of RRset",
"title": "Original Ttl"
},
"signature_expiration": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "Signature expiration time (Unix timestamp)",
"title": "Signature Expiration"
},
"signature_inception": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "Signature inception time (Unix timestamp)",
"title": "Signature Inception"
},
"key_tag": {
"description": "Key tag value",
"title": "Key Tag",
"type": "integer"
},
"signer_name": {
"description": "Name of signing key",
"title": "Signer Name",
"type": "string"
},
"signature": {
"description": "Base64 encoded signature",
"title": "Signature",
"type": "string"
}
},
"required": [
"type_covered",
"algorithm",
"labels",
"original_ttl",
"signature_expiration",
"signature_inception",
"key_tag",
"signer_name",
"signature"
],
"title": "RRSIGRecord",
"type": "object"
},
"RRTypeEnum": {
"enum": [
"A",
"AAAA",
"CNAME",
"MX",
"NS",
"PTR",
"SOA",
"TXT",
"SPF",
"SRV",
"DNAME",
"DS",
"DNSKEY",
"RRSIG",
"NSEC",
"SSHFP",
"TLSA",
"CERT",
"CAA",
"LOC",
"RP",
"HINFO",
"NAPTR"
],
"title": "RRTypeEnum",
"type": "string"
},
"RateLimitBlock": {
"description": "Response rate limiting configuration block.",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"responses_per_second": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Limit for non-empty responses per second",
"title": "Responses Per Second"
},
"errors_per_second": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Limit for error responses per second",
"title": "Errors Per Second"
},
"nxdomains_per_second": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Limit for NXDOMAIN responses per second",
"title": "Nxdomains Per Second"
},
"nodata_per_second": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Limit for NODATA responses per second",
"title": "Nodata Per Second"
},
"referrals_per_second": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Limit for referral responses per second",
"title": "Referrals Per Second"
},
"all_per_second": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Limit for all UDP responses per second",
"title": "All Per Second"
},
"slip": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Rate at which to send truncated responses",
"title": "Slip"
},
"window": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Time window for rate limiting in seconds",
"title": "Window"
},
"qps_scale": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Query rate at which to scale back limits",
"title": "Qps Scale"
},
"ipv4_prefix_length": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv4 prefix length for client grouping",
"title": "Ipv4 Prefix Length"
},
"ipv6_prefix_length": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv6 prefix length for client grouping",
"title": "Ipv6 Prefix Length"
},
"exempt_clients": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Clients exempt from rate limiting",
"title": "Exempt Clients"
},
"max_table_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum size of rate limit table",
"title": "Max Table Size"
},
"min_table_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum size of rate limit table",
"title": "Min Table Size"
},
"log_only": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Log rate limiting without actually dropping",
"title": "Log Only"
}
},
"title": "RateLimitBlock",
"type": "object"
},
"RemoteServerEntry": {
"description": "Single server entry in a remote-servers block.\n\nCan be one of:\n1. Server list reference (string)\n2. IPv4 address with optional port\n3. IPv6 address with optional port\n\nGrammar:\n```\n( <server-list> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] )\n[ key <string> ] [ tls <string> ];\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"server": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"format": "ipv6",
"type": "string"
}
],
"description": "Server specification. Can be:\n- Server list name (string)\n- IPv4 address (e.g., 192.0.2.1)\n- IPv6 address (e.g., 2001:db8::1)",
"title": "Server"
},
"port": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Port number for this specific server.\nOverrides the block-level port if specified.",
"title": "Port"
},
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TSIG key for authentication with this server",
"title": "Key"
},
"tls": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TLS configuration name for encrypted zone transfers.\nWarning: Without remote-hostname or ca-file in tls configuration,\nTLS is not authenticated (Opportunistic TLS).",
"title": "Tls"
}
},
"required": [
"server"
],
"title": "RemoteServerEntry",
"type": "object"
},
"RemoteServersBlock": {
"description": "Remote servers block for BIND9 configuration.\n\nDefines a list of servers to be used by primary and secondary zones.\nThis list can be referenced by parental-agents, primaries, and also-notify.\n\nGrammar:\n```\nremote-servers <string> [ port <integer> ]\n [ source ( <ipv4_address> | * ) ]\n [ source-v6 ( <ipv6_address> | * ) ]\n {\n ( <server-list> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] )\n [ key <string> ] [ tls <string> ];\n ...\n };\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"description": "Name of this remote servers list for reference",
"title": "Name",
"type": "string"
},
"port": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Default port for all servers in this list.\nCan be overridden by individual server port.",
"title": "Port"
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv4 address for outgoing connections.\n* means use any IPv4 interface address.",
"title": "Source"
},
"source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv6 address for outgoing connections.\n* means use any IPv6 interface address.",
"title": "Source V6"
},
"servers": {
"description": "List of servers in this remote servers list",
"items": {
"$ref": "#/$defs/RemoteServerEntry"
},
"title": "Servers",
"type": "array"
}
},
"required": [
"name"
],
"title": "RemoteServersBlock",
"type": "object"
},
"ResponsePolicyBlock": {
"description": "Response Policy configuration block.",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"zones": {
"description": "Response policy zones",
"items": {
"$ref": "#/$defs/ResponsePolicyZone"
},
"title": "Zones",
"type": "array"
},
"add_soa": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Add SOA record to responses (global)",
"title": "Add Soa"
},
"break_dnssec": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Apply RPZ even when DNSSEC records exist",
"title": "Break Dnssec"
},
"max_policy_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum TTL for policy responses (global)",
"title": "Max Policy Ttl"
},
"min_update_interval": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum interval between updates (global)",
"title": "Min Update Interval"
},
"min_ns_dots": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum dots in nameserver names",
"title": "Min Ns Dots"
},
"nsip_wait_recurse": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Wait for recursion before applying NSIP rules",
"title": "Nsip Wait Recurse"
},
"nsdname_wait_recurse": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Wait for recursion before applying NSDNAME rules",
"title": "Nsdname Wait Recurse"
},
"qname_wait_recurse": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Wait for recursion before applying QNAME rules",
"title": "Qname Wait Recurse"
},
"recursive_only": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Apply only to recursive queries (global)",
"title": "Recursive Only"
},
"servfail_until_ready": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Return SERVFAIL until RPZ zones are loaded",
"title": "Servfail Until Ready"
},
"nsip_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable NSIP triggers (global)",
"title": "Nsip Enable"
},
"nsdname_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable NSDNAME triggers (global)",
"title": "Nsdname Enable"
}
},
"title": "ResponsePolicyBlock",
"type": "object"
},
"ResponsePolicyZone": {
"description": "Response Policy Zone configuration.",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"zone": {
"description": "RPZ zone name",
"title": "Zone",
"type": "string"
},
"add_soa": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Add SOA record to responses",
"title": "Add Soa"
},
"log": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable logging for this zone",
"title": "Log"
},
"max_policy_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum TTL for policy responses",
"title": "Max Policy Ttl"
},
"min_update_interval": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum interval between updates",
"title": "Min Update Interval"
},
"policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Policy action (cname, disabled, drop, given, etc.)",
"title": "Policy"
},
"recursive_only": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Apply only to recursive queries",
"title": "Recursive Only"
},
"nsip_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable NSIP triggers",
"title": "Nsip Enable"
},
"nsdname_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable NSDNAME triggers",
"title": "Nsdname Enable"
},
"ede": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Extended DNS Error code",
"title": "Ede"
}
},
"required": [
"zone"
],
"title": "ResponsePolicyZone",
"type": "object"
},
"RrsetOrderRule": {
"description": "RRset ordering rule.",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"order_class": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Class to match",
"title": "Order Class"
},
"order_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Type to match",
"title": "Order Type"
},
"order_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Name to match",
"title": "Order Name"
},
"order": {
"description": "Ordering method (fixed, random, cyclic, none)",
"title": "Order",
"type": "string"
}
},
"required": [
"order"
],
"title": "RrsetOrderRule",
"type": "object"
},
"SOARecord": {
"description": "SOA record - defines authoritative information for the zone.\n\nGrammar (Reference: RFC 1035 Section 3.3.13):\n```\n[<NAME>] [<TTL>] [<CLASS>] SOA <MNAME> <RNAME> (\n <SERIAL> <REFRESH> <RETRY> <EXPIRE> <MINIMUM>\n)\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Global $TTL for the zone (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "SOA"
},
"mname": {
"description": "Primary master name server",
"title": "Mname",
"type": "string"
},
"rname": {
"description": "Email address of responsible person (@ replaced by .)",
"title": "Rname",
"type": "string"
},
"serial": {
"description": "Zone serial number (32-bit unsigned)",
"title": "Serial",
"type": "integer"
},
"refresh": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "Refresh interval in seconds",
"title": "Refresh"
},
"retry": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "Retry interval in seconds",
"title": "Retry"
},
"expire": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "Expire time in seconds",
"title": "Expire"
},
"minimum": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "Minimum TTL in seconds (negative cache)",
"title": "Minimum"
},
"origin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Global $ORIGIN domain name",
"title": "Origin"
}
},
"required": [
"mname",
"rname",
"serial",
"refresh",
"retry",
"expire",
"minimum"
],
"title": "SOARecord",
"type": "object"
},
"SPFRecord": {
"description": "SPF record - Sender Policy Framework (syntactic equivalent to TXT).\n\nGrammar (Reference: RFC 4408):\n```\n[<NAME>] [<TTL>] [<CLASS>] SPF \"<SPF_DATA>\"\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "SPF"
},
"spf_data": {
"description": "SPF policy text",
"items": {
"type": "string"
},
"title": "Spf Data",
"type": "array"
}
},
"required": [
"spf_data"
],
"title": "SPFRecord",
"type": "object"
},
"SRVRecord": {
"description": "SRV record - service location record.\n\nGrammar (Reference: RFC 2782):\n```\n[<NAME>] [<TTL>] [<CLASS>] SRV <PRIORITY> <WEIGHT> <PORT> <TARGET>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "SRV"
},
"priority": {
"description": "Priority (lower value = higher priority)",
"maximum": 65535,
"minimum": 0,
"title": "Priority",
"type": "integer"
},
"weight": {
"description": "Weight for load balancing",
"maximum": 65535,
"minimum": 0,
"title": "Weight",
"type": "integer"
},
"port": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Service port number",
"title": "Port"
},
"target": {
"description": "Target hostname",
"title": "Target",
"type": "string"
}
},
"required": [
"priority",
"weight",
"port",
"target"
],
"title": "SRVRecord",
"type": "object"
},
"SSHFPAlgorithmEnum": {
"description": "SSHFP algorithm types.",
"enum": [
1,
2,
3,
4
],
"title": "SSHFPAlgorithmEnum",
"type": "integer"
},
"SSHFPHashTypeEnum": {
"description": "SSHFP hash types.",
"enum": [
1,
2
],
"title": "SSHFPHashTypeEnum",
"type": "integer"
},
"SSHFPRecord": {
"description": "SSHFP record - SSH public key fingerprint.\n\nGrammar (Reference: RFC 4255):\n```\n[<NAME>] [<TTL>] [<CLASS>] SSHFP <ALGORITHM> <HASH_TYPE> <FINGERPRINT>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "SSHFP"
},
"algorithm": {
"$ref": "#/$defs/SSHFPAlgorithmEnum",
"description": "SSH key algorithm"
},
"hash_type": {
"$ref": "#/$defs/SSHFPHashTypeEnum",
"description": "Hash algorithm used"
},
"fingerprint": {
"description": "Hexadecimal fingerprint",
"title": "Fingerprint",
"type": "string"
}
},
"required": [
"algorithm",
"hash_type",
"fingerprint"
],
"title": "SSHFPRecord",
"type": "object"
},
"ServerBlock": {
"description": "Server configuration block for BIND.\n\nGrammar:\n```\nserver <netprefix> {\n bogus <boolean>;\n edns <boolean>;\n edns-udp-size <integer>;\n edns-version <integer>;\n keys <server_key>;\n max-udp-size <integer>;\n notify-source ( <ipv4_address> | * );\n notify-source-v6 ( <ipv6_address> | * );\n padding <integer>;\n provide-ixfr <boolean>;\n query-source [ address ] ( <ipv4_address> | * );\n query-source-v6 [ address ] ( <ipv6_address> | * );\n request-expire <boolean>;\n request-ixfr <boolean>;\n request-nsid <boolean>;\n require-cookie <boolean>;\n send-cookie <boolean>;\n tcp-keepalive <boolean>;\n tcp-only <boolean>;\n transfer-format ( many-answers | one-answer );\n transfer-source ( <ipv4_address> | * );\n transfer-source-v6 ( <ipv6_address> | * );\n transfers <integer>;\n};\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for the server block",
"title": "Comment"
},
"netprefix": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4network",
"type": "string"
},
{
"format": "ipv6network",
"type": "string"
}
],
"description": "Network prefix for the remote server",
"title": "Netprefix"
},
"bogus": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Mark remote server as bogus",
"title": "Bogus"
},
"edns": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Use EDNS0 when communicating with remote server",
"title": "Edns"
},
"provide_ixfr": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Provide IXFR to this server",
"title": "Provide Ixfr"
},
"request_expire": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Request EDNS EXPIRE value",
"title": "Request Expire"
},
"request_ixfr": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Request IXFR from this server",
"title": "Request Ixfr"
},
"request_nsid": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send NSID option in queries to this server",
"title": "Request Nsid"
},
"require_cookie": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Require valid server cookie from this server",
"title": "Require Cookie"
},
"send_cookie": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send COOKIE EDNS option to this server",
"title": "Send Cookie"
},
"tcp_keepalive": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Add EDNS TCP keepalive to messages over TCP",
"title": "Tcp Keepalive"
},
"tcp_only": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Use TCP transport only",
"title": "Tcp Only"
},
"edns_udp_size": {
"anyOf": [
{
"ge": 0,
"le": 512,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "EDNS UDP buffer size for this server",
"title": "Edns Udp Size"
},
"edns_version": {
"anyOf": [
{
"ge": 0,
"le": 255,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum EDNS version to send to this server",
"title": "Edns Version"
},
"max_udp_size": {
"anyOf": [
{
"ge": 0,
"le": 512,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum UDP message size for this server",
"title": "Max Udp Size"
},
"padding": {
"anyOf": [
{
"ge": 0,
"le": 512,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "EDNS Padding block size",
"title": "Padding"
},
"transfers": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum concurrent inbound transfers from this server",
"title": "Transfers"
},
"transfer_format": {
"anyOf": [
{
"enum": [
"many-answers",
"one-answer"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Zone transfer format for this server",
"title": "Transfer Format"
},
"keys": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TSIG key for transaction security",
"title": "Keys"
},
"notify_source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv4 source address for NOTIFY messages",
"title": "Notify Source"
},
"notify_source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv6 source address for NOTIFY messages",
"title": "Notify Source V6"
},
"query_source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv4 source address for queries",
"title": "Query Source"
},
"query_source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv6 source address for queries",
"title": "Query Source V6"
},
"transfer_source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv4 source address for zone transfers",
"title": "Transfer Source"
},
"transfer_source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv6 source address for zone transfers",
"title": "Transfer Source V6"
}
},
"required": [
"netprefix"
],
"title": "ServerBlock",
"type": "object"
},
"ServerSpecifier": {
"description": "Specificator for server type fields.\n\nGrammar:\n```\n( <ip_address> [ port <integer> ] ) [ key <server_key> ] [ tls <tls_id> ]\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"address": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"format": "ipv6",
"type": "string"
}
],
"description": "Server IP-address",
"title": "Address"
},
"port": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Server port",
"title": "Port"
},
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Auth key",
"title": "Key"
},
"tls": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TLS configuration",
"title": "Tls"
}
},
"required": [
"address"
],
"title": "ServerSpecifier",
"type": "object"
},
"StatisticsChannelsBlock": {
"description": "Statistics channels configuration block for BIND.\n\nGrammar:\n```\nstatistics-channels {\n inet ( <ipv4_address> | <ipv6_address> | * )\n [ port ( <integer> | * ) ]\n [ allow { <address_match_element>; ... } ]; // may occur multiple times\n}; // may occur multiple times\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"channels": {
"description": "List of inet channels",
"items": {
"$ref": "#/$defs/InetChannel"
},
"title": "Channels",
"type": "array"
}
},
"title": "StatisticsChannelsBlock",
"type": "object"
},
"SyslogFacilityEnum": {
"enum": [
"kern",
"user",
"mail",
"daemon",
"auth",
"syslog",
"lpr",
"news",
"uucp",
"cron",
"authpriv",
"ftp",
"local0",
"local1",
"local2",
"local3",
"local4",
"local5",
"local6",
"local7"
],
"title": "SyslogFacilityEnum",
"type": "string"
},
"TLSACertUsageEnum": {
"description": "TLSA certificate usage values.",
"enum": [
0,
1,
2,
3
],
"title": "TLSACertUsageEnum",
"type": "integer"
},
"TLSAMatchingTypeEnum": {
"description": "TLSA matching type values.",
"enum": [
0,
1,
2
],
"title": "TLSAMatchingTypeEnum",
"type": "integer"
},
"TLSARecord": {
"description": "TLSA record - TLS certificate association (DANE).\n\nGrammar (Reference: RFC 6698):\n```\n[<NAME>] [<TTL>] [<CLASS>] TLSA <CERT_USAGE> <SELECTOR> <MATCHING_TYPE> <CERT_DATA>\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "TLSA"
},
"cert_usage": {
"$ref": "#/$defs/TLSACertUsageEnum",
"description": "Certificate usage"
},
"selector": {
"$ref": "#/$defs/TLSASelectorEnum",
"description": "Part of certificate selected"
},
"matching_type": {
"$ref": "#/$defs/TLSAMatchingTypeEnum",
"description": "How certificate is presented"
},
"cert_data": {
"description": "Certificate association data",
"title": "Cert Data",
"type": "string"
}
},
"required": [
"cert_usage",
"selector",
"matching_type",
"cert_data"
],
"title": "TLSARecord",
"type": "object"
},
"TLSASelectorEnum": {
"description": "TLSA selector values.",
"enum": [
0,
1
],
"title": "TLSASelectorEnum",
"type": "integer"
},
"TXTRecord": {
"description": "TXT record - text strings associated with a domain.\n\nGrammar (Reference: RFC 1035 Section 3.3.14):\n```\n[<NAME>] [<TTL>] [<CLASS>] TXT \"<TEXT_DATA>\"\n```",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS name (optional, inherits from previous RR)",
"title": "Name"
},
"ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time to live in seconds (optional)",
"title": "Ttl"
},
"rr_class": {
"anyOf": [
{
"$ref": "#/$defs/RRClassEnum"
},
{
"type": "null"
}
],
"default": "IN",
"description": "Record class"
},
"rr_type": {
"$ref": "#/$defs/RRTypeEnum",
"default": "TXT"
},
"text_data": {
"description": "List of text strings (each max 255 chars)",
"items": {
"type": "string"
},
"title": "Text Data",
"type": "array"
}
},
"required": [
"text_data"
],
"title": "TXTRecord",
"type": "object"
},
"TimeFormatEnum": {
"enum": [
"iso8601",
"iso8601-utc",
"local"
],
"title": "TimeFormatEnum",
"type": "string"
},
"TlsBlock": {
"description": "TLS configuration block for BIND.\n\nGrammar:\ntls <string> {\n ca-file <quoted_string>;\n cert-file <quoted_string>;\n cipher-suites <string>;\n ciphers <string>;\n dhparam-file <quoted_string>;\n key-file <quoted_string>;\n prefer-server-ciphers <boolean>;\n protocols { <string>; ... };\n remote-hostname <quoted_string>;\n session-tickets <boolean>;\n}; // may occur multiple times\n\nBlocks: topmost\nTags: security\n\n\"ephemeral\" and \"none\" are reserved tls_id values used to *reference* a TLS\nconfiguration in-line (e.g. `tls ephemeral;` on a listener, or the `tls`\nfield of a remote-servers/server entry) - passed as a plain string wherever\na tls_id_BIND is expected. They cannot be *defined* via a `tls <name> { ...\n};` clause: named-checkconf rejects that unconditionally, even with an\nempty body, as \"tls clause name '<name>' is reserved for internal use\".",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"name": {
"description": "Name of the TLS configuration",
"title": "Name",
"type": "string"
},
"key_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Path to private TLS key file",
"title": "Key File"
},
"cert_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Path to TLS certificate file",
"title": "Cert File"
},
"ca_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Path to trusted CA certificates file",
"title": "Ca File"
},
"dhparam_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Path to Diffie-Hellman parameters file",
"title": "Dhparam File"
},
"ciphers": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Allowed ciphers for TLSv1.2/TLSv1.3 (OpenSSL format)",
"title": "Ciphers"
},
"protocols": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Allowed TLS protocol versions",
"title": "Protocols"
},
"prefer_server_ciphers": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Prefer server ciphers over client ones",
"title": "Prefer Server Ciphers"
},
"session_tickets": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable TLS session tickets (RFC 5077)",
"title": "Session Tickets"
},
"remote_hostname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Expected hostname in remote server certificate",
"title": "Remote Hostname"
}
},
"required": [
"name"
],
"title": "TlsBlock",
"type": "object"
},
"TrustAnchorsBlock": {
"description": "Trust anchors configuration block for DNSSEC in BIND.\n\nGrammar:\ntrust-anchors {\n <string> ( static-key | initial-key | static-ds | initial-ds )\n <integer> <integer> <integer> <quoted_string>;\n ...\n}; // may occur multiple times\n\nBlocks: topmost, view\nTags: dnssec",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"anchors": {
"description": "List of trust anchor entries",
"items": {
"anyOf": [
{
"$ref": "#/$defs/KeyTrustAnchor"
},
{
"$ref": "#/$defs/DSTrustAnchor"
}
]
},
"title": "Anchors",
"type": "array"
}
},
"title": "TrustAnchorsBlock",
"type": "object"
},
"UpdatePolicyBlock": {
"description": "Update-policy block for zone.\n\nGrammar: update-policy ( local | { ( deny | grant ) <string> ( 6to4-self | external | ... )\n [ <string> ] <rrtypelist>; ... } );",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"local": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Use local policy",
"title": "Local"
},
"rules": {
"description": "List of rules",
"items": {
"$ref": "#/$defs/UpdatePolicyRule"
},
"title": "Rules",
"type": "array"
}
},
"title": "UpdatePolicyBlock",
"type": "object"
},
"UpdatePolicyRule": {
"description": "Rule for update-policy.\n\nGrammar: ( deny | grant ) <string> ( 6to4-self | external | krb5-self | krb5-selfsub |\n krb5-subdomain | krb5-subdomain-self-rhs | ms-self | ms-selfsub |\n ms-subdomain | ms-subdomain-self-rhs | name | self | selfsub | selfwild |\n subdomain | tcp-self | wildcard | zonesub ) [ <string> ] <rrtypelist>;",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"action": {
"description": "Action: deny or grant",
"enum": [
"deny",
"grant"
],
"title": "Action",
"type": "string"
},
"identity": {
"description": "Identifier (key or domain name)",
"title": "Identity",
"type": "string"
},
"rule_type": {
"$ref": "#/$defs/UpdatePolicyRuleTypeEnum",
"description": "Rule type"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Name for matching (optional)",
"title": "Name"
},
"record_types": {
"description": "DNS record types",
"items": {
"type": "string"
},
"title": "Record Types",
"type": "array"
}
},
"required": [
"action",
"identity",
"rule_type"
],
"title": "UpdatePolicyRule",
"type": "object"
},
"UpdatePolicyRuleTypeEnum": {
"description": "Rule types for update-policy.",
"enum": [
"name",
"subdomain",
"zonesub",
"wildcard",
"self",
"selfsub",
"selfwild",
"ms-self",
"ms-selfsub",
"ms-subdomain",
"ms-subdomain-self-rhs",
"krb5-self",
"krb5-selfsub",
"krb5-subdomain",
"krb5-subdomain-self-rhs",
"tcp-self",
"6to4-self",
"external"
],
"title": "UpdatePolicyRuleTypeEnum",
"type": "string"
},
"ViewBlock": {
"description": "View block for BIND9 configuration.\n\nGrammar:\nview <string> [ <class> ] {\n ... # view-specific options and zones\n};\n\nAllows a name server to answer a DNS query differently depending on who is asking.",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"catalog_zones": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/CatalogZoneBlock"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Catalog zones configuration",
"title": "Catalog Zones"
},
"response_policy": {
"anyOf": [
{
"$ref": "#/$defs/ResponsePolicyBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Response policy configuration"
},
"rate_limit": {
"anyOf": [
{
"$ref": "#/$defs/RateLimitBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Response rate limiting configuration"
},
"also_notify": {
"anyOf": [
{
"$ref": "#/$defs/AlsoNotifyBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional servers to notify"
},
"sig_signing_nodes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum nodes to examine per quantum when signing",
"title": "Sig Signing Nodes"
},
"sig_signing_signatures": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Signature threshold per quantum when signing",
"title": "Sig Signing Signatures"
},
"sig_signing_type": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Private RDATA type for signing-state records",
"title": "Sig Signing Type"
},
"preferred_glue": {
"anyOf": [
{
"enum": [
"A",
"AAAA"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Preferred glue record type",
"title": "Preferred Glue"
},
"min_transfer_rate_in": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "integer"
},
{
"type": "integer"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum inbound transfer rate",
"title": "Min Transfer Rate In"
},
"min_refresh_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum refresh time for secondary zones",
"title": "Min Refresh Time"
},
"max_refresh_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum refresh time for secondary zones",
"title": "Max Refresh Time"
},
"min_retry_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum retry time for secondary zones",
"title": "Min Retry Time"
},
"max_retry_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum retry time for secondary zones",
"title": "Max Retry Time"
},
"rrset_order": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/RrsetOrderRule"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "RRset ordering rules",
"title": "Rrset Order"
},
"lmdb_mapsize": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum size for LMDB memory map",
"title": "Lmdb Mapsize"
},
"attach_cache": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cache to attach to for shared caching",
"title": "Attach Cache"
},
"match_mapped_addresses": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Match IPv4-mapped IPv6 addresses",
"title": "Match Mapped Addresses"
},
"disable_algorithms": {
"anyOf": [
{
"items": {
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
],
"type": "array"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Disable DNSSEC algorithms for specific zones",
"title": "Disable Algorithms"
},
"disable_ds_digests": {
"anyOf": [
{
"items": {
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
],
"type": "array"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Disable DS digest types for specific zones",
"title": "Disable Ds Digests"
},
"dns64_server": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server name for DNS64 zones",
"title": "Dns64 Server"
},
"dns64_contact": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Contact for DNS64 zones",
"title": "Dns64 Contact"
},
"dns64_blocks": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Dns64Block"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "DNS64 configuration blocks",
"title": "Dns64 Blocks"
},
"ipv4only_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable automatic IPv4-only zones",
"title": "Ipv4Only Enable"
},
"ipv4only_server": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server name for IPV4ONLY.ARPA zone",
"title": "Ipv4Only Server"
},
"ipv4only_contact": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Contact for IPV4ONLY.ARPA zone",
"title": "Ipv4Only Contact"
},
"resolver_query_timeout": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Resolver query timeout in milliseconds",
"title": "Resolver Query Timeout"
},
"resolver_use_dns64": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Apply DNS64 to recursive queries",
"title": "Resolver Use Dns64"
},
"check_names": {
"anyOf": [
{
"items": {
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "string"
},
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
}
],
"type": "array"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Domain name checking rules",
"title": "Check Names"
},
"qname_minimization": {
"anyOf": [
{
"enum": [
"strict",
"relaxed",
"disabled",
"off"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "QNAME minimization behavior",
"title": "Qname Minimization"
},
"max_ixfr_ratio": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"const": "unlimited",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum IXFR size as percentage of zone",
"title": "Max Ixfr Ratio"
},
"ixfr_from_differences": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Generate IXFR from differences",
"title": "Ixfr From Differences"
},
"provide_ixfr": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Provide IXFR to secondaries",
"title": "Provide Ixfr"
},
"request_ixfr": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Request IXFR from primaries",
"title": "Request Ixfr"
},
"request_expire": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Request EDNS EXPIRE value",
"title": "Request Expire"
},
"dnssec_policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSSEC key and signing policy",
"title": "Dnssec Policy"
},
"trust_anchor_telemetry": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send trust anchor telemetry queries",
"title": "Trust Anchor Telemetry"
},
"validate_except": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Domains to exclude from DNSSEC validation",
"title": "Validate Except"
},
"key_directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSSEC key directory",
"title": "Key Directory"
},
"managed_keys_directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Managed keys directory",
"title": "Managed Keys Directory"
},
"new_zones_directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "New zones configuration directory",
"title": "New Zones Directory"
},
"nxdomain_redirect": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Suffix for NXDOMAIN redirection",
"title": "Nxdomain Redirect"
},
"deny_answer_addresses": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"items": {},
"type": "array"
},
{
"items": {
"type": "string"
},
"type": "array"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter answers containing specific addresses",
"title": "Deny Answer Addresses"
},
"deny_answer_aliases": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"items": {
"type": "string"
},
"type": "array"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter answers containing specific aliases",
"title": "Deny Answer Aliases"
},
"empty_server": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server name for empty zones",
"title": "Empty Server"
},
"empty_contact": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Contact for empty zones",
"title": "Empty Contact"
},
"empty_zones_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable built-in empty zones",
"title": "Empty Zones Enable"
},
"disable_empty_zone": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Disable specific empty zones",
"title": "Disable Empty Zone"
},
"version": {
"anyOf": [
{
"type": "string"
},
{
"const": "none",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server version string",
"title": "Version"
},
"hostname": {
"anyOf": [
{
"type": "string"
},
{
"const": "none",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server hostname string",
"title": "Hostname"
},
"server_id": {
"anyOf": [
{
"type": "string"
},
{
"enum": [
"none",
"hostname"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Server identifier",
"title": "Server Id"
},
"max_query_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum iterative queries per recursive query",
"title": "Max Query Count"
},
"max_recursion_depth": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum recursion depth",
"title": "Max Recursion Depth"
},
"max_recursion_queries": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum iterative queries per recursive query",
"title": "Max Recursion Queries"
},
"max_query_restarts": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum CNAME chain length",
"title": "Max Query Restarts"
},
"notify_defer": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Delay before sending NOTIFY messages",
"title": "Notify Defer"
},
"notify_delay": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Delay between NOTIFY message sets",
"title": "Notify Delay"
},
"max_rsa_exponent_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum RSA exponent size in bits",
"title": "Max Rsa Exponent Size"
},
"prefetch": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "integer"
},
{
"type": "integer"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Prefetch trigger and eligibility TTLs",
"title": "Prefetch"
},
"v6_bias": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "IPv6 server preference bias in milliseconds",
"title": "V6 Bias"
},
"masterfile_format": {
"anyOf": [
{
"enum": [
"raw",
"text"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Zone file format",
"title": "Masterfile Format"
},
"masterfile_style": {
"anyOf": [
{
"enum": [
"full",
"relative"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Zone file dump style",
"title": "Masterfile Style"
},
"edns_udp_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum advertised EDNS UDP buffer size",
"title": "Edns Udp Size"
},
"max_udp_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum EDNS UDP message size to send",
"title": "Max Udp Size"
},
"response_padding": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"items": {},
"type": "array"
},
{
"type": "integer"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "EDNS Padding configuration",
"title": "Response Padding"
},
"zone_statistics": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"enum": [
"full",
"terse",
"none"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Level of zone statistics gathering",
"title": "Zone Statistics"
},
"lame_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TTL for lame server caching",
"title": "Lame Ttl"
},
"servfail_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TTL for SERVFAIL caching",
"title": "Servfail Ttl"
},
"min_ncache_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum negative cache TTL",
"title": "Min Ncache Ttl"
},
"min_cache_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum positive cache TTL",
"title": "Min Cache Ttl"
},
"max_ncache_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum negative cache TTL",
"title": "Max Ncache Ttl"
},
"max_cache_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum positive cache TTL",
"title": "Max Cache Ttl"
},
"max_stale_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum stale record TTL",
"title": "Max Stale Ttl"
},
"dnssec_loadkeys_interval": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSSEC key repository check interval in minutes",
"title": "Dnssec Loadkeys Interval"
},
"nta_lifetime": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Negative trust anchor lifetime",
"title": "Nta Lifetime"
},
"nta_recheck": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Negative trust anchor recheck interval",
"title": "Nta Recheck"
},
"stale_answer_ttl": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "TTL for stale answers",
"title": "Stale Answer Ttl"
},
"stale_answer_client_timeout": {
"anyOf": [
{
"type": "integer"
},
{
"enum": [
"disabled",
"off"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Timeout before returning stale answers",
"title": "Stale Answer Client Timeout"
},
"stale_refresh_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Time window for returning stale answers",
"title": "Stale Refresh Time"
},
"nocookie_udp_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum UDP response size without valid cookie",
"title": "Nocookie Udp Size"
},
"cookie_algorithm": {
"anyOf": [
{
"const": "siphash24",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cookie generation algorithm",
"title": "Cookie Algorithm"
},
"cookie_secret": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Shared secrets for EDNS COOKIE generation",
"title": "Cookie Secret"
},
"serial_update_method": {
"anyOf": [
{
"enum": [
"date",
"increment",
"unixtime"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Dynamic DNS serial number update method",
"title": "Serial Update Method"
},
"max_journal_size": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"enum": [
"default",
"unlimited"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum journal file size",
"title": "Max Journal Size"
},
"max_records": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum records per zone",
"title": "Max Records"
},
"max_records_per_type": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum records per RRset",
"title": "Max Records Per Type"
},
"max_types_per_name": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum RR types per owner name",
"title": "Max Types Per Name"
},
"recursive_clients": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum concurrent recursive clients",
"title": "Recursive Clients"
},
"tcp_clients": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum simultaneous TCP connections",
"title": "Tcp Clients"
},
"clients_per_query": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Initial simultaneous clients per query",
"title": "Clients Per Query"
},
"max_clients_per_query": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum simultaneous clients per query",
"title": "Max Clients Per Query"
},
"fetches_per_zone": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum fetches per zone",
"title": "Fetches Per Zone"
},
"fetches_per_server": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum fetches per server",
"title": "Fetches Per Server"
},
"fetch_quota_params": {
"anyOf": [
{
"items": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "string"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Parameters for dynamic fetch quota adjustment",
"title": "Fetch Quota Params"
},
"max_cache_size": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"enum": [
"default",
"unlimited"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum cache size",
"title": "Max Cache Size"
},
"update_quota": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum concurrent UPDATE messages",
"title": "Update Quota"
},
"sig0key_checks_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum SIG(0) keys to consider",
"title": "Sig0Key Checks Limit"
},
"sig0message_checks_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum SIG(0) keys to try",
"title": "Sig0Message Checks Limit"
},
"forward": {
"anyOf": [
{
"enum": [
"first",
"only"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Forwarding behavior",
"title": "Forward"
},
"forwarders": {
"anyOf": [
{
"$ref": "#/$defs/ForwardersBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Forwarding servers"
},
"dual_stack_servers": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ServerSpecifier"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Dual-stack servers for last resort",
"title": "Dual Stack Servers"
},
"check_dup_records": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for duplicate records in primary zones",
"title": "Check Dup Records"
},
"check_integrity": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Perform zone integrity checks",
"title": "Check Integrity"
},
"check_mx": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check MX records",
"title": "Check Mx"
},
"check_mx_cname": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check MX records referring to CNAMEs",
"title": "Check Mx Cname"
},
"check_sibling": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for sibling glue",
"title": "Check Sibling"
},
"check_spf": {
"anyOf": [
{
"enum": [
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for TXT SPF records",
"title": "Check Spf"
},
"check_srv_cname": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check SRV records referring to CNAMEs",
"title": "Check Srv Cname"
},
"check_svcb": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Check SVCB records",
"title": "Check Svcb"
},
"check_wildcard": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for non-terminal wildcards",
"title": "Check Wildcard"
},
"multi_master": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Multiple primary servers for a zone",
"title": "Multi Master"
},
"notify": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"enum": [
"explicit",
"master-only",
"primary-only"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Send NOTIFY messages on zone changes",
"title": "Notify"
},
"notify_to_soa": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send NOTIFY to SOA MNAME",
"title": "Notify To Soa"
},
"try_tcp_refresh": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Try TCP if UDP refresh fails",
"title": "Try Tcp Refresh"
},
"zero_no_soa_ttl": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Set TTL to 0 for negative SOA responses",
"title": "Zero No Soa Ttl"
},
"allow_new_zones": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Allow runtime zone addition via rndc addzone",
"title": "Allow New Zones"
},
"auth_nxdomain": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Always set AA bit on NXDOMAIN responses",
"title": "Auth Nxdomain"
},
"flush_zones_on_shutdown": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Flush pending zone writes on shutdown",
"title": "Flush Zones On Shutdown"
},
"root_key_sentinel": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Respond to root key sentinel probes",
"title": "Root Key Sentinel"
},
"reuseport": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable kernel socket load-balancing",
"title": "Reuseport"
},
"message_compression": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Use DNS name compression in responses",
"title": "Message Compression"
},
"minimal_responses": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"enum": [
"no-auth",
"no-auth-recursive"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimize authority and additional sections",
"title": "Minimal Responses"
},
"minimal_any": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Return only one RRset for ANY queries over UDP",
"title": "Minimal Any"
},
"recursion": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Allow recursion",
"title": "Recursion"
},
"request_nsid": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send NSID option in queries",
"title": "Request Nsid"
},
"require_server_cookie": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Require valid server cookie for UDP responses",
"title": "Require Server Cookie"
},
"answer_cookie": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send COOKIE EDNS option in replies",
"title": "Answer Cookie"
},
"send_cookie": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send COOKIE EDNS option in queries",
"title": "Send Cookie"
},
"stale_answer_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Return stale cached answers when servers are down",
"title": "Stale Answer Enable"
},
"stale_cache_enable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Retain stale cached answers",
"title": "Stale Cache Enable"
},
"dnssec_validation": {
"anyOf": [
{
"enum": [
"yes",
"no",
"auto"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable DNSSEC validation",
"title": "Dnssec Validation"
},
"dnssec_accept_expired": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Accept expired DNSSEC signatures",
"title": "Dnssec Accept Expired"
},
"querylog": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable query logging at startup",
"title": "Querylog"
},
"zero_no_soa_ttl_cache": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Set TTL to 0 when caching negative SOA responses",
"title": "Zero No Soa Ttl Cache"
},
"synth_from_dnssec": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Enable aggressive use of DNSSEC-validated cache",
"title": "Synth From Dnssec"
},
"allow_query": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to send queries",
"title": "Allow Query"
},
"allow_query_on": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Local addresses allowed to receive queries",
"title": "Allow Query On"
},
"allow_transfer": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to receive zone transfers",
"title": "Allow Transfer"
},
"allow_update": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to submit dynamic updates",
"title": "Allow Update"
},
"allow_notify": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to send NOTIFY messages",
"title": "Allow Notify"
},
"allow_update_forwarding": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to forward dynamic updates",
"title": "Allow Update Forwarding"
},
"allow_query_cache": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to access cache",
"title": "Allow Query Cache"
},
"allow_query_cache_on": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Local addresses allowed to send cache responses",
"title": "Allow Query Cache On"
},
"allow_recursion": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to perform recursive queries",
"title": "Allow Recursion"
},
"allow_recursion_on": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Local addresses allowed to receive recursive queries",
"title": "Allow Recursion On"
},
"blackhole": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts to ignore completely",
"title": "Blackhole"
},
"no_case_compress": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Clients requiring case-insensitive compression",
"title": "No Case Compress"
},
"name": {
"description": "View name",
"title": "Name",
"type": "string"
},
"view_class": {
"anyOf": [
{
"$ref": "#/$defs/ZoneClassEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "View class (default: IN)"
},
"match_clients": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Clients that match this view based on source IP address",
"title": "Match Clients"
},
"match_destinations": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Destinations that match this view based on destination IP address",
"title": "Match Destinations"
},
"match_recursive_only": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Only recursive requests can match this view",
"title": "Match Recursive Only"
},
"server_blocks": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ServerBlock"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Server-specific configuration blocks",
"title": "Server Blocks"
},
"key_blocks": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/KeyBlock"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "TSIG key definitions",
"title": "Key Blocks"
},
"trust_anchors": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/TrustAnchorsBlock"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSSEC trust anchors",
"title": "Trust Anchors"
},
"dnssec_policy_block": {
"anyOf": [
{
"$ref": "#/$defs/DnssecPolicyBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSSEC policy configuration"
},
"view_zones": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ZoneBlock"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Zones defined within this view",
"title": "View Zones"
}
},
"required": [
"name"
],
"title": "ViewBlock",
"type": "object"
},
"ZoneBlock": {
"description": "Zone block for BIND configuration.\n\nGrammar:\nzone <string> [ <class> ] {\n type primary | secondary | mirror | hint | stub | static-stub | forward | redirect;\n ... # options depending on type\n};",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"sig_signing_nodes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum nodes to examine per quantum when signing",
"title": "Sig Signing Nodes"
},
"sig_signing_signatures": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Signature threshold per quantum when signing",
"title": "Sig Signing Signatures"
},
"sig_signing_type": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Private RDATA type for signing-state records",
"title": "Sig Signing Type"
},
"min_transfer_rate_in": {
"anyOf": [
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "integer"
},
{
"type": "integer"
}
],
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum inbound transfer rate",
"title": "Min Transfer Rate In"
},
"max_ixfr_ratio": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"const": "unlimited",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum IXFR size as percentage of zone",
"title": "Max Ixfr Ratio"
},
"dnssec_policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSSEC key and signing policy",
"title": "Dnssec Policy"
},
"key_directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSSEC key directory",
"title": "Key Directory"
},
"zone_statistics": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"enum": [
"full",
"terse",
"none"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Level of zone statistics gathering",
"title": "Zone Statistics"
},
"max_journal_size": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"enum": [
"default",
"unlimited"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum journal file size",
"title": "Max Journal Size"
},
"max_records": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum records per zone",
"title": "Max Records"
},
"max_records_per_type": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum records per RRset",
"title": "Max Records Per Type"
},
"max_types_per_name": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum RR types per owner name",
"title": "Max Types Per Name"
},
"forward": {
"anyOf": [
{
"enum": [
"first",
"only"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Forwarding behavior",
"title": "Forward"
},
"check_dup_records": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for duplicate records in primary zones",
"title": "Check Dup Records"
},
"check_integrity": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Perform zone integrity checks",
"title": "Check Integrity"
},
"check_mx": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check MX records",
"title": "Check Mx"
},
"check_mx_cname": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check MX records referring to CNAMEs",
"title": "Check Mx Cname"
},
"check_sibling": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for sibling glue",
"title": "Check Sibling"
},
"check_spf": {
"anyOf": [
{
"enum": [
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for TXT SPF records",
"title": "Check Spf"
},
"check_srv_cname": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check SRV records referring to CNAMEs",
"title": "Check Srv Cname"
},
"check_svcb": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Check SVCB records",
"title": "Check Svcb"
},
"check_wildcard": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Check for non-terminal wildcards",
"title": "Check Wildcard"
},
"ixfr_from_differences": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Generate IXFR from differences",
"title": "Ixfr From Differences"
},
"multi_master": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Multiple primary servers for a zone",
"title": "Multi Master"
},
"notify": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"enum": [
"explicit",
"master-only",
"primary-only"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Send NOTIFY messages on zone changes",
"title": "Notify"
},
"notify_to_soa": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Send NOTIFY to SOA MNAME",
"title": "Notify To Soa"
},
"request_expire": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Request EDNS EXPIRE value",
"title": "Request Expire"
},
"request_ixfr": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Request IXFR from primaries",
"title": "Request Ixfr"
},
"try_tcp_refresh": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Try TCP if UDP refresh fails",
"title": "Try Tcp Refresh"
},
"zero_no_soa_ttl": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Set TTL to 0 for negative SOA responses",
"title": "Zero No Soa Ttl"
},
"allow_query": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to send queries",
"title": "Allow Query"
},
"allow_query_on": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Local addresses allowed to receive queries",
"title": "Allow Query On"
},
"allow_transfer": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to receive zone transfers",
"title": "Allow Transfer"
},
"allow_update": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to submit dynamic updates",
"title": "Allow Update"
},
"allow_notify": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to send NOTIFY messages",
"title": "Allow Notify"
},
"allow_update_forwarding": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Hosts allowed to forward dynamic updates",
"title": "Allow Update Forwarding"
},
"name": {
"description": "Zone name",
"title": "Name",
"type": "string"
},
"zone_type": {
"$ref": "#/$defs/ZoneTypeEnum",
"description": "Zone type"
},
"zone_class": {
"anyOf": [
{
"$ref": "#/$defs/ZoneClassEnum"
},
{
"type": "null"
}
],
"default": null,
"description": "Zone class"
},
"check_names": {
"anyOf": [
{
"enum": [
"fail",
"warn",
"ignore"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check names policy",
"title": "Check Names"
},
"checkds": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"const": "explicit",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Check DS records. Zone-only in BIND9 - not valid in options/view.",
"title": "Checkds"
},
"inline_signing": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Maintain separate signed version of the zone. Zone-only in BIND9 - not valid in options/view.",
"title": "Inline Signing"
},
"database": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Database type for zone storage",
"title": "Database"
},
"file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Zone file name",
"title": "File"
},
"forwarders": {
"anyOf": [
{
"items": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"format": "ipv6",
"type": "string"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Forwarding servers",
"title": "Forwarders"
},
"masterfile_format": {
"anyOf": [
{
"enum": [
"raw",
"text"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Zone file format",
"title": "Masterfile Format"
},
"masterfile_style": {
"anyOf": [
{
"enum": [
"full",
"relative"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Zone dump style",
"title": "Masterfile Style"
},
"also_notify": {
"anyOf": [
{
"items": {
"anyOf": [
{
"type": "string"
},
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"format": "ipv6",
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
]
}
],
"type": "array"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional notify recipients",
"title": "Also Notify"
},
"journal": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Journal file name",
"title": "Journal"
},
"dnssec_loadkeys_interval": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "DNSSEC key repository check interval",
"title": "Dnssec Loadkeys Interval"
},
"max_transfer_idle_out": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum idle time for outbound transfers",
"title": "Max Transfer Idle Out"
},
"max_transfer_time_out": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum outbound transfer time",
"title": "Max Transfer Time Out"
},
"notify_defer": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Delay before sending NOTIFY",
"title": "Notify Defer"
},
"notify_delay": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Delay between NOTIFY message sets",
"title": "Notify Delay"
},
"notify_source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv4 address for NOTIFY",
"title": "Notify Source"
},
"notify_source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv6 address for NOTIFY",
"title": "Notify Source V6"
},
"parental_agents": {
"anyOf": [
{
"items": {
"anyOf": [
{
"type": "string"
},
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"format": "ipv6",
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
]
}
],
"type": "array"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Parental agents for DNSSEC key rollover",
"title": "Parental Agents"
},
"parental_source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv4 for parental agent queries",
"title": "Parental Source"
},
"parental_source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv6 for parental agent queries",
"title": "Parental Source V6"
},
"serial_update_method": {
"anyOf": [
{
"enum": [
"date",
"increment",
"unixtime"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Dynamic DNS serial number update method",
"title": "Serial Update Method"
},
"update_policy": {
"anyOf": [
{
"$ref": "#/$defs/UpdatePolicyBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Dynamic update policy"
},
"max_refresh_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum refresh time",
"title": "Max Refresh Time"
},
"max_retry_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum retry time",
"title": "Max Retry Time"
},
"max_transfer_idle_in": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum idle time for inbound transfers",
"title": "Max Transfer Idle In"
},
"max_transfer_time_in": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum inbound transfer time",
"title": "Max Transfer Time In"
},
"min_refresh_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum refresh time",
"title": "Min Refresh Time"
},
"min_retry_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum retry time",
"title": "Min Retry Time"
},
"primaries": {
"anyOf": [
{
"items": {
"anyOf": [
{
"type": "string"
},
{
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"format": "ipv6",
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
]
}
],
"type": "array"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary servers for secondary zone",
"title": "Primaries"
},
"transfer_source": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv4 for zone transfers",
"title": "Transfer Source"
},
"transfer_source_v6": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv6",
"type": "string"
},
{
"const": "*",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Source IPv6 for zone transfers",
"title": "Transfer Source V6"
},
"server_addresses": {
"anyOf": [
{
"items": {
"anyOf": [
{
"type": "string"
},
{
"format": "ipv4",
"type": "string"
},
{
"format": "ipv6",
"type": "string"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "IP addresses for static-stub zone",
"title": "Server Addresses"
},
"server_names": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Server names for static-stub zone",
"title": "Server Names"
},
"in_view": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "View in which zone is defined",
"title": "In View"
},
"resource_records": {
"description": "List of resource records",
"items": {
"anyOf": [
{
"$ref": "#/$defs/ARecord"
},
{
"$ref": "#/$defs/AAAARecord"
},
{
"$ref": "#/$defs/CNAMERecord"
},
{
"$ref": "#/$defs/DNAMERecord"
},
{
"$ref": "#/$defs/MXRecord"
},
{
"$ref": "#/$defs/NSRecord"
},
{
"$ref": "#/$defs/PTRRecord"
},
{
"$ref": "#/$defs/SOARecord"
},
{
"$ref": "#/$defs/TXTRecord"
},
{
"$ref": "#/$defs/SPFRecord"
},
{
"$ref": "#/$defs/SRVRecord"
},
{
"$ref": "#/$defs/DSRecord"
},
{
"$ref": "#/$defs/DNSKEYRecord"
},
{
"$ref": "#/$defs/RRSIGRecord"
},
{
"$ref": "#/$defs/NSECRecord"
},
{
"$ref": "#/$defs/SSHFPRecord"
},
{
"$ref": "#/$defs/TLSARecord"
},
{
"$ref": "#/$defs/CAARecord"
},
{
"$ref": "#/$defs/CERTRecord"
},
{
"$ref": "#/$defs/LOCRecord"
},
{
"$ref": "#/$defs/NAPTRRecord"
},
{
"$ref": "#/$defs/HINFORecord"
},
{
"$ref": "#/$defs/RPRecord"
}
]
},
"title": "Resource Records",
"type": "array"
}
},
"required": [
"name",
"zone_type"
],
"title": "ZoneBlock",
"type": "object"
},
"ZoneClassEnum": {
"description": "Zone classes in BIND.",
"enum": [
"IN",
"HS",
"CHAOS"
],
"title": "ZoneClassEnum",
"type": "string"
},
"ZoneTypeEnum": {
"description": "Zone types in BIND.",
"enum": [
"primary",
"secondary",
"mirror",
"hint",
"stub",
"static-stub",
"forward",
"redirect",
"in-view"
],
"title": "ZoneTypeEnum",
"type": "string"
}
},
"description": "Complete BIND9 configuration (named.conf).\n\nNOTE: This file was automatically generated by bindantic, please adjust.",
"properties": {
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional comment for this block",
"title": "Comment"
},
"acl_blocks": {
"description": "Access Control Lists",
"items": {
"$ref": "#/$defs/AclBlock"
},
"title": "Acl Blocks",
"type": "array"
},
"key_blocks": {
"description": "TSIG key definitions",
"items": {
"$ref": "#/$defs/KeyBlock"
},
"title": "Key Blocks",
"type": "array"
},
"key_store_blocks": {
"description": "DNSSEC key stores",
"items": {
"$ref": "#/$defs/KeyStoreBlock"
},
"title": "Key Store Blocks",
"type": "array"
},
"tls_blocks": {
"description": "TLS configurations",
"items": {
"$ref": "#/$defs/TlsBlock"
},
"title": "Tls Blocks",
"type": "array"
},
"trust_anchors_blocks": {
"description": "DNSSEC trust anchors",
"items": {
"$ref": "#/$defs/TrustAnchorsBlock"
},
"title": "Trust Anchors Blocks",
"type": "array"
},
"dnssec_policy_blocks": {
"description": "DNSSEC policies",
"items": {
"$ref": "#/$defs/DnssecPolicyBlock"
},
"title": "Dnssec Policy Blocks",
"type": "array"
},
"controls_block": {
"anyOf": [
{
"$ref": "#/$defs/ControlsBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Control channels"
},
"statistics_channels_blocks": {
"description": "Statistics channels",
"items": {
"$ref": "#/$defs/StatisticsChannelsBlock"
},
"title": "Statistics Channels Blocks",
"type": "array"
},
"server_blocks": {
"description": "Server-specific settings",
"items": {
"$ref": "#/$defs/ServerBlock"
},
"title": "Server Blocks",
"type": "array"
},
"remote_servers_blocks": {
"description": "Remote servers lists",
"items": {
"$ref": "#/$defs/RemoteServersBlock"
},
"title": "Remote Servers Blocks",
"type": "array"
},
"http_blocks": {
"description": "HTTP configurations",
"items": {
"$ref": "#/$defs/HttpBlock"
},
"title": "Http Blocks",
"type": "array"
},
"options_block": {
"anyOf": [
{
"$ref": "#/$defs/OptionsBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Global options"
},
"logging_block": {
"anyOf": [
{
"$ref": "#/$defs/LoggingBlock"
},
{
"type": "null"
}
],
"default": null,
"description": "Logging configuration"
},
"view_blocks": {
"description": "View definitions",
"items": {
"$ref": "#/$defs/ViewBlock"
},
"title": "View Blocks",
"type": "array"
},
"zone_blocks": {
"description": "Zone definitions",
"items": {
"$ref": "#/$defs/ZoneBlock"
},
"title": "Zone Blocks",
"type": "array"
}
},
"title": "NamedConfig",
"type": "object"
}
Fields:
-
comment(string_BIND | None) -
acl_blocks(list[AclBlock]) -
key_blocks(list[KeyBlock]) -
key_store_blocks(list[KeyStoreBlock]) -
tls_blocks(list[TlsBlock]) -
trust_anchors_blocks(list[TrustAnchorsBlock]) -
dnssec_policy_blocks(list[DnssecPolicyBlock]) -
controls_block(ControlsBlock | None) -
statistics_channels_blocks(list[StatisticsChannelsBlock]) -
server_blocks(list[ServerBlock]) -
remote_servers_blocks(list[RemoteServersBlock]) -
http_blocks(list[HttpBlock]) -
options_block(OptionsBlock | None) -
logging_block(LoggingBlock | None) -
view_blocks(list[ViewBlock]) -
zone_blocks(list[ZoneBlock])
trust_anchors_blocks
pydantic-field
¶
trust_anchors_blocks: list[TrustAnchorsBlock]
DNSSEC trust anchors
statistics_channels_blocks
pydantic-field
¶
statistics_channels_blocks: list[StatisticsChannelsBlock]
Statistics channels
remote_servers_blocks
pydantic-field
¶
remote_servers_blocks: list[RemoteServersBlock]
Remote servers lists
model_bind_syntax ¶
model_bind_syntax(indent_level: int = 0) -> str
Generate complete BIND9 configuration in one named.conf file style.
generate_files ¶
generate_files(
base_dir: str | None = None,
) -> list[GeneratedFile]
Generate all configuration files without writing them to disk. Returns a list of GeneratedFile objects with path and content.
write_files ¶
write_files(
base_dir: str | None = None,
) -> list[GeneratedFile]
Generate and write all configuration files to disk. Returns a list of GeneratedFile objects with path and content.