ProBIND Users Manual

ProBIND home page

Document author: Alexei Roudnev
Date:
22 Mart 2003
Version:
2.0
Status:
Release

This is the manual for ProBIND, release 2.0. ProBIND is an application for managing DNS servers. The present release is probably not suitable for users who are not knowledgeable about DNS in general. If you want to learn about DNS in general, or BIND in particular, then I highly recommend DNS and BIND.

Index

The following sections describe each page of the ProBIND application, sorted by their place in the menu bar across the top of the page. This bar is always visible. The start page is identical to the "Browse zones" page.

About ProBIND

ProBIND is a web application for administrating one or more BIND servers. It is intended for small to medium sized ISPs, but there is no reason why it couldn't be used wherever many zones must be managed across a set of master and slave servers. Version 2.0 was adapted for the middle size corporative network.

ProBIND is written in PHP4, and uses a MySQL database for storing all information about the DNS servers managed. The database contents are pushed onto the DNS servers only when a ProBIND user explicitly requests it (it is also possible to execute the update from a cron job). The update is done by generating configuration- and zone files based on the information in the database. The files are then uploaded to the DNS servers.

The strengths of ProBIND are:

Adding a zone

This page has two sections, separated by a horizontal bar. You create either a new master zone or a slave zone, by filling out the fields and clicking the "Add" button in the appropriate section. The domain name you enter is checked for basic syntax, i.e. it must contain at least one dot, and it may not already exist in the database.

A master domain is one that has been delegated to the DNS servers you manage with ProBIND, by an outside domain registry, e.g. NSI. When you create a master zone, the zone is initialized with a copy of the records in the TEMPLATE pseudo-zone.

A slave zone is one that is managed elsewhere, but which your server is a backup for. The zone data will be fetched from the master server you specify. You can specify either an IP number or a hostname as the master server, but if you specify a hostname, that hostname must be resolvable.

Each zone can contain options, which will be added into the zone description in the named.conf file on master servers (options are not applied to the zones on slave servers). By default, options are inherited from the TEMPLATE zone and can be edited in 'details' section.

Deleting a zone

Enter the full name of the zone you wish to delete, and click on the "Delete" button. You will be prompted for a confirmation before the deletion takes place.

If you would rather point and click to identify the zone to be deleted, then locate the zone on the Browse zones page, and click on the "Delete" button on the zone page.

NB: There is no "undelete" feature in ProBIND. So watch your clicks. When you delete a zone, you will be requested to confirm operation one more time, but after it, zone can not be 'undeleted'.

Browsing zones

This is the main page in ProBIND. The area below the main menu bar is split into two frames. The left frame is used to search and list zones from the database. The right frame is used to display the contents of individual zones selected in the left frame.

In the left frame, you select what to search in: All zones, all master zones, all slave zones, or the annotations on the zones. This is combined with the text in the "For" field, to extract a list of matching zones from the database. The search is of the case-insensitive substring variety. Some examples:

The display in the right frame consists of three distinct types of information: Zone parameters, explicit resource records and automatically generated (implicit) resource records.

The zone parameter block on top begins with the name of the zone being displayed, and contain two buttons: "Details", and "Update". In between there are 6 fields, 5 of which can be modified:

For a discussion of these parameters, and recommendations for their values, see the RIPE recommendations.

The buttons have the following uses:

Next section begins with "Add RR" button, and can be in one of two forms - "view" form when it shows the whole zone and allow to edit single RR only, and "edit" form when all records can be edited on this page. The reason is simple - "edit" mode does not allow to use "find on the page" feature of the browthers, and is slow in case of a very long (thousand records) zone. This section will contain a set of buttons:

After the button row follows the explicit resource records. These are just the records which have been entered in the database, either manually, or imported. There will always be an SOA record, which cannot be deleted, and where you can only change the TTL (Time To Live) value. NB: If you change the TTL for the SOA record, you will also change the TTL for all implicit resource records, and for all those explicit resource records that had the same TTL as the SOA record. The TTL in the SOA record also becomes the default TTL for new resource records.

There is an "Upd" (for update) and "Del" (for delete) button for each resource record. These buttons updates the RR in the database, or deletes it, respectively. NB: The "Upd" button affects all resource record changed on the screen. When you change a record, the button for it changes it's color, but you can continue with other records and press any of this butons in the very end. So if you want to update a lot of records, you have to change this records, and then press any "Upd" button. In "view" mode, you have to press "edit" button next to the record to edit this record, or you can press "Edit zone (total)" button and edit as much records as you need.

Button "Delete zone" in the end of edit zone send you to the "Delete zone" page where you will be requested to confirm deletion once more time.

The last part of the zone display is the implicit resource records. These records do not exist in the database, and you cannot manipulate them directly. They will exist in the zone files uploaded to the DNS servers. For most zones, this will just be the NS records implied by the DNS server descriptions you enter on the DNS servers page. For in-addr.arpa zones, PTR records implied by A records in the database will also appear.

Browsing records

On this page you can browse the resource records in the database. NB: you can only browse explicit records, not the implicit ones you can see in the bottom of the zone display when you browse zones.

This page consists of 5 entry fields and a "Search" button. You can leave any field blank, in which case it wont influence the search. If you fill out more than one field, only resource records which match all your criteria will be returned. The fields are:

In all fields, except the type field, you can specify a substring match by applying the '%' as a wildcard. E.g., if you want to find all 'www' records in .net domains, you would enter '%.net' in the Zone field, and 'www' in the Domain field.

When you click on the "Search" button, you get a page back with the search form at the top, in case you want to refine your search criteria. Below this, you get a list of the records which match your search criteria. If more than 50 records were found, use the Next and Previous buttons to navigate through the list.

Miscellaneous tools

When you click on "Misc. tools" in the main menu bar, you get a second menu bar with 7 choices:

Statistics

The statistics display is the default display of the "tools" pages. It contains a count of all zones and (explicit) resource records in the database, and a summary of the DNS server descriptions.

If the database contains updates which have not yet been uploaded to the DNS servers, this page will also have a list of zones which have been added, updated or deleted since the last time the DNS servers were brought up to date.

NB: Sometimes you may see that one or more in-addr.arpa zones in the list of changed zones, even if no one have touched them. The explanation is that changes to other zones have touched one or more A records, with IP numbers which correspond to those in-addr.arpa zones. This insures that changes to A records will also result in changes to the automatically generated PTR records on the DNS servers.

External consistency checks

There are two different kinds of external consistency checks: One that finds all lame delegations, and one that finds all delegations which are not quite lame, but which do not quite match the NS servers known to the database either.

Both types of consistency checks require the hostname or IP number of a DNS server NOT managed by this ProBIND installation. The whole idea of having an external consistency check is to check that you are in agreement with the outside world, and you can only do that by asking a name server controlled by someone else.

The name server field will contain a default external DNS server. This default value is controlled by the DEFAULT EXTERNAL DNS value in the settings.

Internal consistency checks

Currently, there are four kinds of internal consistency checks. Actually, it would be more accurate to call them checks for well-formedness of the database. Except for the "Find resource records with invalid data" check, none of the records found by these checks are necessarily errors.

Annotated domain list

This page can be very long. It is a list of all domains contained in the database, as well as any existing annotations for those domains.

IP range display

This page is utterly useless if you have no reverse (in-addr.arpa) zones in your database. It gives you a condensed view of which IP numbers have been allocated.

Bulk update

Sometimes, the mechanism for deciding which zones needs to be updated on the DNS servers is just not good enough. E.g. if you have added a new DNS server, if one of your DNS servers appears to have missed some updates, or if you change the RNAME setting. In those situations, you want to make sure that all your DNS servers get a complete upload of everything in the ProBIND database.

This is what the bulk update feature is for. When you perform a bulk update, all data in the database are marked updated. This makes sure that the next push updates operation will upload the entire database to the DNS servers.

NB: You must confirm this operation by clicking on an appropriately scary-looking button, since this can make the next DNS server update a very slow operation.

Settings

On this page you control 4 ProBIND parameters which don't really fit anywhere else. This is also where you break hanging database locks. The parameters are:

Sometimes you will see an additional field, below the "Update settings" button. This will only happen when someone has started an operation that locks parts of the database, usually to make sure that the uploads to the DNS servers get a proper snapshot of the database. If this operation hangs, or does not complete for one reason or another, the database lock is not released. Before you use the provided button to break the lock, please wait a few minutes and reload this page.

DNS servers

In order to function properly, ProBIND must have some information about the DNS servers it is supposed to manage. This is where you supply that information. The page consists of a list of DNS servers already defined, and an "Add another server" button. Clicking on the button (or on one of the existing servers) takes you to a detailed DNS server description, which must be correctly filled out:

Push updates

The final operation in ProBIND is the step where the contents of the database is used top generate (update) configuration files for the name servers (this are named.conf, zone files and other files found in the template directory), push this files to the server, and reconfig the server.

"push" window contain checkboxes for all 3 operations:

Next raw contain main button, which name is "START UPDATE" or "COMPLETE UPDATE" (if files was generated and pushed already), and table of the servers with the columns:

If some servers has a yellow status, they need to be reconfigured. To reconfigure servers, just click on "START UPDATE" button. Window below will show you update process, with a reference to the log file which contain output of all scripts which runned during this process. If two step (default) update is configured, system will show you 'yellow' status 'need reconfig' once again, and will check out 'Reconfig server' checkbox; just click on the 'COMPLETE UPDATE' once again.

It is a good idea to verify logs on the window below (just click on the 'LOG' message) before doing next step of reconfiguration.

In case of error, server will show you red 'error' message, and future update will be blocked; you need to determine (reading 'logs' and looking into the named.conf file) the reason of the error and correct it, then repeat 'PUSH' operation again. By default, updates to such server are blocked (see checkbox) and if you just repeat "PUSH" (for example, error was caused by the network problem and you want to repeat an attempt without any changes in the data base), you need to uncheck this checkbox to apply update to the server.

You have "Misc. tools -> Bulk update" button to make a full update of all files, it takes a very long time.

It is possible that update was cancelled by the web server, or freeze forever, or die by some reason. In this case, operation will be locked until you go to the "Misc. tools" and remove this lock manually. Be careful doing this, it is "last resort" tool.

The mechanics of the upload process is controlled by the DNS server descriptions.

NB: This operation can take a very long time.

Import

You probably already manage a lot of zones if you are looking at this program. This means that you are also not interested in manually entering all your existing zones through the web interface. This is where the import script enters the picture.

To import your existing configuration, copy named.conf and all of your zone files into a directory on your ProBIND host.

Then execute this command (assuming that you installed ProBIND in /www/htdocs/probind and all named.conf stuff in /tmp/namedb):

cd /www/htdocs/probind; etc/import -v /tmp/namedb/named.conf | tee import.log

Be sure that you enter full name of the named.conf file - php script do not understand relative names.

Review the import log and the database carefully. You do not want to update your BIND servers until your are confident that the database accurately represents your DNS data.

If you want to import file names from the zones, add '-F' option. It is not recommended because if you had a subdirectories, then must be created in the HOSTS/server_name directory before you generate a files, and pusth script must support this mode.

If you want to replace existing domains by the new ones, use '-d' option - if zone already exists, it will be deleted first.

Import understand zone options and can create 'option' field in the imported zones; verify this options before pushing any updates to the server. By default, zones must have option

 allow-transfer { $ACL };
which allows all secondary servers to 'xfer' zone. In some cases, you should prefer to change TEMPLATE options BEFORE any 'import' (for example, if you do not want to maintain 'allow-transfer{}' options in the zones).

If you have a lot of comments in your zone files, run import with the -a flag too (i.e. import -av named.conf). That way the unaltered text of a zone file is put into the ProBIND database as a comment text for the zone.

If you have a very complex named configuration, you need to configure named.conf options. Generally you have a two methods to do it:

Always verify generated files (by clicking on them in 'Update' menu).

import does not supports $INCLUDE operators in zone files.
if zone name contains '/', you must edit file name after zone has been imported to remove '/' from it.

License

ProBIND version 2 was developed by Alexei Roudnev, , as part of our effort to set up convenient management for the internal and external DNS. See http://www.exigengroup.com/ to get more information about our company. The copyright status of the version 2 is the same as for the version 1.

ProBIND version 1 was developed by Flemming S. Johansen <fjohansen@proventum.net> as part of his duties as resident DNS manager at Proventum. The software is copyrighted © 2000 by Proventum.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.