userguide.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
  3. "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
  4. <!ENTITY mdash "&#x2014;" >
  5. ]>
  6. <book>
  7. <bookinfo>
  8. <title>BIND 10 User Guide</title>
  9. <subtitle>Administrator Reference for BIND 10</subtitle>
  10. <copyright>
  11. <year>2010</year><holder>Internet Systems Consortium, Inc.</holder>
  12. </copyright>
  13. <!-- <abstract><para>This is the definitive reference and user's guide for BIND 10</para></abstract> -->
  14. </bookinfo>
  15. <chapter id="intro">
  16. <title>Introduction</title>
  17. <para>
  18. BIND is the popular implementation of a DNS server, developer
  19. interfaces, and DNS tools.
  20. BIND 10 is a rewrite, using C++ and Python, to provide
  21. modular components for serving and maintaining DNS.
  22. </para>
  23. <note><para>BIND 10, at this time, does not provide an recursive
  24. DNS server. It does provide a EDNS0- and DNSSEC-capable
  25. authoritative DNS server.</para></note>
  26. <para>
  27. BIND 10 provides separate executables for different tasks.
  28. The standard components include:
  29. <itemizedlist>
  30. <listitem>
  31. <simpara><command>msgq</command> &mdash; message bus</simpara>
  32. </listitem>
  33. <listitem>
  34. <simpara><command>b10-auth</command> &mdash; authoritative DNS server</simpara>
  35. </listitem>
  36. <listitem>
  37. <simpara><command>b10-cfgmgr</command> &mdash; configuration manager</simpara>
  38. </listitem>
  39. <listitem>
  40. <simpara><command>b10-cmdctl</command> <!-- TODO --></simpara>
  41. </listitem>
  42. <listitem>
  43. <simpara><command>b10-xfrin</command> <!-- TODO --></simpara>
  44. </listitem>
  45. </itemizedlist>
  46. </para>
  47. <para>
  48. The user tools include:
  49. <itemizedlist>
  50. <listitem>
  51. <simpara><command>bindctl</command> &mdash; interactive administration interface</simpara>
  52. </listitem>
  53. <listitem>
  54. <simpara><command>bind10</command> &mdash; master process for BIND 10</simpara>
  55. </listitem>
  56. </itemizedlist>
  57. </para>
  58. <para>
  59. The tools and modules are covered in full detail in this users guide.
  60. <!-- TODO point to these -->
  61. In addition, manual pages are also provided in the default installation.
  62. </para>
  63. <!--
  64. bin/
  65. bindctl*
  66. host*
  67. lib/
  68. libauth
  69. libdns
  70. libexceptions
  71. python3.1/site-packages/isc/{cc,config}
  72. sbin/
  73. bind10
  74. share/
  75. share/bind10/ <
  76. auth.spec
  77. b10-cmdctl.pem
  78. bob.spec
  79. passwd.csv
  80. man/
  81. var/
  82. bind10/b10-config.db
  83. -->
  84. <para>
  85. BIND 10 also provides libraries and programmer interfaces
  86. for C++ and Python for the message bus, configuration backend,
  87. and, of course, DNS. These include detailed developer
  88. documentation and code examples.
  89. <!-- TODO point to this -->
  90. </para>
  91. </chapter>
  92. <chapter id="quickstart">
  93. <title>Quickstart</title>
  94. <para>
  95. This chapter just covers the standard steps for installing
  96. and deploying BIND 10 as an authoritative nameserver using
  97. its defaults. For full customizations and details, see
  98. the respective chapters.
  99. </para>
  100. </chapter>
  101. <chapter id="install">
  102. <title>Installation</title>
  103. <para>
  104. BIND 10 is open source software written in C++ and Python.
  105. It is freely available in source code form from ISC via
  106. the Subversion code revision control system or as a downloadable
  107. tar file. It may also be available in pre-compiled ready-to-use
  108. packages from operating system vendors.
  109. </para>
  110. <sect1>
  111. <title>Download Tar File</title>
  112. <para>The BIND 10 release and development snapshots
  113. are available as tarball downloads.
  114. </para>
  115. <!-- TODO -->
  116. </sect1>
  117. <sect1>
  118. <title>Retrieve from Subversion</title>
  119. <para>
  120. The latest development code, including temporary experiments
  121. and un-reviewed code, is available via the BIND 10 code revision
  122. control system. This is powered by Subversion and all the BIND 10
  123. development is public.
  124. The leading development is done in the <quote>trunk</quote>
  125. and the first year prototype containing reviewed code is in
  126. <filename>branches/Y1</filename>.
  127. </para>
  128. <para>
  129. The code can be checked out from <filename>svn://bind10.isc.org/svn/bind10</filename>; for example to check out the trunk:
  130. <screen>$ <userinput>svn co svn://bind10.isc.org/svn/bind10/trunk</userinput></screen>
  131. </para>
  132. <sect2>
  133. <title>Generate configuration files</title>
  134. <para>
  135. When checking out the code from
  136. the code version control system, it doesn't include the
  137. generated configure script, Makefile.in files, nor the
  138. related configure files.
  139. They can be created by running <command>autoreconf</command>
  140. with the <command>--install</command> switch.
  141. This will run <command>autoconf</command>, <command>aclocal</command>,
  142. <command>libtoolize</command>, <command>autoheader</command>,
  143. <command>automake</command>, and related commands &mdash;
  144. and provide needed build files.
  145. </para>
  146. <para>
  147. This requires <command>autoconf</command> version 2.59 or newer
  148. and <command>automake</command> version 1.11 or better (for
  149. working Python 3.1 tests).
  150. </para>
  151. <note><para>
  152. Some operating systems do not provide these in their
  153. default installation nor standard packages collections.
  154. You may need to install them separately.
  155. </para></note>
  156. </sect2>
  157. </sect1>
  158. <sect1>
  159. <title>Required Software</title>
  160. <para>
  161. BIND 10 requires Python 3.1, SQLite 3.3.9 or newer,
  162. and the Python _sqlite3.so module.
  163. <!-- TODO: list where to get these from -->
  164. <!-- TODO: this will change ... -->
  165. </para>
  166. <note><para>
  167. Some operating systems do not provide these in their
  168. default installation nor standard packages collections.
  169. You may need to install them separately.
  170. </para></note>
  171. <para>
  172. Building BIND 10 also requires a C++ compiler and
  173. standard development headers.
  174. BIND 10 builds have been tested with GCC g++ 3.4.3, 4.1.2,
  175. 4.2.1, 4.3.2, and 4.4.1.
  176. <!-- TODO: what about boost? ship with it or not? -->
  177. </para>
  178. </sect1>
  179. <sect1>
  180. <title>Supported Platforms</title>
  181. <para>
  182. BIND 10 builds have been tested on Debian GNU/Linux 5,
  183. Ubuntu 9.10, NetBSD 5, Solaris 10, FreeBSD 7, and CentOS
  184. Linux 5.3.
  185. It has been tested on Sparc, i386, and amd64 hardware
  186. platforms.
  187. It is planned for BIND 10 to build, install and run on
  188. Windows and standard Unix-type platforms.
  189. </para>
  190. </sect1>
  191. <sect1>
  192. <title>Build and install</title>
  193. <para>
  194. BIND 10 uses the GNU Build System to discover build environment
  195. details.
  196. To generate the makefiles using the defaults, simply run:
  197. <screen>$ <userinput>./configure</userinput></screen>
  198. </para>
  199. <para>
  200. Run <command>./configure</command> with the <command>--help</command>
  201. switch to view the different options. The commonly-used option
  202. is <command>--prefix</command> to define the installation
  203. location (the default is <filename>/usr/local/</filename>).
  204. <!-- TODO: gtest, lcov -->
  205. </para>
  206. <para>
  207. Then to build the executables from the C++ code, run:
  208. <screen>$ <userinput>make</userinput></screen>
  209. </para>
  210. <para>
  211. To install the BIND 10 executables, support files,
  212. and documentation, run:
  213. <screen>$ <userinput>make install</userinput></screen>
  214. </para>
  215. <note><para>The install step may require superuser
  216. privileges.</para></note>
  217. <!-- TODO: tests -->
  218. </sect1>
  219. <sect1>
  220. <title>Install Hierarchy</title>
  221. <para>
  222. The following is the layout of the complete BIND 10 installation:
  223. <itemizedlist>
  224. <listitem>
  225. <simpara><filename>bin/</filename> &mdash; general tools and
  226. diagnostic clients.</simpara>
  227. </listitem>
  228. <listitem>
  229. <simpara><filename>lib/</filename> &mdash; libraries and
  230. python modules.</simpara>
  231. </listitem>
  232. <listitem>
  233. <simpara><filename>libexec/bind10/</filename> &mdash; executables that
  234. a user wouldn't normally run directly. Nor would they be used
  235. independently. These are the BIND 10 modules which are daemons
  236. started by the <command>bind10</command> tool.
  237. </simpara>
  238. </listitem>
  239. <listitem>
  240. <simpara><filename>sbin/</filename> &mdash; commands used by
  241. the system administrator.
  242. </simpara>
  243. </listitem>
  244. <listitem>
  245. <simpara><filename>share/bind10/</filename> &mdash; configuration
  246. specifications.
  247. </simpara>
  248. </listitem>
  249. <listitem>
  250. <simpara><filename>share/man/</filename> &mdash; manual pages (online
  251. documentation).
  252. </simpara>
  253. </listitem>
  254. <listitem>
  255. <simpara><filename>var/bind10/</filename> &mdash; configuration and
  256. data source databases.
  257. <!-- TODO: move the sqlite3 database there -->
  258. </simpara>
  259. </listitem>
  260. </itemizedlist>
  261. </para>
  262. </sect1>
  263. </chapter>
  264. <chapter id="bind10">
  265. <title>Starting BIND10 with bind10</title>
  266. <para>
  267. BIND 10 provides the <command>bind10</command> command which
  268. starts up the required daemons to provide the message
  269. communication bus, configurations, <!-- TODO: security, -->
  270. and the DNS server(s).
  271. Also known as BoB or the Boss of BIND, <command>bind10</command>
  272. will also restart processes that exit.
  273. </para>
  274. <para>
  275. After starting the <command>msgq</command> communications channel,
  276. <command>bind10</command> connects to it,
  277. runs the configuration manager, and reads its own configuration.
  278. Then it starts the other modules.
  279. </para>
  280. <para>
  281. The <command>msgq</command> and <command>b10-cfgmgr</command>
  282. services make up the core. The <command>msgq</command> daemon
  283. provides the communication channel between every part of the system.
  284. And <command>b10-cfgmgr</command> is always needed by every
  285. module, if only to send information about themselves somewhere,
  286. but more importantly to ask about their own settings, and
  287. about other modules.
  288. </para>
  289. <sect1 id="cmdctl">
  290. <title>Remote control daemon</title>
  291. <para>
  292. <command>b10-cmdctl</command> is the gateway between
  293. administrators and the whole system; when it starts it firsts
  294. asks <command>b10-cfgmgr</command> about what modules are
  295. running and what their configuration is (over the
  296. <command>msgq</command> channel), then it will start listening
  297. on HTTPS for clients (i.e. <command>bindctl</command>).
  298. </para>
  299. <!-- TODO: replace /usr/local -->
  300. <!-- TODO: permissions -->
  301. <para><filename>/usr/local/share/bind10/cmdctl-keyfile.pem</filename>
  302. contains the Private key, such as a RSA PRIVATE KEY.
  303. </para>
  304. <para><filename>/usr/local/share/bind10/cmdctl-certfile.pem</filename>
  305. contains the Certificate.
  306. </para>
  307. <para>
  308. This could be a self-signed certificate or purchased from a
  309. certification authority.
  310. </para>
  311. </sect1>
  312. <!--
  313. <para>
  314. (08:20:56) shane: It is in theory possible to run without cmdctl.
  315. (08:21:02) shane: I think we discussed this.
  316. </para>
  317. -->
  318. <sect1 id="cfgmgr">
  319. <title>Configuration manager</title>
  320. <para>
  321. The configuration manager, <command>b10-cfgmgr</command>
  322. handles all BIND 10 system configuration. It provides
  323. persistent storage for configuration, and notifies running
  324. modules of configuration changes. The administrator
  325. doesn't use it directly, but uses a tool like
  326. <command>bindctl</command> (or other GUI or web interface)
  327. to communicate with the configuration manager.
  328. </para>
  329. <!--
  330. <para>
  331. The stored configuration file is ...
  332. TODO
  333. </para>
  334. -->
  335. </sect1>
  336. <!--
  337. TODO
  338. <para>
  339. bindctl talks to b10-cmdctl
  340. </para>
  341. cfgmanager can send all specifications (and all current settings)
  342. to bindctl (through cmdctl in fact), so an admin can simply run bindctl,
  343. do config show, and it shows all modules; config show >module> shows all
  344. options for that module
  345. -->
  346. <para>
  347. To start the BIND 10 service, run <command>bind10</command>.
  348. Run it with the <command>--verbose</command> switch to
  349. get additional debugging or diagnostic output.
  350. </para>
  351. <!-- TODO: note it doesn't go into background -->
  352. </chapter>
  353. <chapter id="authserver">
  354. <title>Authoritative Server</title>
  355. <para>
  356. </para>
  357. <sect1>
  358. <title>Server Configurations</title>
  359. <para>
  360. </para>
  361. </sect1>
  362. <sect1>
  363. <title>Data Source Backends</title>
  364. <para>
  365. </para>
  366. </sect1>
  367. <sect1>
  368. <title>Loading Master Zones Files</title>
  369. <para>
  370. </para>
  371. </sect1>
  372. <sect1>
  373. <title>Troubleshooting</title>
  374. <para>
  375. </para>
  376. </sect1>
  377. </chapter>
  378. <!-- TODO: how to help: run unit tests, join lists, review trac tickets -->
  379. <!-- <index> <title>Index</title> </index> -->
  380. </book>