GeoDNS backend for PowerDNS
I'm wondering if there's any interest among fellow LET users for a new GeoDNS backend for PowerDNS?
I've used PowerDNS's geo backend for a few months and there are quite a few issues I had with it. The configuration is a bit clunky, it was designed around being on a separate set of DNS servers from the servers that handle the apex / rest of the domain. It works not by returning A records, but by returning CNAMEs that you would setup your round robins on elsewhere. You must manually go through a long list of every country and specify which CNAME record to return for each one. It only works at the country level, so there is no separation between the east and west coasts of the US.
I've also used gdnsd for a few months. Its configuration was much simpler, as it works by you defining the coordinates (latitude/longitude) for each 'datacenter' for which you can group multiple IPs. It automattically picks the closest datacenter to the client for which to return the IPs of based on the distance between the coordinates of the datacenters and the clients IP. The first downside I noticed (and a major one for me) is that it will only return the IPs of one datacenter at a time. Going by its documentation, it was clearly designed around having multiple servers (redundant load balancers even) at each datacenter. Another thing that might be a downside for some people here is that it currently only supports RFC1035 zone files (no web panel).
I ended up deciding to write my own backend for PowerDNS. It's still currently in it's early stages, though I already have a version I'm rolling out onto my production nameservers for testing. If there's enough demand for it I'll clean up the code some and release it as Free & Open Source.
Features it currently supports: 1. Simple configuration: just insert your IP's and location info 2. Automagically calculates which servers are the closest to the client based on the coordinates (similar to gdnsd) 3. Returns the 3 closest IPs IN ORDER BY DISTANCE (so your clients always get connected to the closest server that's not down, not just a random one of the closest 3) 4. Uses MaxMind's GeoCity or GeoLiteCity (free) database 5. Only need to use the textfile configuration for the GeoDNS records, you can use PowerAdmin (or other web panel) for configuring all of your other records/domains.
Planned features to be added within the next week: 1. Overides based on the client's subnet, continent, country, region, or city 2. IPv6 / AAAA 3. New config format for storing server IPs/locations, as well as overides and other new settings. 4. System uptime checking: check servers at defined intervals to see if they're online or not, using either ping or connecting to a TCP socket. After defined amount of consecutive failed checks, automatically remove the IP from the pool until a defined amount of consecutive checks succeed.