X-Git-Url: https://git.openstreetmap.org./dns.git/blobdiff_plain/e7d460c9a2ab7a742edc120fbc758cc7fecbbe42..701876ec5ff6e6341779cd9738d6de53c9e17f3a:/README.md diff --git a/README.md b/README.md index 052c8f3..95cbcb8 100644 --- a/README.md +++ b/README.md @@ -1,74 +1,14 @@ OpenStreetMap DNS ====================================== -This repository contains the DNS zone file templates and related code for managing OpenStreetMap.org and other domain names DNS. The full list of domains are in the [Makefile](Makefile). +This repository contains the DNS zone templates and related code for managing OpenStreetMap.org and other domain names. The full list of domains managed by this repo are in the [dnsconfig.js](dnsconfig.js) file. ## Standard DNS Zone Files -The [zone files templates](src/) are in [tinydns-data](http://cr.yp.to/djbdns/tinydns-data.html) syntax and are written out by the [Makefile](Makefile). +We use [dnscontrol](https://stackexchange.github.io/dnscontrol/) to manage OpenStreetMap DNS. A set of wrapper scripts are used, which are called from the [Makefile](Makefile) -On a repo commit, a git [post-receive](https://github.com/openstreetmap/chef/blob/master/cookbooks/dns/files/default/post-receive) runs `make update` via a [script](https://github.com/openstreetmap/chef/blob/master/cookbooks/dns/templates/default/dns-update.erb) which then pushes the updated zone files to the authoritative DNS nameservers. +Merges to the master branch trigger a git [post-receive](https://github.com/openstreetmap/chef/blob/master/cookbooks/dns/files/default/post-receive) which runs `make update` via a [script](https://github.com/openstreetmap/chef/blob/master/cookbooks/dns/templates/default/dns-update.erb), the DNS is then updated by dnscontrol. ## GeoDNS Zones -The GeoDNS zones are handled differently. - -### tile.openstreetmap.org (mkgeo Generated) - -The `tile.openstreetmap.org` and `[a|b|c].tile.openstreetmap.org` are CNAME'ed to the `tile.geo.openstreetmap.org` zone. - -The `tile.openstreetmap.org` zone file is written by [mkgeo](bin/mkgeo) which attempts to match the [estimated country bandwidth requirements](bandwidth/tile.openstreetmap.yml) to the nearest [running](https://uptime.openstreetmap.org/) [tile cache server](src/tile.openstreetmap) with available capacity. - -Example `tile.openstreetmap.org` zone file snippet in [tinydns-data](http://cr.yp.to/djbdns/tinydns-data.html) syntax as generated by [mkgeo](bin/mkgeo): - -``` -# Afghanistan -Caf.tile.openstreetmap.org:baku.tile.openstreetmap.org:600 -# Albania -Cal.tile.openstreetmap.org:osijek.tile.openstreetmap.org:600 -# Algeria -Cdz.tile.openstreetmap.org:zaragoza.tile.openstreetmap.org:600 -# American Samoa -Cas.tile.openstreetmap.org:sanfrancisco.tile.openstreetmap.org:600 -... -# Servers -+aalborg.tile.openstreetmap.org:130.225.254.123:600 -+amsterdam.tile.openstreetmap.org:134.90.146.26:600 -+baku.tile.openstreetmap.org:94.20.20.55:600 -``` - -The current tile.openstreetmap.org matching is here: https://dns.openstreetmap.org/tile.openstreetmap.org.html - -### tile.geo.openstreetmap.org (GeoIP) - -The `tile.geo.openstreetmap.org` zone uses authoritative [gdnsd](https://gdnsd.org/) DNS nameservers (`a.ns.openstreetmap.org`, `b.ns.openstreetmap.org`, etc ). - -The gdnsd config is managed using a [chef cookbook](https://github.com/openstreetmap/chef/tree/master/cookbooks/geodns). - -The DNS responses from `tile.geo.openstreetmap.org` are CNAMEs to XX.tile.openstreetmap.org, where XX is the ISO 3166-1 alpha-2 country code from the [client subnet if supplied by EDNS0](https://tools.ietf.org/html/rfc7871) or the IP address of the resolving DNS if the client subnet is not supplied by EDNS0. - -A typical DNS query flow example: `a.tile.openstreetmap.org -> CNAME tile.geo.openstreetmap.org -> CNAME gb.tile.openstreetmap.org. -> CNAME aalborg.tile.openstreetmap.org. -> A aaa.bbb.ccc.ddd` - -### render.openstreetmap.org (mkgeo Generated) - -The `render.openstreetmap.org` zone is a DNS zone used internally by the tile.openstreetmap.org cache servers and ***SHOULD NOT BE BE USED BY OTHERS***. - -The `render.openstreetmap.org` zone file is written by [mkgeo](bin/mkgeo) which attempts to match the estimated caches' bandwidth requirement (dynamically generated above tile.openstreetmap.org mkgeo) to the nearest [running](https://uptime.openstreetmap.org/) [render server](src/render.openstreetmap) with available capacity. - -Example `tile.openstreetmap.org` zone file snippet in [tinydns-data](http://cr.yp.to/djbdns/tinydns-data.html) syntax as generated by [mkgeo](bin/mkgeo): - -``` -# aalborg -Caalborg.render.openstreetmap.org:vial.render.openstreetmap.org:600 -# amsterdam -Camsterdam.render.openstreetmap.org:yevaud.render.openstreetmap.org:600 -# baku -Cbaku.render.openstreetmap.org:vial.render.openstreetmap.org:600 -... -# Servers -+orm.render.openstreetmap.org:193.63.75.98:600 -+vial.render.openstreetmap.org:138.201.195.31:600 -+yevaud.render.openstreetmap.org:128.40.45.208:600 -``` - -The current render.openstreetmap.org matching is here: https://dns.openstreetmap.org/render.openstreetmap.org.html +For GeoDNS zones we use [gdnsd](https://gdnsd.org/) with gdnsd config files generated by scripts called from the [Makefile](Makefile) file.