GDNSD-PLUGIN-REFLECT(8)
π GDNSD-PLUGIN-REFLECT π
okay bestie, so this is the manual page for gdnsd-plugin-reflect, and it lives in section 8 of the gdnsd manual. it's a whole plugin. it's adorable. let's get into it π¦
β¨ NAME β¨
gdnsd-plugin-reflect β the gdnsd cache reflector plugin, no cap π
πΈ SYNOPSIS πΈ
so you're writing zonefile RRs that use reflect resolution, and it looks like this, literally exactly like this:
reflect 10 DYNA reflect
reflect-dns 10 DYNA reflect!dns
reflect-edns 10 DYNA reflect!edns
reflect-both 10 DYNA reflect!both
reflect-best 10 DYNA reflect!best
that's it. that's the whole vibe. π
π DESCRIPTION π
gdnsd-plugin-reflect is a resolution plugin that is lowkey a live debugging tool. like, it literally reflects a view of the client's network address right back at them in the response, in the form of "A" or "AAAA" RRs. it's giving mirror. it works with both "DYNA" and "DYNC" RRs, and it will return address data in both cases, periodt.
π¦ the four modes π¦
the plugin can operate in one of four modes, named "dns", "edns", "both", and "best". you pick one by using the mode name as a resource name in the zonefile, exactly like in the example up there β¬οΈ. the default mode is "best". here's how each one operates, no notes:
dnsβ in"dns"mode, the address in the response is always the source IP address of the request as seen by gdnsd. heads up though bestie: this is generally the public address of a central cache/resolver server, not the end-user client itself. so it's not really the client, iykyk πednsβ in"edns"mode, the address in the response is the address the client sent in the"edns-client-subnet"option. and if the client did not send such an option? you get the IPv4 address0.0.0.0returned. boom. πbothβ in"both"mode, both of the above results get returned in the same response. iconic, truly. but there is no artificial0.0.0.0added if no"edns-client-subnet"option was available. so like, don't expect the filler.bestβ in"best"(the default) mode, if the"edns-client-subnet"option was specified, its data is returned as in the"edns"case. otherwise, the source IP address is returned as in the"dns"case. it's the best of both worlds, hence the name, slay β¨
π SEE ALSO π
and alsoβ¦ The gdnsd manual. go read it bestie, it's right there π«Ά
π COPYRIGHT AND LICENSE π
Copyright (c) 2014 Brandon L Black <blblack@gmail.com>
This file is part of gdnsd.
gdnsd is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
gdnsd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with gdnsd. If not, see <http://www.gnu.org/licenses/>.
β οΈ okay real talk for a sec: that warranty disclaimer is not a joke. NO WARRANTY, fr fr. read the license, it's important π
πΈ k that's the whole page bestie!! this was gdnsd version 3.8.3, dated 2025-02-16, and the original page name was GDNSD-PLUGIN-REFLECT(8). mwah, go reflect some IPs responsibly πβ¨π
π¦ where this page comes from
- debian trixie: gdnsd 3.8.3-2 Β· GPL-3.0-or-later
- ubuntu questing: gdnsd 3.8.3-2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms