Response Policy Zone is an open standard developed by Paul Vixie (ISC and Farsight) and Vernon Schryver (Rhyolite), to modify DNS responses based on a policy loaded via a zonefile.
Frequently, Response Policy Zones get to be very large and change quickly, so it is customary to update them over IXFR. It allows the use of third-party feeds, and near real-time policy updates.
An RPZ can be loaded from file or slaved from a master. To load from file, use for example:
rpzFile("dblfilename", {defpol=Policy.Custom, defcontent="badserver.example.com"})
To slave from a master and start IXFR to get updates, use for example:
rpzMaster("192.0.2.4", "policy.rpz", {defpol=Policy.Drop})
In this example, ‘policy.rpz’ denotes the name of the zone to query for.
rpzFile(filename, settings)¶Load an RPZ from disk.
| Parameters: |
|
|---|
rpzMaster(address, name, settings)¶Load an RPZ from AXFR and keep retrieving with IXFR.
| Parameters: |
|
|---|
These options can be set in the settings of both rpzMaster() and rpzFile().
Default policy: Policy.Custom, Policy.Drop, Policy.NXDOMAIN, Policy.NODATA, Policy.Truncate, Policy.NoAction.
CNAME field to return in case of defpol=Policy.Custom
the TTL of the CNAME field to be synthesized for the default policy. The default is to use the zone’s TTL,
The maximum TTL value of the synthesized records, overriding a higher value from defttl or the zone. Default is unlimited.
An indication of the number of expected entries in the zone, speeding up the loading of huge zones by reserving space in advance.
In addition to the settings above the settings for rpzMaster() may contain:
The name of the TSIG key to authenticate to the server. When this is set, tsigalgo and tsigsecret must also be set.
The name of the TSIG algorithm (like ‘hmac-md5’) used
Base64 encoded TSIG secret
An integer describing the interval between checks for updates. By default, the RPZ zone’s default is used
The maximum size in megabytes of an AXFR/IXFR update, to prevent resource exhaustion. The default value of 0 means no restriction.
The source IP address to use when transferring the RPZ. When unset, query-local-address and query-local-address6 are used.
New in version 4.1.2: Before 4.1.2, the timeout was fixed on 10 seconds.
The timeout in seconds of the total initial AXFR transaction. 20 by default.
If no settings are included, the RPZ is taken literally with no overrides applied. Several Policy Actions exist
Will return a NoError, CNAME answer with the value specified with defcontent,
when looking up the result of this CNAME, RPZ is not taken into account.
Will simply cause the query to be dropped.
Will continue normal processing of the query.
Will return a NoError response with no value in the answer section.
Will return a response with a NXDomain rcode.
will return a NoError, no answer, truncated response over UDP. Normal processing will continue over TCP