This all finally makes sense. Thank you very much Brian, big time.


On 13.11.2017 11:01, Brian Candler wrote:
On 13/11/2017 09:50, Mislav | SysAdmin wrote:
Yes, "ns1.private.ch" is a made-up name, that's correct. I'm running Debian 9 with pdns-recursor-server installed via apt, version 4.1.0-rc2.

Before I do all the tests you mentioned, let me explain my setup, I think there is something wrong there - I configured "allow-recursion" inside pdns.conf (so pdns_server), I didn't define anything inside recursor.conf - I took this configuration from old environment where we were running version 3.1. (also same problem there, but since I can't receive support on 3.1, we decided to migrate to 4.1) I read somewhere this should be possible to define in pdns.conf since certain version (option allow-recursion) and if I don't define there my IP, I'm not able to recurse at all. But I also see now in docs this is removed in 4.1.0?


There are two types of DNS server: recursive/caching servers (which clients talk to), and authoritative servers (which contain the actual zone information, and which the recursive/caching servers talk to).

Clients are statically configured with the IP address(es) of local recursive/caching servers.

NS records point to the hostnames of authoritative servers (which in turn resolve to the IP addresses of the authoritative servers).

If you want to run both types of server, then you should be running them on different IP addresses.  Don't make your authoritative server be recursive - that is bad practice, and causes various problems as you've found, which is why it has been removed entirely from the pdns authoritative server.

For resilience, you will want two local recursive servers.  If you are serving your own zone information then you will also need at least two authoritative servers, but one should be local and one should be remote on a completely different Internet backbone (see RFC2182)

Shall I try to configure this somehow on recursor.conf? My pdns_server is currently listening on publicIP on port 53 and recursor is listening on 127.0.0.1 on port 53. Please note that both are on same IP / same server. I also noticed that if I do such this:
# netstat -tlpn | grep 53
tcp        0      0 127.0.0.1:53 0.0.0.0:*               LISTEN      1036/pdns_recursor

# nslookup www.mobile-universe.ch 127.0.0.1
Server:        127.0.0.1
Address:    127.0.0.1#53

Non-authoritative answer:
www.mobile-universe.ch canonical name = elb-front-92-10-617833872.eu-central-1.elb.amazonaws.com.
Name: elb-front-92-10-617833872.eu-central-1.elb.amazonaws.com
Address: 52.58.17.141
Name: elb-front-92-10-617833872.eu-central-1.elb.amazonaws.com

directly on the server, it works.

Yes, it works because you are sending the client query to the recursive server (pdns_recursor), which is its job.

But when I do it from outside, it doesn't work.

Because you are sending a recursive query to an authoritative server, which is not its job (albeit older versions of the authoritative server *did* have a recursor option you could turn on)

So, from my understanding, it works internally, because I do recurse from 127.0.0.1 and that goes through pdns_recursor, but if I do it from outside, recursing goes through pdns_server and that is the problem.

Yes.

Bind them to two different external IP addresses; point your clients at the recursor; and point your NS records at the authoritative server.


--

Srdacan pozdrav | Best regards
Mislav Orsolic | sysadmin
https://www.mislav.eu / https://www.linkedin.com/in/mislavorsolic

___________________________________________

*T * +385 91 444 0275
*Skype:* mislav.orsolic

_______________________________________________
Pdns-users mailing list
Pdns-users@mailman.powerdns.com
https://mailman.powerdns.com/mailman/listinfo/pdns-users

Reply via email to