---
name: "gdnsd-plugin-reflect"
section: "8"
platform: "linux"
package: "gdnsd"
version: "3.8.3-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/gdnsd-plugin-reflect"
---

# gdnsd-plugin-reflect(8)

gdnsd cache reflector plugin

## NAME

gdnsd-plugin-reflect - gdnsd cache reflector plugin

## SYNOPSIS

Zonefile RRs using reflect resolution

```
  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
```

## DESCRIPTION

**gdnsd-plugin-reflect** is a resolution plugin that acts as a live debugging tool.  It reflects a view of the client's network address back in the response in the form of `"A"` or `"AAAA"` RRs.  It can be used with both `"DYNA"` and `"DYNC"` RRs, and will return address data in both cases.

The plugin can operate in one of four modes named `"dns"`, `"edns"`, `"both"`, and `"best"`, which can be selected by using the mode name as a resource name in the zonefile, as shown in the example above.  The default mode is `"best"`.  The modes operate as follows:

- dns

  In the `"dns"` mode, the address in the response is always the source IP address of the request as seen by gdnsd.  Note that this is generally the public address of a central cache/resolver server rather than the end-user client itself.

- edns

  In the `"edns"` mode, the address in the response is the address sent by the client in the `"edns-client-subnet"` option.  If the client did not send such an option, the IPv4 address `0.0.0.0` is returned.

- both

  In the `"both"` mode, both of the above results are returned in the same response, but there is no artificial `0.0.0.0` added if no `"edns-client-subnet"` option was available.

- best

  In the `"best"` (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.

## SEE ALSO

[**gdnsd.config**(5)](/gdnsd.config/5.md), [**gdnsd.zonefile**(5)](/gdnsd.zonefile/5.md), [**gdnsd**(8)](/gdnsd/8.md)

The gdnsd manual.

## 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/\>.
