Options¶
OptionsBlock
pydantic-model
¶
Bases: ExtendedOptionsMixin
Global options block for BIND configuration.
This is the grammar of the options statement in the named.conf file
Grammar:
options {
directory <quoted_string>;
pid-file ( <quoted_string> | none );
... # dozens of directives grouped by area (server info, query processing,
# zone/transfer defaults, DNSSEC, caching, rate limiting, notify targets,
# response policy, catalog zones, etc.) - see the field descriptions below
# and https://bind9.readthedocs.io/en/latest/reference.html#options-statement-grammar
};
Show JSON schema:
{
"$defs": {
"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"
},
"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"
},
"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"
},
"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"
},
"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"
},
"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"
},
"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"
}
},
"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"
}
Fields:
-
comment(string_BIND | None) -
catalog_zones(list[CatalogZoneBlock] | None) -
response_policy(ResponsePolicyBlock | None) -
rate_limit(RateLimitBlock | None) -
also_notify(AlsoNotifyBlock | None) -
sig_signing_nodes(integer_BIND | None) -
sig_signing_signatures(integer_BIND | None) -
sig_signing_type(integer_BIND | None) -
preferred_glue(Literal['A', 'AAAA'] | None) -
min_transfer_rate_in(tuple[integer_BIND, integer_BIND] | None) -
min_refresh_time(integer_BIND | None) -
max_refresh_time(integer_BIND | None) -
min_retry_time(integer_BIND | None) -
max_retry_time(integer_BIND | None) -
rrset_order(list[RrsetOrderRule] | None) -
lmdb_mapsize(sizeval_BIND | None) -
attach_cache(string_BIND | None) -
match_mapped_addresses(boolean_BIND | None) -
disable_algorithms(list[tuple[string_BIND, list[string_BIND]]] | None) -
disable_ds_digests(list[tuple[string_BIND, list[string_BIND]]] | None) -
dns64_server(string_BIND | None) -
dns64_contact(string_BIND | None) -
dns64_blocks(list[Dns64Block] | None) -
ipv4only_enable(boolean_BIND | None) -
ipv4only_server(string_BIND | None) -
ipv4only_contact(string_BIND | None) -
resolver_query_timeout(integer_BIND | None) -
resolver_use_dns64(boolean_BIND | None) -
check_names(list[tuple[str, Literal['fail', 'warn', 'ignore']]] | None) -
qname_minimization(Literal['strict', 'relaxed', 'disabled', 'off'] | None) -
max_ixfr_ratio(percentage_BIND | Literal['unlimited'] | None) -
ixfr_from_differences(boolean_BIND | None) -
provide_ixfr(boolean_BIND | None) -
request_ixfr(boolean_BIND | None) -
request_expire(boolean_BIND | None) -
dnssec_policy(string_BIND | None) -
trust_anchor_telemetry(boolean_BIND | None) -
validate_except(list[string_BIND] | None) -
key_directory(quoted_string_BIND | None) -
managed_keys_directory(quoted_string_BIND | None) -
new_zones_directory(quoted_string_BIND | None) -
nxdomain_redirect(string_BIND | None) -
deny_answer_addresses(tuple[address_match_list_BIND, list[string_BIND]] | None) -
deny_answer_aliases(tuple[list[string_BIND], list[string_BIND]] | None) -
empty_server(string_BIND | None) -
empty_contact(string_BIND | None) -
empty_zones_enable(boolean_BIND | None) -
disable_empty_zone(list[string_BIND] | None) -
version(quoted_string_BIND | Literal['none'] | None) -
hostname(quoted_string_BIND | Literal['none'] | None) -
server_id(quoted_string_BIND | Literal['none', 'hostname'] | None) -
max_query_count(integer_BIND | None) -
max_recursion_depth(integer_BIND | None) -
max_recursion_queries(integer_BIND | None) -
max_query_restarts(integer_BIND | None) -
notify_defer(integer_BIND | None) -
notify_delay(integer_BIND | None) -
max_rsa_exponent_size(integer_BIND | None) -
prefetch(tuple[integer_BIND, integer_BIND] | None) -
v6_bias(integer_BIND | None) -
masterfile_format(Literal['raw', 'text'] | None) -
masterfile_style(Literal['full', 'relative'] | None) -
edns_udp_size(integer_BIND | None) -
max_udp_size(integer_BIND | None) -
response_padding(tuple[address_match_list_BIND, integer_BIND] | None) -
zone_statistics(boolean_BIND | Literal['full', 'terse', 'none'] | None) -
lame_ttl(duration_BIND | None) -
servfail_ttl(duration_BIND | None) -
min_ncache_ttl(duration_BIND | None) -
min_cache_ttl(duration_BIND | None) -
max_ncache_ttl(duration_BIND | None) -
max_cache_ttl(duration_BIND | None) -
max_stale_ttl(duration_BIND | None) -
dnssec_loadkeys_interval(integer_BIND | None) -
nta_lifetime(duration_BIND | None) -
nta_recheck(duration_BIND | None) -
stale_answer_ttl(duration_BIND | None) -
stale_answer_client_timeout(integer_BIND | Literal['disabled', 'off'] | None) -
stale_refresh_time(duration_BIND | None) -
nocookie_udp_size(integer_BIND | None) -
cookie_algorithm(Literal['siphash24'] | None) -
cookie_secret(list[string_BIND] | None) -
serial_update_method(Literal['date', 'increment', 'unixtime'] | None) -
max_journal_size(sizeval_BIND | Literal['default', 'unlimited'] | None) -
max_records(integer_BIND | None) -
max_records_per_type(integer_BIND | None) -
max_types_per_name(integer_BIND | None) -
recursive_clients(integer_BIND | None) -
tcp_clients(integer_BIND | None) -
clients_per_query(integer_BIND | None) -
max_clients_per_query(integer_BIND | None) -
fetches_per_zone(integer_BIND | None) -
fetches_per_server(integer_BIND | None) -
fetch_quota_params(list[integer_BIND | fixed_point_BIND] | None) -
max_cache_size(sizeval_BIND | percentage_BIND | Literal['default', 'unlimited'] | None) -
update_quota(integer_BIND | None) -
sig0key_checks_limit(integer_BIND | None) -
sig0message_checks_limit(integer_BIND | None) -
forward(Literal['first', 'only'] | None) -
forwarders(ForwardersBlock | None) -
dual_stack_servers(list[ServerSpecifier] | None) -
check_dup_records(Literal['fail', 'warn', 'ignore'] | None) -
check_integrity(boolean_BIND | None) -
check_mx(Literal['fail', 'warn', 'ignore'] | None) -
check_mx_cname(Literal['fail', 'warn', 'ignore'] | None) -
check_sibling(boolean_BIND | None) -
check_spf(Literal['warn', 'ignore'] | None) -
check_srv_cname(Literal['fail', 'warn', 'ignore'] | None) -
check_svcb(boolean_BIND | None) -
check_wildcard(boolean_BIND | None) -
multi_master(boolean_BIND | None) -
notify(boolean_BIND | Literal['explicit', 'master-only', 'primary-only'] | None) -
notify_to_soa(boolean_BIND | None) -
try_tcp_refresh(boolean_BIND | None) -
zero_no_soa_ttl(boolean_BIND | None) -
allow_new_zones(boolean_BIND | None) -
auth_nxdomain(boolean_BIND | None) -
flush_zones_on_shutdown(boolean_BIND | None) -
root_key_sentinel(boolean_BIND | None) -
reuseport(boolean_BIND | None) -
message_compression(boolean_BIND | None) -
minimal_responses(boolean_BIND | Literal['no-auth', 'no-auth-recursive'] | None) -
minimal_any(boolean_BIND | None) -
recursion(boolean_BIND | None) -
request_nsid(boolean_BIND | None) -
require_server_cookie(boolean_BIND | None) -
answer_cookie(boolean_BIND | None) -
send_cookie(boolean_BIND | None) -
stale_answer_enable(boolean_BIND | None) -
stale_cache_enable(boolean_BIND | None) -
dnssec_validation(Literal['yes', 'no', 'auto'] | None) -
dnssec_accept_expired(boolean_BIND | None) -
querylog(boolean_BIND | None) -
zero_no_soa_ttl_cache(boolean_BIND | None) -
synth_from_dnssec(boolean_BIND | None) -
allow_query(address_match_list_BIND | None) -
allow_query_on(address_match_list_BIND | None) -
allow_transfer(address_match_list_BIND | None) -
allow_update(address_match_list_BIND | None) -
allow_notify(address_match_list_BIND | None) -
allow_update_forwarding(address_match_list_BIND | None) -
allow_query_cache(address_match_list_BIND | None) -
allow_query_cache_on(address_match_list_BIND | None) -
allow_recursion(address_match_list_BIND | None) -
allow_recursion_on(address_match_list_BIND | None) -
blackhole(address_match_list_BIND | None) -
no_case_compress(address_match_list_BIND | None) -
directory(quoted_string_BIND | None) -
pid_file(quoted_string_BIND | Literal['none'] | None) -
session_keyfile(quoted_string_BIND | Literal['none'] | None) -
session_keyname(string_BIND | None) -
session_keyalg(string_BIND | None) -
port(port_BIND | None) -
tls_port(integer_BIND | None) -
https_port(integer_BIND | None) -
http_port(integer_BIND | None) -
http_listener_clients(integer_BIND | None) -
http_streams_per_connection(integer_BIND | None) -
listen_on(list[str | ip_v4_address_BIND] | None) -
listen_on_v6(list[str | ip_v6_address_BIND] | None) -
query_source(ip_v4_address_BIND | Literal['*', 'none'] | None) -
query_source_v6(ip_v6_address_BIND | Literal['*', 'none'] | None) -
transfer_source(ip_v4_address_BIND | Literal['*'] | None) -
transfer_source_v6(ip_v6_address_BIND | Literal['*'] | None) -
notify_source(ip_v4_address_BIND | Literal['*'] | None) -
notify_source_v6(ip_v6_address_BIND | Literal['*'] | None) -
parental_source(ip_v4_address_BIND | Literal['*'] | None) -
parental_source_v6(ip_v6_address_BIND | Literal['*'] | None) -
max_transfer_time_in(integer_BIND | None) -
max_transfer_idle_in(integer_BIND | None) -
max_transfer_time_out(integer_BIND | None) -
max_transfer_idle_out(integer_BIND | None) -
max_transfers_in(integer_BIND | None) -
max_transfers_out(integer_BIND | None) -
transfers_per_ns(integer_BIND | None) -
notify_rate(integer_BIND | None) -
startup_notify_rate(integer_BIND | None) -
serial_query_rate(integer_BIND | None) -
transfer_format(Literal['many-answers', 'one-answer'] | None) -
transfer_message_size(integer_BIND | None) -
automatic_interface_scan(boolean_BIND | None) -
responselog(boolean_BIND | None) -
tcp_receive_buffer(integer_BIND | None) -
udp_receive_buffer(integer_BIND | None) -
tcp_send_buffer(integer_BIND | None) -
udp_send_buffer(integer_BIND | None) -
dnstap(list[str] | None) -
dnstap_identity(quoted_string_BIND | Literal['none', 'hostname'] | None) -
dnstap_version(quoted_string_BIND | Literal['none'] | None) -
fstrm_set_buffer_hint(integer_BIND | None) -
fstrm_set_flush_timeout(integer_BIND | None) -
fstrm_set_input_queue_size(integer_BIND | None) -
fstrm_set_output_notify_threshold(integer_BIND | None) -
fstrm_set_output_queue_model(Literal['mpsc', 'spsc'] | None) -
fstrm_set_output_queue_size(integer_BIND | None) -
fstrm_set_reopen_interval(duration_BIND | None) -
dump_file(quoted_string_BIND | None) -
memstatistics_file(quoted_string_BIND | None) -
recursing_file(quoted_string_BIND | None) -
statistics_file(quoted_string_BIND | None) -
secroots_file(quoted_string_BIND | None) -
geoip_directory(quoted_string_BIND | Literal['none'] | None) -
interface_interval(duration_BIND | None) -
tcp_listen_queue(integer_BIND | None) -
tcp_initial_timeout(integer_BIND | None) -
tcp_idle_timeout(integer_BIND | None) -
tcp_keepalive_timeout(integer_BIND | None) -
tcp_advertised_timeout(integer_BIND | None)
Validators:
-
validate_recursion_settings -
validate_dnssec_settings
pid_file
pydantic-field
¶
pid_file: quoted_string_BIND | Literal["none"] | None = None
PID file path
session_keyfile
pydantic-field
¶
session_keyfile: (
quoted_string_BIND | Literal["none"] | None
) = None
Session key file path
http_port
pydantic-field
¶
http_port: integer_BIND | None = None
TCP port for unencrypted DNS-over-HTTP
http_listener_clients
pydantic-field
¶
http_listener_clients: integer_BIND | None = None
Maximum concurrent HTTP connections per listener
http_streams_per_connection
pydantic-field
¶
http_streams_per_connection: integer_BIND | None = None
Maximum HTTP/2 streams per connection
listen_on
pydantic-field
¶
listen_on: list[str | ip_v4_address_BIND] | None = None
IPv4 addresses to listen on
listen_on_v6
pydantic-field
¶
listen_on_v6: list[str | ip_v6_address_BIND] | None = None
IPv6 addresses to listen on
query_source
pydantic-field
¶
query_source: (
ip_v4_address_BIND | Literal["*", "none"] | None
) = None
Source IPv4 address for queries
query_source_v6
pydantic-field
¶
query_source_v6: (
ip_v6_address_BIND | Literal["*", "none"] | None
) = None
Source IPv6 address for queries
transfer_source
pydantic-field
¶
transfer_source: (
ip_v4_address_BIND | Literal["*"] | None
) = None
Source IPv4 address for zone transfers
transfer_source_v6
pydantic-field
¶
transfer_source_v6: (
ip_v6_address_BIND | Literal["*"] | None
) = None
Source IPv6 address for zone transfers
notify_source
pydantic-field
¶
notify_source: ip_v4_address_BIND | Literal["*"] | None = (
None
)
Source IPv4 address for NOTIFY messages
notify_source_v6
pydantic-field
¶
notify_source_v6: (
ip_v6_address_BIND | Literal["*"] | None
) = None
Source IPv6 address for NOTIFY messages
parental_source
pydantic-field
¶
parental_source: (
ip_v4_address_BIND | Literal["*"] | None
) = None
Source IPv4 address for parental agent queries
parental_source_v6
pydantic-field
¶
parental_source_v6: (
ip_v6_address_BIND | Literal["*"] | None
) = None
Source IPv6 address for parental agent queries
max_transfer_time_in
pydantic-field
¶
max_transfer_time_in: integer_BIND | None = None
Maximum inbound transfer time in minutes
max_transfer_idle_in
pydantic-field
¶
max_transfer_idle_in: integer_BIND | None = None
Maximum idle time for inbound transfers in minutes
max_transfer_time_out
pydantic-field
¶
max_transfer_time_out: integer_BIND | None = None
Maximum outbound transfer time in minutes
max_transfer_idle_out
pydantic-field
¶
max_transfer_idle_out: integer_BIND | None = None
Maximum idle time for outbound transfers in minutes
max_transfers_in
pydantic-field
¶
max_transfers_in: integer_BIND | None = None
Maximum concurrent inbound transfers
max_transfers_out
pydantic-field
¶
max_transfers_out: integer_BIND | None = None
Maximum concurrent outbound transfers
transfers_per_ns
pydantic-field
¶
transfers_per_ns: integer_BIND | None = None
Maximum inbound transfers per name server
notify_rate
pydantic-field
¶
notify_rate: integer_BIND | None = None
NOTIFY messages per second during normal operation
startup_notify_rate
pydantic-field
¶
startup_notify_rate: integer_BIND | None = None
NOTIFY messages per second at startup
serial_query_rate
pydantic-field
¶
serial_query_rate: integer_BIND | None = None
SOA queries per second
transfer_format
pydantic-field
¶
transfer_format: (
Literal["many-answers", "one-answer"] | None
) = None
Zone transfer format
transfer_message_size
pydantic-field
¶
transfer_message_size: integer_BIND | None = None
Maximum zone transfer message size
automatic_interface_scan
pydantic-field
¶
automatic_interface_scan: boolean_BIND | None = None
Automatically rescan network interfaces
responselog
pydantic-field
¶
responselog: boolean_BIND | None = None
Enable response logging at startup
tcp_receive_buffer
pydantic-field
¶
tcp_receive_buffer: integer_BIND | None = None
TCP receive buffer size
udp_receive_buffer
pydantic-field
¶
udp_receive_buffer: integer_BIND | None = None
UDP receive buffer size
dnstap_identity
pydantic-field
¶
dnstap_identity: (
quoted_string_BIND | Literal["none", "hostname"] | None
) = None
DNSTAP identity string
dnstap_version
pydantic-field
¶
dnstap_version: (
quoted_string_BIND | Literal["none"] | None
) = None
DNSTAP version string
fstrm_set_buffer_hint
pydantic-field
¶
fstrm_set_buffer_hint: integer_BIND | None = None
FSTRM buffer hint
fstrm_set_flush_timeout
pydantic-field
¶
fstrm_set_flush_timeout: integer_BIND | None = None
FSTRM flush timeout
fstrm_set_input_queue_size
pydantic-field
¶
fstrm_set_input_queue_size: integer_BIND | None = None
FSTRM input queue size
fstrm_set_output_notify_threshold
pydantic-field
¶
fstrm_set_output_notify_threshold: integer_BIND | None = (
None
)
FSTRM output notify threshold
fstrm_set_output_queue_model
pydantic-field
¶
fstrm_set_output_queue_model: (
Literal["mpsc", "spsc"] | None
) = None
FSTRM output queue model
fstrm_set_output_queue_size
pydantic-field
¶
fstrm_set_output_queue_size: integer_BIND | None = None
FSTRM output queue size
fstrm_set_reopen_interval
pydantic-field
¶
fstrm_set_reopen_interval: duration_BIND | None = None
FSTRM reopen interval
memstatistics_file
pydantic-field
¶
memstatistics_file: quoted_string_BIND | None = None
Memory statistics file path
recursing_file
pydantic-field
¶
recursing_file: quoted_string_BIND | None = None
Recursing queries dump file path
statistics_file
pydantic-field
¶
statistics_file: quoted_string_BIND | None = None
Statistics file path
secroots_file
pydantic-field
¶
secroots_file: quoted_string_BIND | None = None
Security roots dump file path
geoip_directory
pydantic-field
¶
geoip_directory: (
quoted_string_BIND | Literal["none"] | None
) = None
GeoIP database directory
interface_interval
pydantic-field
¶
interface_interval: duration_BIND | None = None
Network interface scan interval
tcp_listen_queue
pydantic-field
¶
tcp_listen_queue: integer_BIND | None = None
TCP listen queue depth
tcp_initial_timeout
pydantic-field
¶
tcp_initial_timeout: integer_BIND | None = None
Initial TCP timeout in deciseconds
tcp_idle_timeout
pydantic-field
¶
tcp_idle_timeout: integer_BIND | None = None
TCP idle timeout in deciseconds
tcp_keepalive_timeout
pydantic-field
¶
tcp_keepalive_timeout: integer_BIND | None = None
TCP keepalive timeout in deciseconds
tcp_advertised_timeout
pydantic-field
¶
tcp_advertised_timeout: integer_BIND | None = None
Advertised TCP timeout in deciseconds
validate_recursion_settings
pydantic-validator
¶
validate_recursion_settings() -> OptionsBlock
Reject allow-recursion/allow-query-cache when recursion is off.
Compares against the string "no" rather than the Python bool False:
boolean_BIND normalizes self.recursion to "yes"/"no" during field
validation, so it is never a Python bool by the time this runs.
ServerSpecifier
pydantic-model
¶
Bases: BindBaseModel
Specificator for server type fields.
Grammar:
( <ip_address> [ port <integer> ] ) [ key <server_key> ] [ tls <tls_id> ]
Show JSON schema:
{
"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"
}
Fields:
-
comment(string_BIND | None) -
address(ip_address_BIND) -
port(port_BIND | None) -
key(server_key_BIND | None) -
tls(tls_id_BIND | None)
AlsoNotifyBlock
pydantic-model
¶
Bases: BindBaseModel
Options block also-notify with structure.
Show JSON schema:
{
"$defs": {
"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"
}
},
"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"
}
Fields:
-
comment(string_BIND | None) -
global_port(integer_BIND | None) -
source(ip_v4_address_BIND | Literal['*'] | None) -
source_v6(ip_v6_address_BIND | Literal['*'] | None) -
servers(list[ServerSpecifier])
ForwardersBlock
pydantic-model
¶
Bases: BindBaseModel
Options block forwarders with structure.
Show JSON schema:
{
"$defs": {
"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"
}
},
"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"
}
Fields:
-
comment(string_BIND | None) -
global_port(integer_BIND | None) -
source(ip_v4_address_BIND | Literal['*'] | None) -
source_v6(ip_v6_address_BIND | Literal['*'] | None) -
servers(list[ServerSpecifier])
Dns64Block
pydantic-model
¶
Bases: BindBaseModel
DNS64 configuration block.
Show JSON schema:
{
"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"
}
Fields:
-
comment(string_BIND | None) -
prefix(net_prefix_BIND) -
break_dnssec(boolean_BIND | None) -
clients(address_match_list_BIND | None) -
exclude(address_match_list_BIND | None) -
mapped(address_match_list_BIND | None) -
recursive_only(boolean_BIND | None) -
suffix(ip_v6_address_BIND | None)
break_dnssec
pydantic-field
¶
break_dnssec: boolean_BIND | None = None
Enable DNS64 synthesis even if DNSSEC validation fails
clients
pydantic-field
¶
clients: address_match_list_BIND | None = None
Clients affected by this DNS64 prefix
exclude
pydantic-field
¶
exclude: address_match_list_BIND | None = None
IPv6 addresses to exclude from DNS64
mapped
pydantic-field
¶
mapped: address_match_list_BIND | None = None
IPv4 addresses to map in DNS64
recursive_only
pydantic-field
¶
recursive_only: boolean_BIND | None = None
Apply DNS64 only to recursive queries
RateLimitBlock
pydantic-model
¶
Bases: BindBaseModel
Response rate limiting configuration block.
Show JSON schema:
{
"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"
}
Fields:
-
comment(string_BIND | None) -
responses_per_second(integer_BIND | None) -
errors_per_second(integer_BIND | None) -
nxdomains_per_second(integer_BIND | None) -
nodata_per_second(integer_BIND | None) -
referrals_per_second(integer_BIND | None) -
all_per_second(integer_BIND | None) -
slip(integer_BIND | None) -
window(integer_BIND | None) -
qps_scale(integer_BIND | None) -
ipv4_prefix_length(integer_BIND | None) -
ipv6_prefix_length(integer_BIND | None) -
exempt_clients(address_match_list_BIND | None) -
max_table_size(integer_BIND | None) -
min_table_size(integer_BIND | None) -
log_only(boolean_BIND | None)
Validators:
-
validate_slip→slip -
validate_ipv4_prefix_length→ipv4_prefix_length -
validate_ipv6_prefix_length→ipv6_prefix_length
responses_per_second
pydantic-field
¶
responses_per_second: integer_BIND | None = None
Limit for non-empty responses per second
errors_per_second
pydantic-field
¶
errors_per_second: integer_BIND | None = None
Limit for error responses per second
nxdomains_per_second
pydantic-field
¶
nxdomains_per_second: integer_BIND | None = None
Limit for NXDOMAIN responses per second
nodata_per_second
pydantic-field
¶
nodata_per_second: integer_BIND | None = None
Limit for NODATA responses per second
referrals_per_second
pydantic-field
¶
referrals_per_second: integer_BIND | None = None
Limit for referral responses per second
all_per_second
pydantic-field
¶
all_per_second: integer_BIND | None = None
Limit for all UDP responses per second
qps_scale
pydantic-field
¶
qps_scale: integer_BIND | None = None
Query rate at which to scale back limits
ipv4_prefix_length
pydantic-field
¶
ipv4_prefix_length: integer_BIND | None = None
IPv4 prefix length for client grouping
ipv6_prefix_length
pydantic-field
¶
ipv6_prefix_length: integer_BIND | None = None
IPv6 prefix length for client grouping
exempt_clients
pydantic-field
¶
exempt_clients: address_match_list_BIND | None = None
Clients exempt from rate limiting
max_table_size
pydantic-field
¶
max_table_size: integer_BIND | None = None
Maximum size of rate limit table
min_table_size
pydantic-field
¶
min_table_size: integer_BIND | None = None
Minimum size of rate limit table
log_only
pydantic-field
¶
log_only: boolean_BIND | None = None
Log rate limiting without actually dropping
ResponsePolicyZone
pydantic-model
¶
Bases: BindBaseModel
Response Policy Zone configuration.
Show JSON schema:
{
"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"
}
Fields:
-
comment(string_BIND | None) -
zone(domain_name_BIND) -
add_soa(boolean_BIND | None) -
log(boolean_BIND | None) -
max_policy_ttl(duration_BIND | None) -
min_update_interval(duration_BIND | None) -
policy(str | None) -
recursive_only(boolean_BIND | None) -
nsip_enable(boolean_BIND | None) -
nsdname_enable(boolean_BIND | None) -
ede(str | None)
Validators:
-
validate_policy→policy -
validate_ede→ede
max_policy_ttl
pydantic-field
¶
max_policy_ttl: duration_BIND | None = None
Maximum TTL for policy responses
min_update_interval
pydantic-field
¶
min_update_interval: duration_BIND | None = None
Minimum interval between updates
policy
pydantic-field
¶
policy: str | None = None
Policy action (cname, disabled, drop, given, etc.)
recursive_only
pydantic-field
¶
recursive_only: boolean_BIND | None = None
Apply only to recursive queries
validate_policy
pydantic-validator
¶
validate_policy(v: str | None) -> str | None
Validate the RPZ policy value.
"cname" and "tcp-only" both require a following redirect domain
(policy cname <domain>;) - unlike the other policy keywords, they
are never valid as a bare word on their own.
model_bind_syntax ¶
model_bind_syntax(indent_level: int = 0) -> str
Render as a single flat statement: zone <name> [policy ...] [log ...] ...;.
Unlike most nested blocks, this is not a zone <name> { ... }; block.
ResponsePolicyBlock
pydantic-model
¶
Bases: BindBaseModel
Response Policy configuration block.
Show JSON schema:
{
"$defs": {
"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"
}
},
"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"
}
Fields:
-
comment(string_BIND | None) -
zones(list[ResponsePolicyZone]) -
add_soa(boolean_BIND | None) -
break_dnssec(boolean_BIND | None) -
max_policy_ttl(duration_BIND | None) -
min_update_interval(duration_BIND | None) -
min_ns_dots(integer_BIND | None) -
nsip_wait_recurse(boolean_BIND | None) -
nsdname_wait_recurse(boolean_BIND | None) -
qname_wait_recurse(boolean_BIND | None) -
recursive_only(boolean_BIND | None) -
servfail_until_ready(boolean_BIND | None) -
nsip_enable(boolean_BIND | None) -
nsdname_enable(boolean_BIND | None)
break_dnssec
pydantic-field
¶
break_dnssec: boolean_BIND | None = None
Apply RPZ even when DNSSEC records exist
max_policy_ttl
pydantic-field
¶
max_policy_ttl: duration_BIND | None = None
Maximum TTL for policy responses (global)
min_update_interval
pydantic-field
¶
min_update_interval: duration_BIND | None = None
Minimum interval between updates (global)
min_ns_dots
pydantic-field
¶
min_ns_dots: integer_BIND | None = None
Minimum dots in nameserver names
nsip_wait_recurse
pydantic-field
¶
nsip_wait_recurse: boolean_BIND | None = None
Wait for recursion before applying NSIP rules
nsdname_wait_recurse
pydantic-field
¶
nsdname_wait_recurse: boolean_BIND | None = None
Wait for recursion before applying NSDNAME rules
qname_wait_recurse
pydantic-field
¶
qname_wait_recurse: boolean_BIND | None = None
Wait for recursion before applying QNAME rules
recursive_only
pydantic-field
¶
recursive_only: boolean_BIND | None = None
Apply only to recursive queries (global)
servfail_until_ready
pydantic-field
¶
servfail_until_ready: boolean_BIND | None = None
Return SERVFAIL until RPZ zones are loaded
nsdname_enable
pydantic-field
¶
nsdname_enable: boolean_BIND | None = None
Enable NSDNAME triggers (global)
CatalogZoneBlock
pydantic-model
¶
Bases: BindBaseModel
Catalog zone configuration.
Show JSON schema:
{
"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"
}
Fields:
-
comment(string_BIND | None) -
zone(domain_name_BIND) -
default_primaries(address_match_list_BIND | None) -
zone_directory(quoted_string_BIND | None) -
in_memory(boolean_BIND | None) -
min_update_interval(duration_BIND | None)
default_primaries
pydantic-field
¶
default_primaries: address_match_list_BIND | None = None
Default primary servers for member zones
zone_directory
pydantic-field
¶
zone_directory: quoted_string_BIND | None = None
Directory for zone files
min_update_interval
pydantic-field
¶
min_update_interval: duration_BIND | None = None
Minimum interval between updates
model_bind_syntax ¶
model_bind_syntax(indent_level: int = 0) -> str
Render as a single flat statement: zone <name> [default-primaries
{ ... }] [zone-directory <str>] [in-memory <bool>]
[min-update-interval <duration>];.
Unlike most nested blocks, this is not a zone <name> { ... }; block.
RrsetOrderRule
pydantic-model
¶
Bases: BindBaseModel
RRset ordering rule.
Show JSON schema:
{
"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"
}
Fields:
-
comment(string_BIND | None) -
order_class(string_BIND | None) -
order_type(string_BIND | None) -
order_name(quoted_string_BIND | None) -
order(str)
Validators:
-
validate_order→order