[rbldnsd] Announce: experimental rbldnsd-0.994.92: EDNS0 and ACL
support
Michael Tokarev
mjt at tls.msk.ru
Sat Apr 16 20:39:00 MSD 2005
Together with a bugfix 0.994b release, I also uploaded
experimental (aka "pre") release 0.994.92, the code which
eventually become 0.995 version. This is a development
snapshot intended to show what's going on, for comments
and testing, NOT for production usage.
The changes are:
- feature: (initial, experimental) ACL support. It is possble to force
certain kinds of replies to be sent to certain clients (based on the
client IP address), regardless of the query the client performs.
Read rbldnsd(8) manpage for the details.
This feature is experimental. Basic idea will remain but details are
likely to change in the future, as requiriments will be understood
better.
- feature: ENDS0 support for UDPsize, allowing replies larger than 512
bytes for clients claiming EDNS0 support (appropriate OPT record in
additional section in query). Not really user-visible change per se,
but may be quite visible for clients especially when our replies are large.
Several words about ACLs. The thing looks like:
rbldnsd ... bl.ex.com:ip4set:bldata bl.ex.com:acl:acldata ...
Ie, there's a new dataset type named "acl", which is NOT included into
the zone, but instead controls which clients receives which treatment.
Only one acl-type dataset can be specified for a given zone (rbldnsd
will complain if more are specified). It is possible to specify
global acl too, by omitting the zone name, like:
rbldnsd ... bl.ex.com:ip4set:bldata :acl:acldata ...
(note the leading colon before "acl...").
Content of `acldata' file is pretty like the one of ip4trie, ie,
CIDRs and "values", where "value" can be one of:
:ignore -- to mean ignore all queries made from the given CIDR
:refuse -- to mean refuse all queries from the given range
:empty -- for queries from the range, pretend no entries are
listed in a dnsbl at all
usual_A+TXT_template -- always return this template to valid
dnsbl queries made from the given range.
First two are terminates processing immediately - rbldnsd either
"forgots" about the packet or just returns REFUSED, without
looking further.
But the last two are more "intelligent": rbldnsd tries to determine
whenever the query was for DNSBL data (all "real" dnsbl datasets --
ip4set, ip4tset, ip4trie, dnset) or for metadata, including generic
dataset and all the normal NS+SOA records. In the later case,
rbldnsd still constructs the reply as if there was no ACL. But
if it was a valid DNSBL query, result will contain no A+TXT data
at all (even if the object/entry being queried is in fact listed)
or will contain A+TXT specified by the ACL (even if the entry is
not listed, or listed with different data).
In the later case ("pretend-all-listed"), $-substitutes are made
using the IP address of the client, not the one contained in the
query.
For now, the ACL system only supports IPv4 addresses. IPv6 addresses
will be supported together with the first ip6something dataset,
in some probably distant future.
This whole ACL stuff is new, and is subject to changes/refiniments.
I don't yet know whenever current functionality fits current (and
especially future ;) demands. Comments are welcome.
As usual, rbldnsd homepage is at
http://www.corpit.ru/mjt/rbldnsd.html
All prereleases are at
http://www.corpit.ru/mjt/pre/
/mjt
/mjt
More information about the rbldnsd
mailing list