EDNS0 and DNSSEC
dnspyre supports sending DNS requests with EDNS0 extension, currently these EDNS0 features are supported:
UDP message size
advertisement for support of larger DNS response size (UDP message size) using --edns0 flag
dnspyre --server '1.1.1.1' google.com --edns0=1024
DNSSEC
DNSSEC security extension using --dnssec flag, by using this flag the dnspyre will also count the number of domains that were successfully validated by DNS resolver
dnspyre --server '1.1.1.1' cloudflare.com --dnssec
EDNS0 options
sending various EDNS0 options using --ednsopt flag, you have to specify the decimal EDNS0 option code (see IANA registry) and hex-string representing EDNS0 option data, data format depends on the EDNS0 option
for example to send client subnet EDNS0 option for subnet 81.0.198.170/24 you specify code 8 and data 000118005100c6 (0001 = IPv4 Family, 18 = source mask /24, 00 = no additional scope, 5100C6AA = 81.0.198.170 )
dnspyre --server '8.8.8.8' aws.amazon.com --ednsopt '8:000118005100c6'
EDNS Client Subnet (ECS)
v3.8.0
For easier specification of EDNS Client Subnet (ECS) option, you can use the --ecs flag with CIDR notation instead of manually constructing the hex string with --ednsopt.
IPv4 example
dnspyre --server '8.8.8.8' aws.amazon.com --ecs '204.15.220.0/22'
IPv6 example
dnspyre --server '8.8.8.8' aws.amazon.com --ecs '2001:db8::/32'
The --ecs flag can be combined with --ednsopt to send additional EDNS options (as long as --ednsopt doesn’t use code 8, which is reserved for ECS):
dnspyre --server '8.8.8.8' aws.amazon.com --ecs '192.0.2.0/24' --ednsopt '10:0001'