| 
									
										
										
										
											2016-03-27 07:37:23 +01:00
										 |  |  | # file
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | ## Name
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | *file* - enables serving zone data from an RFC 1035-style master file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Description
 | 
					
						
							| 
									
										
										
										
											2016-03-27 07:37:23 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-04 06:56:37 +01:00
										 |  |  | The *file* plugin is used for an "old-style" DNS server. It serves from a preloaded file that exists | 
					
						
							| 
									
										
										
										
											2018-11-28 11:57:39 -08:00
										 |  |  | on disk. If the zone file contains signatures (i.e., is signed using DNSSEC), correct DNSSEC answers | 
					
						
							|  |  |  | are returned. Only NSEC is supported! If you use this setup *you* are responsible for re-signing the | 
					
						
							| 
									
										
										
										
											2016-08-29 19:15:04 +01:00
										 |  |  | zonefile. | 
					
						
							| 
									
										
										
										
											2016-03-27 07:37:23 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Syntax
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2016-10-10 20:13:22 +01:00
										 |  |  | file DBFILE [ZONES...] | 
					
						
							| 
									
										
										
										
											2016-03-27 07:37:23 +01:00
										 |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-28 11:57:39 -08:00
										 |  |  | * **DBFILE** the database file to read and parse. If the path is relative, the path from the *root* | 
					
						
							| 
									
										
										
										
											2016-10-11 20:42:28 +01:00
										 |  |  |   directive will be prepended to it. | 
					
						
							| 
									
										
										
										
											2016-10-10 20:13:22 +01:00
										 |  |  | * **ZONES** zones it should be authoritative for. If empty, the zones from the configuration block | 
					
						
							| 
									
										
										
										
											2016-03-27 07:37:23 +01:00
										 |  |  |     are used. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-28 11:57:39 -08:00
										 |  |  | If you want to round-robin A and AAAA responses look at the *loadbalance* plugin. | 
					
						
							| 
									
										
										
										
											2016-03-27 07:37:23 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2016-10-10 20:13:22 +01:00
										 |  |  | file DBFILE [ZONES... ] { | 
					
						
							|  |  |  |     transfer to ADDRESS... | 
					
						
							| 
									
										
										
										
											2018-09-29 17:50:49 +02:00
										 |  |  |     reload DURATION | 
					
						
							| 
									
										
										
										
											2016-03-27 07:37:23 +01:00
										 |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-10 20:13:22 +01:00
										 |  |  | * `transfer` enables zone transfers. It may be specified multiples times. `To` or `from` signals | 
					
						
							| 
									
										
										
										
											2018-11-28 11:57:39 -08:00
										 |  |  |   the direction. **ADDRESS** must be denoted in CIDR notation (e.g., 127.0.0.1/32) or just as plain | 
					
						
							| 
									
										
										
										
											2016-09-18 09:32:06 +01:00
										 |  |  |   addresses. The special wildcard `*` means: the entire internet (only valid for 'transfer to'). | 
					
						
							| 
									
										
										
										
											2019-06-12 04:11:42 +08:00
										 |  |  |   When an address is specified a notify message will be sent whenever the zone is reloaded. | 
					
						
							| 
									
										
										
										
											2018-11-28 11:57:39 -08:00
										 |  |  | * `reload` interval to perform a reload of the zone if the SOA version changes. Default is one minute. | 
					
						
							|  |  |  |   Value of `0` means to not scan for changes and reload. For example, `30s` checks the zonefile every 30 seconds | 
					
						
							|  |  |  |   and reloads the zone when serial changes. | 
					
						
							| 
									
										
										
										
											2016-03-27 07:37:23 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Examples
 | 
					
						
							| 
									
										
										
										
											2016-04-03 09:02:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-18 09:32:06 +01:00
										 |  |  | Load the `example.org` zone from `example.org.signed` and allow transfers to the internet, but send | 
					
						
							|  |  |  | notifies to 10.240.1.1 | 
					
						
							| 
									
										
										
										
											2016-04-03 09:02:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-04 06:56:37 +01:00
										 |  |  | ~~~ txt | 
					
						
							| 
									
										
										
										
											2017-10-31 07:14:49 +00:00
										 |  |  | example.org { | 
					
						
							|  |  |  |     file example.org.signed { | 
					
						
							|  |  |  |         transfer to * | 
					
						
							|  |  |  |         transfer to 10.240.1.1 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Or use a single zone file for multiple zones: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-04 06:56:37 +01:00
										 |  |  | ~~~ txt | 
					
						
							| 
									
										
										
										
											2017-10-31 07:14:49 +00:00
										 |  |  | . { | 
					
						
							|  |  |  |     file example.org.signed example.org example.net { | 
					
						
							|  |  |  |         transfer to * | 
					
						
							|  |  |  |         transfer to 10.240.1.1 | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-04-03 09:02:34 +01:00
										 |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2019-06-17 19:47:07 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | Note that if you have a configuration like the following you may run into a problem of the origin | 
					
						
							|  |  |  | not being correctly recognized: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-04 06:56:37 +01:00
										 |  |  | ~~~ txt | 
					
						
							| 
									
										
										
										
											2019-06-17 19:47:07 +01:00
										 |  |  | . { | 
					
						
							|  |  |  |     file db.example.org | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | We omit the origin for the file `db.example.org`, so this references the zone in the server block, | 
					
						
							|  |  |  | which, in this case, is the root zone. Any contents of `db.example.org` will then read with that | 
					
						
							|  |  |  | origin set; this may or may not do what you want. | 
					
						
							| 
									
										
										
										
											2019-06-17 15:46:02 -04:00
										 |  |  | It's better to be explicit here and specify the correct origin. This can be done in two ways: | 
					
						
							| 
									
										
										
										
											2019-06-17 19:47:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-04 06:56:37 +01:00
										 |  |  | ~~~ txt | 
					
						
							| 
									
										
										
										
											2019-06-17 19:47:07 +01:00
										 |  |  | . { | 
					
						
							|  |  |  |     file db.example.org example.org | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Or | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-04 06:56:37 +01:00
										 |  |  | ~~~ txt | 
					
						
							| 
									
										
										
										
											2019-06-17 19:47:07 +01:00
										 |  |  | example.org { | 
					
						
							|  |  |  |     file db.example.org | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2019-07-04 06:56:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Also See
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | See the *loadbalance* plugin if you need simple record shuffling. |