| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  | # reverse
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-26 06:02:51 -07:00
										 |  |  | The *reverse* middleware allows CoreDNS to respond dynamically to a PTR request and the related A/AAAA request. | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Syntax
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2017-02-10 12:48:51 +00:00
										 |  |  | reverse NETWORK... { | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  |     hostname TEMPLATE | 
					
						
							|  |  |  |     [ttl TTL] | 
					
						
							|  |  |  |     [fallthrough] | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * **NETWORK** one or more CIDR formatted networks to respond on. | 
					
						
							| 
									
										
										
										
											2017-05-26 06:02:51 -07:00
										 |  |  | * `hostname` injects the IP and zone to a template for the hostname. Defaults to "ip-{IP}.{zone[1]}". See below for template. | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  | * `ttl` defaults to 60 | 
					
						
							|  |  |  | * `fallthrough` If zone matches and no record can be generated, pass request to the next middleware. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Template Syntax
 | 
					
						
							| 
									
										
										
										
											2017-02-10 12:48:51 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-26 06:02:51 -07:00
										 |  |  | The template for the hostname is used for generating the PTR for a reverse lookup and matching the | 
					
						
							| 
									
										
										
										
											2017-02-10 12:48:51 +00:00
										 |  |  | forward lookup back to an IP. | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | #### `{ip}`
 | 
					
						
							| 
									
										
										
										
											2017-02-10 12:48:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The `{ip}` symbol is **required** to make reverse work. | 
					
						
							| 
									
										
										
										
											2017-06-25 04:59:33 -04:00
										 |  |  | For IPv4 lookups the IP is directly extracted | 
					
						
							| 
									
										
										
										
											2017-05-26 06:02:51 -07:00
										 |  |  | With IPv6 lookups the ":" is removed, and any zero ranged are expanded, e.g., | 
					
						
							| 
									
										
										
										
											2017-02-10 12:48:51 +00:00
										 |  |  | "ffff::ffff" results in "ffff000000000000000000000000ffff" | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | #### `{zone[i]}`
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-10 12:48:51 +00:00
										 |  |  | The `{zone[i]}` symbol is **optional** and can be replaced by a fixed (zone) string. | 
					
						
							|  |  |  | The zone will be matched by the zones listed in *this* configuration stanza. | 
					
						
							| 
									
										
										
										
											2017-05-26 06:02:51 -07:00
										 |  |  | `i` needs to be replaced with the index of the configured listener zones, starting with 1. | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Examples
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-10 12:48:51 +00:00
										 |  |  | ~~~ txt | 
					
						
							|  |  |  | arpa compute.internal { | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  |     # proxy unmatched requests | 
					
						
							|  |  |  |     proxy . 8.8.8.8 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-26 06:02:51 -07:00
										 |  |  |     # answer requests for IPs in this network | 
					
						
							| 
									
										
										
										
											2017-06-25 04:59:33 -04:00
										 |  |  |     # PTR 1.0.32.10.in-addr.arpa. 3600 ip-10.0.32.1.compute.internal. | 
					
						
							|  |  |  |     # A ip-10.0.32.1.compute.internal. 3600 10.0.32.1 | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  |     # v6 is also possible | 
					
						
							|  |  |  |     # PTR 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.d.f.ip6.arpa. 3600 ip-fd010000000000000000000000000001.compute.internal. | 
					
						
							|  |  |  |     # AAAA ip-fd010000000000000000000000000001.compute.internal. 3600 fd01::1 | 
					
						
							|  |  |  |     reverse 10.32.0.0/16 fd01::/16 { | 
					
						
							|  |  |  |         # template of the ip injection to hostname, zone resolved to compute.internal. | 
					
						
							| 
									
										
										
										
											2017-02-10 12:48:51 +00:00
										 |  |  |         hostname ip-{ip}.{zone[2]} | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         ttl 3600 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-26 06:02:51 -07:00
										 |  |  |         # Forward unanswered or unmatched requests to proxy | 
					
						
							|  |  |  |         # without this flag, requesting A/AAAA records on compute.internal. will end here. | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  |         fallthrough | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-10 12:48:51 +00:00
										 |  |  | ~~~ txt | 
					
						
							|  |  |  | 32.10.in-addr.arpa.arpa arpa.company.org { | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     reverse 10.32.0.0/16 { | 
					
						
							|  |  |  |         # template of the ip injection to hostname, zone resolved to arpa.company.org. | 
					
						
							| 
									
										
										
										
											2017-02-10 12:48:51 +00:00
										 |  |  |         hostname "ip-{ip}.v4.{zone[2]}" | 
					
						
							| 
									
										
										
										
											2017-02-09 20:39:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         ttl 3600 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # fallthrough is not required, v4.arpa.company.org. will be only answered here | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # cidr closer to the ip wins, so we can overwrite the "default" | 
					
						
							|  |  |  |     reverse 10.32.2.0/24 { | 
					
						
							|  |  |  |         # its also possible to set fix domain suffix | 
					
						
							|  |  |  |         hostname ip-{ip}.fix.arpa.company.org. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ttl 3600 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ |