recursor - coredns simple ip addresses resolver
recursor - determines IP addresses:
- using defined static IP addresses
- or resolves given hostname using an external resolver
Config Syntax
Corefile
recursor {
[external-json|external-yaml config-file-path]
[verbose 0..2]
zone example.svc
resolver dns1 {
urls udp://10.0.0.1:53 udp://10.0.0.2:53
[timeout_ms 10]
}
alias alias1 {
[ips 10.1.1.1 10.1.1.2]
[hosts www.example.org www.example.com]
[ttl 5]
[resolver_name dns1]
}
alias alias2 {
[hosts www.example.org www.example.com]
# system default resolver
}
}
External JSON
{
"verbose": 0,
"zone": "example.svc",
"resolvers": {
"dns1": {
"urls": ["udp://10.0.0.1:53","udp://10.0.0.2:53"],
"timeout_ms": 10
}
},
"aliases": {
"alias1": {
"ips": ["10.1.1.1","10.1.1.2"],
"hosts": ["www.example.org","www.example.com"],
"ttl": 5,
"resolver_name": "dns1"
},
"alias2": {
"hosts": ["www.example.org","www.example.com"],
"resolver_name": "default"
}
}
}
External YAML
---
verbose: 0
zone: example.svc
resolvers:
dns1:
urls:
- udp://10.0.0.1:53
- udp://10.0.0.2:53
timeout_ms: 10
aliases:
alias1:
ips:
- 10.1.1.1
- 10.1.1.2
hosts:
- www.example.org
- www.example.com
ttl: 5
resolver_name: dns1
alias2:
hosts:
- www.example.org
- www.example.com
resolver_name: default
Try it
Look at some examples.
Helpful commands:
dig alias1.example.svc @127.0.0.1 -p 1053
nslookup -port=1053 -debug -type=A alias2.example.svc 127.0.0.1
TODO