DNS Boss Documentation
Table Of Contents
_________________
15 MINUTE CHEAT SHEET
README
ABOUT DNS BOSS
ADD SPECIAL BIND OPTIONS TO ETC NAMED CONF
ALWAYS COPY HOSTS DOMAIN
ALWAYS COPY HOSTS FILE
APPEND DB DOMAIN
APPEND NAMED BOOT
APPEND SPECIAL BIND CONFIGURATIONS TO ETC NAMED CONF
ARCHIVE THE CURRENT STATE OF THE DNS BOSS SYSTEM
BIND VERSION 8 X AND 4 X
BIND VERSIONS
COMMON ERRORS
CONVERT PRE-EXISTING DNS DATA INTO DNSBOSS FORMAT DATA
CONVERT TO CACHING ONLY
CONVERT TO SECONDARY
EDIT HOSTS
GENERIC EDITOR
HOW TO DO A CNAME
HOW TO DO COMMAND LINE UPDATES WITHOUT THE GUI
HOW TO GET STARTED
HOW TO SETUP A DNS SECONDARY
HOW TO USE WEB USER INTERFACE
IP MANAGEMENT
JAVA API
LICENSE
LOAD DEFAULT DNS DOMAIN
LOAD DNS DOMAIN
NEVER COPY HOSTS FILE
NO DNS
OPEN AND EXTENSIBLE
PLATFORMS
REFRESH RETRY EXPIRE TTL
REMOTELY MAINTAIN ANOTHER MACHINE THAT HAS BEEN INSTALLED WITH DNS BOSS
REMOVE ALL DNS DATABASES BUT NOT CONFIGURATION DATA
REMOVE DNS DOMAIN COMPLETELY
REPLICATION
REVERT TO THE FOLLOWING AVAILABLE DNS BOSS SYSTEM ARCHIVE
ROLL BACK TO THE PREVIOUS STATE OF THE HOSTS FILE FOR THIS DOMAIN
SAVE SETTINGS
SET DEFAULT DNS NAME AND IP FOR NSLOOKUP SERVER
SET THE PATH TO THE NAMED EXECUTABLE
SKIP ALL DNS RECORDS FOR THIS HOST
SKIP DNS RECORD
SKIP MX
SPINNING RED BALL
SUGGESTED SOLARIS CONFIGURATION FOR LARGE SITES
UPDATE ALL DOMAINS
UPDATE THIS DOMAIN
USE CUSTOM DB CACHE FILE
USE STANDARD DB CACHE FILE
USER INTERFACES
15 MINUTE CHEAT SHEET
DNS BOSS CHEAT SHEET
How to get your DNS primary up in about 15 minutes
The following is a condensed cheat sheet/cook
book showing how to build a DNS primary with DNS Boss
in about the shortest amount of time possible. In most
cases, you should be able to get your DNS primary up
in about 15 minutes.
* It is suggested that you try this out on a
non-production machine first, then do it on a
production machine.
Installation for Solaris
________________________
Download as root and install it:
# netscape http://www.dnsboss.com/register.shtml &
# uncompress *.Z
# tar xvf *.tar
# ls
DNSBoss
# pkgadd -d .
y
y
Installation for Linux
______________________
# netscape http://www.dnsboss.com/register.shtml &
# gunzip *.gz
# tar xvf *.tar
# ./install.sh
To run it for Solaris or Linux
______________________________
As root, run it:
# /opt/DNSBoss/bin/dnsboss
Setup your DNS domain
_____________________
* Preparation.
For now, you can move the resolve.conf file out of
the way:
# mv /etc/resolv.conf /etc/resolv.conf-
# vi /etc/nsswitch.conf
hosts: files dns
* Add your site info into DNS Boss GUI:
On the main GUI, put in all of the site info:
Enter DNS domain (Example:
bobspizza.com).
Enter primary name (this machine) (Example:
ns1.bobspizza.com).
Enter email contact (Example:
janedoe.bobspizza.com).
Leave refresh, retry, expire, and minimum TTL at
their defaults.
Enter mail exchanger 1-4, (Example:
mail.bobspizza.com).
delete unused mail
exchangers
Delete secondary 1-4 for now.
Select: "Save settings" button.
Select: "Edit hosts", and add some IP's and
i unqualified host names
like the following example:
202.190.50.59 casper
Select: "Update this domain" button.
* Verify that it worked.
# nslookup casper.bobspizza.com.
Optional crontab entry to update DNS every 30 minutes:
______________________________________________________
# csh
# setenv EDITOR /usr/ucb/vi
# crontab -e
1,30 * * * * /opt/DNSBoss/bin/dnsboss_commandline > /dev/null 2>&1
You are done.
________________________________________________________________
README
DNS Boss README
Description:
____________
DNS Boss is a GUI tool for installing and maintaining
DNS on the Solaris SPARC, Solaris x86, or Linux platforms.
With DNS Boss you can take care of your DNS needs
by creating either a DNS Primary, a DNS Secondary, or
a DNS Caching-only server. DNS Boss is a huge time
saving tool, it is easy to install, and it is very
easy to use! To get the DNS for your site up, you
do not need to do anything other than install your
machine, and then install and run DNS Boss. After
you run DNS Boss on the machine running your DNS
server, your DNS data will becomes live, and other
DNS clients can start getting their DNS requests
answered from your new DNS server. Once you create
your DNS Primary with DNS Boss, you can easily build
DNS Secondaries and Caching-only servers if you want,
by installing and running the same DNS Boss software
on those machines. DNS Boss has a standard "X" GUI,
a Web GUI, a command-line interface, and an open
Java API if you wish to do automated report writting,
or if you wish to do custom integration. DNS Boss
has the capability to support multiple users
including limiting access to certain DNS domains and
locking mechanisms.
30 day free trial:
__________________
DNS Boss is distributed with a 30 day free trial for
the DNS Boss software running on your DNS Primary.
31 days after installation, a license to use the
software must be purchased, or the software will not
allow you to do updates. The same DNS Boss software
can also be used to create your DNS Secondaries, or
DNS Caching-only servers for free. To purchase a
license for your DNS Primary, see
http://www.dnsboss.com, or send email to
support@dnsboss.com.
Solaris installation example:
_____________________________
# mkdir /export/home1/tmp_dir
# cp DNSBoss_SPARC_Solaris.tar.Z /export/home1/tmp_dir
# cd /export/home1/tmp_dir
# /bin/uncompress DNSBoss_SPARC_Solaris.tar.Z
# /bin/tar xvf DNSBoss_SPARC_Solaris.tar
# /usr/sbin/pkgadd -d .
# cd ../ ; rm -rf /export/home1/tmp_dir
Linux Installation example:
___________________________
# mkdir /home/dnsboss
# mv DNSBoss_Linux.tar.Z /home/dnsboss
# cd /home/dnsboss
# /bin/gunzip DNSBoss_Linux.tar.gz
# /bin/tar xvf DNSBoss_Linux.tar
# ./install.sh
To run it:
__________
Solaris, or Linux:
__________________
This is the normal "X" GUI.
# /opt/DNSBoss/bin/dnsboss
To convert your pre-existing DNS data:
______________________________________
# cp /etc/named.conf /etc/named.conf-orig
or
# cp /etc/named.boot /etc/named.boot-orig
Bring up the "X" GUI and set the BIND version to
your version of BIND.
# /opt/DNSBoss/bin/dnsboss
Then select under the "Advanced" menu:
"Convert pre-existing DNS data into DNS Boss format DNS data"
Then select the button: "Load DNS domain" to
navigate between DNS domains. Select "Update
all domains" once. Select "Edit hosts" to add
hosts, then you will need to select
"Update this domain" every time a change is made.
Example of how to use other BIND version:
_________________________________________
Go to the Advanced menu, and select:
Set the path to the named executable
Other command line options:
___________________________
Shows all command line options.
# /opt/DNSBoss/bin/dnsboss_commandline -help
Builds DNS for all DNS domains and restarts BIND.
# /opt/DNSBoss/bin/dnsboss_commandline
Builds DNS for all DNS domains and restarts BIND.
# /opt/DNSBoss/bin/dnsboss_commandline -autobuild_all_domains
Builds DNS for one DNS domain and restarts BIND.
# /opt/DNSBoss/bin/dnsboss_commandline -autobuild your_domain.com
Builds DNS for all DNS domains but do not restart BIND.
# /opt/DNSBoss/bin/dnsboss_commandline -autobuild_no_restart your_domain.com
Add a DNS domain.
# /opt/DNSBoss/bin/dnsboss_commandline -add_domain your_domain.com
Delete a DNS domain.
# /opt/DNSBoss/bin/dnsboss_commandline -delete_domain your_domain.com
Convert a pre-existing domain. Requires existence of /etc/named.conf-orig or
/etc/named.boot-orig containing your pre-existing DNS data.
# /opt/DNSBoss/bin/dnsboss_commandline -converter
Add an IP and a name to a DNS domain.
# /opt/DNSBoss/bin/dnsboss_commandline -add_ip_to_domain your_domain.com subnet ip name
Add a host to the next available IP for DNS domain on subnet.
# /opt/DNSBoss/bin/dnsboss_commandline -add_host_to_next_available_ip name your_domain.com subnet true
Remove an entry.
# /opt/DNSBoss/bin/dnsboss_commandline -remove_host name your_domain.com
Check if an IP exists in any DNS domain.
# /opt/DNSBoss/bin/dnsboss_commandline -ip_exists ip
Check if a name exists in DNS domain.
# /opt/DNSBoss/bin/dnsboss_commandline -name_exists_in_domain name yourdomain.com
List all names in a DNS domain.
# /opt/DNSBoss/bin/dnsboss_commandline -list_names_in_domain yourdomain.com
List all IP's in a DNS domain.
# /opt/DNSBoss/bin/dnsboss_commandline -list_ips_in_domain yourdomain.com
List all subnets in a DNS domain.
# /opt/DNSBoss/bin/dnsboss_commandline -list_subnets_in_domain yourdomain.com
List duplicate names in a DNS domain.
# /opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_names_in_domain yourdomain.com
List duplicate CNAME's in a DNS domain.
# /opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_cnames_in_domain yourdomain.com
List all IP's in all DNS domains.
# /opt/DNSBoss/bin/dnsboss_commandline -list_ips_in_all_domains
List all subnets in all DNS domains.
# /opt/DNSBoss/bin/dnsboss_commandline -list_subnets_in_all_domains
List duplicate IP's in all DNS domains.
# /opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_ips_in_all_domains
List duplicate IP's, names, and CNAME's in all DNS domains.
# /opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_ips_names_and_cnames_in_all_domains
List percent fill of IP address space in all DNS domains.
# /opt/DNSBoss/bin/dnsboss_commandline -list_percent_fill_of_ip_address_space_in_all_domains
List the total unique DNS names to calculate license pricing.
# /opt/DNSBoss/bin/dnsboss_commandline -license
Lock the application so nobody else can do updates.
Available only on Unix OS's.
# /opt/DNSBoss/bin/lockdnboss
To uninstall for Solaris or Linux:
__________________________________
# /opt/DNSBoss/bin/uninstall_dnsboss
To start Web UI on Solaris or Linux:
____________________________________
# /opt/DNSBoss/bin/S99dnsbossweb start
Allow user jane_doe access to all DNS domains.
# vi /opt/DNSBoss/etc/password.txt
jane_doe:secret123:*
Make sure the license agreement is accepted.
# vi /opt/DNSBoss/etc/server.properties
la=true
Start a Web browser and point it to port 8080 of
the DNS primary running DNS Boss. Make sure
to use https, and not http when typing in
the URL. Here is an example:
# netscape https://192.168.15.10:8080
To navigate between DNS domains, just click
the 'Load DNS domain' button.
Unix crontab example for automated 'hands off' DNS builds:
__________________________________________________________
Crontab Example for Solaris to update DNS every 30 minutes:
godzilla# setenv EDITOR /usr/ucb/vi
godzilla# crontab -e
1,30 * * * * /opt/DNSBoss/bin/dnsboss_commandline > /dev/null 2>&1
Open Java API for custom DNS automation:
________________________________________
# cd /opt/DNSBoss/lib/tools/java_api
# ./api_demo
Website/documentation:
______________________
http://www.dnsboss.com
Support, bugs, requests for permanent licenses:
_______________________________________________
support@dnsboss.com
________________________________________________________________
ABOUT DNS BOSS
About DNS Boss
DNS Boss Version 2.4.
Copyright 1996-2004 DNS Boss Inc.
All rights reserved.
http://www.dnsboss.com
________________________________________________________________
ADD SPECIAL BIND OPTIONS TO ETC NAMED CONF
Help on: Add special BIND 'options' to
/etc/named.conf
It is not generally necessary to add anything in
this window. DNS Boss should create everything that
is need for most cases. However, if you want to
configure some of the more sophisticated "options" of
DNS BIND, the window that comes up when you select:
"Add special BIND 'options' to /etc/named.conf" is
where you do it. For example if there was a need to
to change the dump-file, statistics-file, or pid-file
defaults, they could be changed by uncommenting the
following lines:
dump-file "/var/opt/DNSBoss/statistics/named_dump.db";
statistics-file "/var/opt/DNSBoss/statistics/named.stats";
pid-file "/var/opt/DNSBoss/statistics/server1.pid";
If you are not certain about what you are
adding in the 'options' section, then it is suggested
to not add anything. Your DNS should work fine
without adding any of these sophisticated "options".
________________________________________________________________
ALWAYS COPY HOSTS DOMAIN
Always copy hosts file from this domain
Normally DNS Boss keeps a separate hosts file for
each domain.
In some cases there may be a need to copy all
of the hosts from one DNS domain and always put them
into another DNS domain. To do this, just go to the
Advanced menu, and select: "Always copy hosts file
from this domain" and select the DNS domain that you
wish to have replicated into your current DNS domain.
________________________________________________________________
ALWAYS COPY HOSTS FILE
Always copy hosts file from this file
Normally DNS Boss keeps a separate hosts file for
each domain. In some cases there may be a need to
copy all of the hosts from the
/export/home1/dns/dns_hosts.company_1.com file for
example, and put them into your current domain. That
is what "Always copy hosts file from this file" does.
You may select any file from the file dialog box.
________________________________________________________________
APPEND DB DOMAIN
Append special DNS database entries to the
db.domain file
In some rare cases it may be necessary to create
special DNS database records that DNS Boss may not be
able to handle. To do that, under the Advanced menu,
select: "Append special DNS database entries to the
db.domain file". Here is an example of the type of
entry that could be added.
topaz.testcompany.com. IN MX 100 garnet.testcompany.com.
Keep in mind that this should only be done in
rare cases.
________________________________________________________________
APPEND NAMED BOOT
Append special entries to the /etc/named.boot file
In some rare cases, it may be necessary to add
custom entries to the /etc/named.boot file that did
not get added by DNS Boss. This usually should not
need to be done. However, if there a need for some
special entry in /etc/named.boot not already
created by DNS Boss, just create a file called:
/var/opt/DNSBoss/dns_build_area/append.named.boot
and add whatever entries you want. DNS Boss will
append it to the /etc/named.boot file that it
creates.
________________________________________________________________
APPEND SPECIAL BIND CONFIGURATIONS TO ETC NAMED CONF
Help on: Append special BIND configurations to
/etc/named.conf
It is not generally necessary to add anything in
this window. DNS Boss should create everything that
is need for most cases. However, if you want to
append some of the more sophisticated configurations
of DNS BIND to your /etc/named.conf after all of
the standard configurations that DNS Boss already
provides, then select:
"Add special BIND 'options' to /etc/named.conf"
to do it. Here are a couple of examples:
server 204.33.116.7 {
transfers 2;
};
topology {
15/8;
172.88/16;
};
If you are not certain about what you are
appending to your BIND /etc/named.conf
file with this window, then it is suggested to not
add anything. Your DNS should work fine
without adding any of these sophisticated
configurations.
________________________________________________________________
ARCHIVE THE CURRENT STATE OF THE DNS BOSS SYSTEM
Archive the current state of the DNS Boss system
By selecting 'Archive the current state of the DNS Boss system' from
the 'Advanced' menu, a system archive is created. The archive is created
with a date stamp for the file name. Here is an example showing a sample
archive file.
/var/opt/DNSBoss_archives/040105121609.tar.Z
The archive files exist as compressed tar files. These archive
files can be easily be copied to other systems running DNS Boss, to
create replica DNS servers.
To unpack a DNS Boss system archive file, simply use either the
'X', or Web UI and under the 'Advanced' menu, and select
'Revert to the following available DNS Boss system archive'. The
DNS Boss system archive files can also be unpacked from the command
line. Here is an example.
/opt/DNSBoss/bin/unpack_archive /var/opt/DNSBoss_archives/040105121609.tar.Z
________________________________________________________________
BIND VERSION 8 X AND 4 X
Help on: BIND 8.x and 4.x
For Solaris, all Solaris 2.7 or greater operating
systems come pre-built with DNS BIND 8.x. Before
Solaris 2.7, Solaris machines came pre-built with
BIND 4.x. In some cases it may not be clear what
version of BIND you are running. If this is the
case, you may select the choice button: "BIND 8.x
and 4.x" to force DNS Boss to write to both:
/etc/named.boot (BIND 4.x), and /etc/named.conf
(BIND 8.x). This should allow your DNS server to
serve DNS requests no matter what version of BIND
your machine is running.
If you build a custom version of BIND, and do
not build it into: /usr/sbin/in.named, then you
must go to the Advance menu and select:
'Set the path to the named executable'.
________________________________________________________________
BIND VERSIONS
Bind Versions
DNS Boss should work with the following BIND
versions:
Bind 4.x
Bind 8.x
BIND 9.x.
and the version in between provided the versions of
BIND work.
If you build a custom version of BIND, and do
not build it into: /usr/sbin/in.named, then you
must go to the Advanced menu and select:
'Set the path to the named executable'.
________________________________________________________________
COMMON ERRORS
Common errors:
DNS Boss started by non-root, user:
The following would happen if you tried to run the
program as a non-root user if you are in the UNIX
environment:
Xlib: connection to ":0.0" refused by server
Xlib: Client is not authorized to connect to Server
java.lang.InternalError: Can't connect to X11 window
server using ':0.0' as the value of the DISPLAY variable.
at sun.awt.motif.MToolkit.(MToolkit.java:55)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java)
at $1.(Unknown Source)
at
at
The solution is to do the following:
% su
# xhost +
# /opt/DNSBoss/bin/dnsboss
And, restart the dnsboss program.
Package installation attempted in the wrong directory:
______________________________________________________
Often times people type: cd DNSBoss to install the
Solaris package instead of installing it in the same
directory where they uncompressed it. The following
error message will be seen if an attempt is made at
installing the Solaris package from the wrong directory:
pkgadd -d .
pkgadd: ERROR: no packages were found in
The solution is to do the following:
# cd ..
# ls
DNSBoss
# pkgadd -d .
Disproportionate or missing textfield in DNS Boss GUI:
______________________________________________________
# cd /opt/DNSBoss/bin
# ./change_dnsboss_x_ui_fonts
This will cycle through various different fonts
attempting to find one that works for your system.
If you find one that works, select it, and
DNS Boss will use that font as a default.
________________________________________________________________
CONVERT PRE-EXISTING DNS DATA INTO DNSBOSS FORMAT DATA
Convert pre-existing DNS data into DNS Boss format
DNS data
Some sites may already have a DNS implementation,
but may wish to use DNS Boss to simplify their
maintenance. If this describes your site then do the
following.
1) If you haven't already done so, install DNS Boss.
Leave your pre-existing DNS databases where they
are for now, DNS Boss will save its databases in
its own location (/var/opt/DNSBoss/dns_databases).
2) Make a copy of your pre-existing /etc/named.boot,
or your /etc/named.conf (for BIND 8.x or 9.x),
and save it in the one of the following locations:
/etc/named.boot-orig
/etc/named.conf-orig
3) Select: "Convert pre-existing DNS data into DNS
Boss format DNS data" from the "Advanced" menu of
the DNS Boss GUI. If you have a need to use
separate hosts files for each domain, the DNS
Boss Converter creates then, and they can be found
under the /etc directory. Here is an example:
/etc/dns_hosts_corp.com
/etc/dns_hosts_eng.com
Even if you don't choose to use these optional
files, the converted data is still saved in DNS
Boss.
4) Load each domain in DNS Boss by selecting: "Load
DNS domain" and check the information on the main
GUI. Also select "Edit hosts" for each domain and
look at the host file to make sure everything looks
valid. You should see a hosts file with hosts that
are not fully qualified. If you see things you
need changed, change them.
5) Select "Update all domains" under the Advanced
menu. DNS Boss will then attempt to create all of
the forward, reverse, loopback, and boot files,
and then restart /usr/sbin/in.named.
The DNS Boss Converter makes educated decisions
about how to convert your DNS into a format consistant
with DNS Boss. You may not agree with every decision
it made, so it is important that you load each domain
in the DNS Boss GUI, and check the information that
that the converter came up with. The converter is
not designed to be able to convert every obscure DNS
entry. The converter is a helper, not an end all-
once you get the converted data into the DNS Boss
GUI, you can manipulate it. In some cases the DNS
Boss Converter may convert all of the data
perfectly, and it may not need any modifications.
________________________________________________________________
CONVERT TO CACHING ONLY
Convert this server to a Caching-only DNS Server
To convert this machine into a Caching-only DNS
Server, select "Caching-only" from the "Advanced"
menu. You will then have several options of the type
of machine you want this machine to be. Just
select: "Convert this server to a Caching-only DNS
Server". As long as you have a connection to the
Internet, your server should start working as a
Caching-only DNS server at this time.
________________________________________________________________
CONVERT TO SECONDARY
Convert this server to a Secondary DNS Server
To convert this machine into a secondary DNS
Server, select the "Convert this server to a Secondary
DNS Server" from the "Advanced" menu. You will then
have several options of the type of machine you want
this machine to be. You must again select: "Convert
this server to a DNS Secondary Server.
After this is done, you must follow the
instructions to get one file off of the DNS primary.
This is important. After you have got the file, hit
the "Convert this server to a DNS Secondary Server"
one last time to restart the in.named with the new
files and especially the named.boot file you just
ftp'd from the special place on the DNS primary.
After this, your DNS Secondary should be working.
________________________________________________________________
EDIT HOSTS
Edit hosts
In order for DNS (Domain Name System) to
function, it needs DNS records. This software
produces those DNS databases from the host file, and
the other information provided.
For machines that you do NOT want in DNS, but,
you would still like to have them in the host file,
you can add in the comment field of the hosts file
the following: [no_dns]. Here is an example:
Hit the edit hosts button.
192.168.77.211 topaz # This host would get a DNS
# record.
192.168.77.212 emerald # [no_mx] This host would
# not get an MX record.
192.168.77.213 ruby # [no_dns] This host would
# not get any DNS records.
Is edit hosts the same as the /etc/hosts file on
a UNIX machine? No, when you hit the Edit hosts
button, it edits another file that is not the
/etc/hosts file. You can see the name of the file
you are saving when you save it using the Generic
editor.
If you are running this product on a Solaris
2.x machine, you must make an entry very similar to
the following in the /etc/nsswitch.conf:
hosts: files dns
________________________________________________________________
GENERIC EDITOR
Generic editor
Generic editor is a simple platform
independant editor.
________________________________________________________________
HOW TO DO A CNAME
How to create a CNAME record
DNS Boss automatically creates CNAME records when
it does its updates All you have to do is put the name
of the CNAME record you wish to create on the same
line of the hosts file that comes up when you hit
"Edit hosts".
Example:
________
208.19.71.50 spiderman ftp www # this would create
# CNAME's for ftp and www
________________________________________________________________
HOW TO DO COMMAND LINE UPDATES WITHOUT THE GUI
How to do DNS Boss from the command line without
the GUI
DNS Boss allows command line execution of the
product to do updates from the command line without
bringing up the GUI. This is convenient for sites
that want to run a nightly build of their DNS data
from a hosts file that changes every day. This
must be done after all of the GUI parameters have
been set up. To do this, set the following options
via the GUI: Select "Always copy hosts file from
this file" (under the Advanced menu). After you
have saved all of the other settings for your
domain the way you like them, make a change to
your host file, and run the following from
the command line:
Example:
________
# /opt/DNSBoss/bin/dnsboss_commandline
Then do a nslookup to see if it really worked.
Example:
________
# nslookup tiger.your_company.com.
If it comes back with the proper DNS entry, they you
could put an entry into the root crontab so DNS Boss
can automatically generate DNS databases from your
hosts file. This would create updated DNS databases
every 30 minutes every day. After the updated
databases are created, /usr/sbin/in.named
automatically gets restarted so your DNS should be
up to date.
Example:
________
# setenv EDITOR /usr/ucb/vi
# crontab -e
1,30 * * * * /opt/DNSBoss/bin/dnsboss_commandline > /dev/null 2>&1
Here is a list of the DNS Boss command line
options.
Example:
________
# /opt/DNSBoss/bin/dnsboss_commandline -help
/opt/DNSBoss/bin/lockdnboss
/opt/DNSBoss/bin/dnsboss_commandline -autobuild_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -autobuild your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -add_domain your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -delete_domain your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -converter
/opt/DNSBoss/bin/dnsboss_commandline -add_host_to_next_available_ip
name your_domain.com subnet true
/opt/DNSBoss/bin/dnsboss_commandline -remove_host name
your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -ip_exists ip
/opt/DNSBoss/bin/dnsboss_commandline -name_exists_in_domain
name yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_names_in_domain
yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_ips_in_domain yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_subnets_in_domain
yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_names_in_domain
yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_cnames_in_domain
yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_ips_in_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -list_subnets_in_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_ips_in_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_ips_names_and_cnames_in_all_domains
________________________________________________________________
HOW TO GET STARTED
How to get started creating a DNS primary
Here is how to get started using the tool. The
DNS Boss GUI has most likely already been started,
but if not, start it up as super-user like this:
# /opt/DNSBoss/bin/dnsboss
After the GUI is up, change all of the TextFields to
reflect the information about your DNS domain. Make
sure that you put in an email address in the
following format: someuser.company.com (not
someuser@company.com). If you are not sure about a
setting, try to follow the defaults.
After you have put all of the information in the
TextFields that you want, delete any of the mail
exchanger, or DNS secondary fields you are not using.
You must have one mail exchanger, and it is a good
idea to have at least one DNS secondary, but it is
not required.
After deleting any empty mail exchanger, or
secondary fields, hit the "Save settings" button. If
you made any errors, they should show up in the
TextArea. If you made an error, fix it, and hit
"Save settings" again.
After you have saved your settings, hit the
"Edit hosts" button, and type in some hosts for your
domain. The proper format for hosts in this file is
the following:
216.45.70.45 somemachine # This is right
Do NOT attempt to put fully qualified hosts in this
file, that is WRONG:
216.45.70.45 somemachine.company.com # This is WRONG
After you have added a few hosts in the proper
format, hit the Save button.
After you have saved some hosts, hit the "Update
this domain" button. This should create the DNS
databases for you, and restart your in.named process
which allows your DNS data to get out to your
secondary's, and the rest of the Internet.
You may now hit the "Exit" button if your wish.
To get back to the domain you were modifying,
just bring up the tool, and hit "Load DNS domain",
and double click the domain that you wish to modify.
This machine must be the DNS primary for that
domain. At this point, you may "Edit hosts" again
if you wish. After you are done, make sure that the
following is hit "Update this domain" so that
changes will take effect and be seen by the rest of
the Internet.
________________________________________________________________
HOW TO SETUP A DNS SECONDARY
How do I set up a DNS secondary?
After you have saved the DNS configurations for
your DNS domain (the DNS primary), go to the machine
that you wish to use as a secondary, either by telnet
on a UNIX machine, or by walking up to it in person
on a non-UNIX machine. You may create the DNS
secondary by using the DNS Boss GUI, or by doing the
eqivalent of these commands from the command line:
mkdir -p /var/opt/DNSBoss/dns_secondary
cd /var/opt/DNSBoss/dns_secondary
ftp name_of_dns_primary_that_has_dnsboss_installed
ftp> cd /var/opt/DNSBoss/dns_build_area
ftp> dir
yourcompany.com
ftp> cd yourcompany.com
ftp> dir
ftp> get named.boot_for_secondary
ftp> get named.conf_for_secondary
ftp> get db.cache
ftp> get db.127.0.0
ftp> quit
On a SUN, or HPUX machine:
For Solaris 2.5 and Solaris 2.6 ( Bind 4.x )
mv named.boot_for_secondary /etc/named.boot
For Solaris 2.7 or greater ( BIND 8.x, or 9.x )
mv named.conf_for_secondary /etc/named.conf
For Solaris
vi /etc/nsswitch.conf
Make sure the following exists:
hosts: files dns
Save the file.
reboot
On an SGI
chkconfig named on
uname -r
If it is 4.X.X.
mv named.boot_for_secondary
/usr/etc/named.d/named.boot
Otherwise,
mv named.boot_for_secondary /etc/named.boot
reboot
Thats it, you should be done. The secondary's
should pull over the latest DNS databases after you
make changes to them. You do not need to add a
/etc/resolv.conf on a UNIX machine that is acting as
a DNS primary or secondary. It automatically know
how to resolve IP addresses as long as it is
functioning properly.
Make sure you test everything. The nslookup
command is a great way to do this. On most Unix
machines you can type:
nslookup - yoursecondary.yourcompany.com.
> ls -t any yourcompany.com.
This should give you a good idea if you are on track.
________________________________________________________________
HOW TO USE WEB USER INTERFACE
How to use the Web user interface
DNS Boss allows users to maintain their DNS Boss
primary remotely from a Web user interface. Different
users may have access if they are added to the file:
/opt/DNSBoss/etc/password.txt
Just copy one of the sample user names into a real
users name (don't try to use the sample names:
sally_jones or frank_black those won't work). Here
is what the file looks like:
sally_jones:top_secret:companyabc.com:companydef.com
frank_black:secret_password:*
The fields are: user name, password, and domains
that the user will have access to. The '*' means
that a user has access to all domains.
Once password.txt is modified, the Web startup
script must be started:
/opt/DNSBoss/bin/S99dnsbossweb start
At this point, just point a Web browser to your
DNS Boss DNS primary server like the following
example (use https, not http):
https://localhost:8080
To make the Web server to start every time the
server reboots, just do the following as root:
cp /opt/DNSBoss/bin/S99dnsbossweb /etc/rc2.d
________________________________________________________________
IP MANAGEMENT
IP Management
DNS Boss has a powerful IP Management capability
built into the standard DNS Boss product. There is
no additional software to install, or configure.
With DNS Boss, you get both powerful DNS Management,
and IP Management built into one product!
To use the IP Manager, just select the:
"IP Management" drop down menu and select the option
you wish to use. Options include the following:
Add a host to the next available IP number
__________________________________________
Use this option if you wish to add a host to the
next available IP. DNS Boss will find the available
hosts, and make sure the host does not already exist.
Remove a host
_____________
This option removes all occurring instances of
a host from a hosts file.
Check if an IP number is already being used
___________________________________________
This option makes sure that the IP is not being
used in any of the domains being maintained by the
DNS Boss DNS primary.
Check if a name is already being used
_____________________________________
This option makes sure that a certain name is
not already being used in a domain.
View all used names in this domain
__________________________________
This option lists and sorts all used names in a
given domain.
View all used IP's in this domain
_________________________________
This option lists and sorts all used IP's in
this domain.
View all used subnets in this domain
____________________________________
This option lists and sorts all used subnets
used by this domain.
View all duplicate names in this domain
_______________________________________
This option lists all duplicate names in this
domain.
View all duplicate CNAMES in this domain
________________________________________
This option lists all duplicate CNAMES in this
domain.
View all used IP's in all domains
_________________________________
This option lists all IP's in all domains.
View all duplicate IP's in all domains
____________________________________
This option lists all duplicate IP's in all
domains.
View duplicate: IP's, names, and CNAMES in all domains
_______________________________________________________
This option lists all duplicate: IP's, names,
and CNAMES in all domains.
The IP Management features can also be
implemented from the Java API, and from the command
line. Here are the command line features that
demonstrate the IP Management capabilities.
/opt/DNSBoss/bin/lockdnboss
/opt/DNSBoss/bin/dnsboss_commandline -autobuild_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -autobuild your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -add_domain your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -delete_domain your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -converter
/opt/DNSBoss/bin/dnsboss_commandline -add_host_to_next_available_ip name your_domain.com subnet true
/opt/DNSBoss/bin/dnsboss_commandline -remove_host name your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -ip_exists ip
/opt/DNSBoss/bin/dnsboss_commandline -name_exists_in_domain name yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_names_in_domain yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_ips_in_domain yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_subnets_in_domain yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_names_in_domain yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_cnames_in_domain yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_ips_in_all_domains yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_subnets_in_all_domains yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_ips_in_all_domains yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_ips_names_and_cnames_in_all_domains
________________________________________________________________
JAVA API
Java API
DNS Boss has an extremely powerful Java API to
modify data, and generate reports. With the DNS Boss
API, a rich set of features become available to:
customize, automate, and program your DNS environment.
To demo the DNS Boss API, simply do the following:
# cd /opt/DNSBoss/lib/tools/java_api
# ls
api_demo APIDemo.java
# ./api_demo
The APIDemo.java Java program gives a running
example of how to use the features of the API.
When recompiling, make sure to use SDK 1.2 or
greater, and use the following CLASSPATH. Example:
/usr/java/bin/javac -classpath \
/usr/java/lib/rt.jar:/opt/DNSBoss/lib/dnsboss.jar:/opt/DNSBoss/lib/tools/java_api \
APIDemo.java
For best results, create a few DNS domains and
add some sample data into each domain. Then run:
/opt/DNSBoss/lib/tools/java_api/api_demo.
Here is the current version of the Java API
example source code.
/*
APIDemo.java
This stand alone Java application demonstrates
the features of the DNS Boss
Java API.
*/
import java.util.Vector;
import java.util.TreeMap;
import java.util.Iterator;
class APIDemo {
APIDemo() {
DNSBoss myDNSBoss = new DNSBoss();
System.out.println( "___________________________________________________________________________________" );
TreeMap domainNamesTreeMap = myDNSBoss.getDomainNames();
int domainNamesCounter = 0;
for ( Iterator mainIterator = domainNamesTreeMap.keySet().iterator(); mainIterator.hasNext(); ) {
++domainNamesCounter;
String dns_domain = (String)mainIterator.next();
System.out.println( " " );
System.out.println( "___________________________________________________" );
System.out.println( "DNS domain #" + domainNamesCounter + ": " + dns_domain );
//
// List all subnets.
//
TreeMap subNetsForDomainTreeMap = myDNSBoss.getSubNetsForDomain( dns_domain );
int subNetsForDomainCounter = 0;
for ( Iterator myIterator = subNetsForDomainTreeMap.keySet().iterator(); myIterator.hasNext(); ) {
++subNetsForDomainCounter;
String subNet = (String)myIterator.next();
System.out.println( subNetsForDomainCounter + " Subnets for " +
dns_domain + ": " + subNet );
}
//
// List all available IP's for a subnet.
//
System.out.println( "___________________________________________________" );
System.out.println( "Available IP's:" );
TreeMap subNetsForDomainTreeMap1 = myDNSBoss.getSubNetsForDomain( dns_domain );
subNetsForDomainCounter = 0;
for ( Iterator myIterator = subNetsForDomainTreeMap1.keySet().iterator(); myIterator.hasNext(); ) {
++subNetsForDomainCounter;
String subNet = (String)myIterator.next();
System.out.println( subNetsForDomainCounter + " Subnets for " +
dns_domain + ": " + subNet );
Vector availableIPsVector = myDNSBoss.getAllAvailableIPsForDomainOnSubNet( dns_domain, subNet );
for ( int i=0;i < availableIPsVector.size();++i) {
String anAvailableIP = (String)availableIPsVector.elementAt(i);
System.out.println( "Available IP for domain: " + dns_domain + " on subnet: " +
subNet + " IP: " + anAvailableIP );
}
}
System.out.println( "___________________________________________________" );
System.out.println( " " );
//
// Add a host.
//
System.out.println( "___________________________________________________" );
System.out.println( "Add hosts" );
TreeMap subNetsForDomainTreeMap2 = myDNSBoss.getSubNetsForDomain( dns_domain );
for ( Iterator myIterator = subNetsForDomainTreeMap2.keySet().iterator(); myIterator.hasNext(); ) {
String subNet = (String)myIterator.next();
// Use: true to really write the next available IP.
boolean write = false;
String addHostToNextAvailableIP = myDNSBoss.addHostToNextAvailableIPForDomainOnSubNet(
"robin", dns_domain, subNet, write );
System.out.println( " Prepared to add: " + addHostToNextAvailableIP );
}
//
// List out names in a domain.
//
System.out.println( "___________________________________________________" );
TreeMap namesInADomainTreeMap = myDNSBoss.getNamesInADomain( dns_domain );
int namesInADomainCounter = 0;
for ( Iterator myIterator = namesInADomainTreeMap.keySet().iterator(); myIterator.hasNext(); ) {
++namesInADomainCounter;
String name = (String)myIterator.next();
if ( namesInADomainTreeMap.containsKey( name ) ) {
System.out.println( namesInADomainCounter + " Unique name for " +
dns_domain + ": " + name );
}
System.out.println( " " + name + "." + dns_domain + " exists: " +
myDNSBoss.nameExistsInDomain( name, dns_domain ) );
}
//
// List out unique IP's in a domain.
//
System.out.println( "___________________________________________________" );
TreeMap uniqueIPsInADomainTreeMap = myDNSBoss.getUniqueIPsInADomain( dns_domain );
int uniqueIPsInADomainCounter = 0;
for ( Iterator myIterator = uniqueIPsInADomainTreeMap.keySet().iterator(); myIterator.hasNext(); ) {
++uniqueIPsInADomainCounter;
String ip = (String)myIterator.next();
if ( uniqueIPsInADomainTreeMap.containsKey( ip ) ) {
System.out.println( uniqueIPsInADomainCounter + " Unique IP for " +
dns_domain + ": " + ip );
}
}
//
// List out unique names in a domain.
//
System.out.println( "___________________________________________________" );
System.out.println( "Hosts:" );
Vector aDomainsHostDataVector = myDNSBoss.getHostsInADomain( dns_domain );
for ( int i=0;i < aDomainsHostDataVector.size();++i) {
HostEntry myHostEntry = (HostEntry)aDomainsHostDataVector.elementAt(i);
System.out.println( i + " " + myHostEntry.getIP() + " " + myHostEntry.getName() );
}
//
// List duplicate names in a domain.
//
System.out.println( "___________________________________________________" );
System.out.println( "Duplicate names in: " + dns_domain );
Vector duplicateNamesInADomainVector = myDNSBoss.getDuplicateNamesInADomain( dns_domain );
for ( int i=0;i < duplicateNamesInADomainVector.size();++i) {
System.out.println( duplicateNamesInADomainVector.elementAt(i) );
}
System.out.println( "___________________________________________________" );
System.out.println( " " );
System.out.println( "___________________________________________________________________________________" );
}
//
// List all IP's and names in all domains.
//
System.out.println( "___________________________________________________________________________________" );
System.out.println( " " );
System.out.println( "Listing all IP's and names in all domains." );
System.out.println( " " );
displayTreeMap( myDNSBoss.getGlobalIPsAndNames() );
System.out.println( " " );
System.out.println( "___________________________________________________________________________________" );
//
// List all subnets in all domains.
//
System.out.println( " " );
System.out.println( "Listing all subnets in all domains." );
System.out.println( " " );
displayTreeMap( myDNSBoss.getGlobalSubNets() );
System.out.println( " " );
System.out.println( "___________________________________________________________________________________" );
//
// Listing all duplicate: IP's, names, and CNAMES in all domains.
//
System.out.println( " " );
System.out.println( "Listing all duplicate: IP's, names, and CNAMES in all domains. " );
System.out.println( " " );
displayVector( myDNSBoss.getDuplicateIPsNamesAndCNamesInAllDomains() );
System.out.println( " " );
System.out.println( "___________________________________________________________________________________" );
//
// Listing only duplicate IP's in all domains.
//
System.out.println( " " );
displayVector( myDNSBoss.getGlobalDuplicateIPs() );
System.out.println( " " );
System.out.println( "___________________________________________________________________________________" );
}
public void displayVector( Vector myVector ) {
for(int i=0;i < myVector.size();++i) {
System.out.println( (String)myVector.elementAt(i) );
}
}
public void displayTreeMap( TreeMap myTreeMap ) {
for ( Iterator myIterator = myTreeMap.keySet().iterator(); myIterator.hasNext(); ) {
String data = (String)myIterator.next();
System.out.println( myTreeMap.get( data ) );
}
}
public static void main(String args[]) {
new APIDemo();
}
}
________________________________________________________________
LICENSE
DNS Boss 2.4
END-USER LICENSE AGREEMENT AND LIABILITY DISCLAIMER
This end user license agreement is a legal agreement
between you (an individual or an entity) and DNS
Boss for the use of the software product DNS Boss 2.4.
It contains rights and restrictions associated with
the accompanying software. By installing DNS
Boss 2.4, you are agreeing to be bound by the terms
of this Agreement. If you do not agree to the terms
of this Agreement, you are not authorized to use DNS
Boss 2.4.
GRANT OF LICENSE. By selecting "Agree" at the bottom
of this text window, DNS Boss grants you ("the
Licensee") a non-exclusive, nontransferable, license
to use DNS Boss 2.4 ("the Software") under the terms
of this agreement for one computer. DNS Boss 2.4 is
licensed to the Licensee, not sold.
COPYRIGHT. DNS Boss 2.4 is Copyrighted. Title,
ownership rights, and intellectual property rights
belong to DNS Boss. The Software is protected by
the copyright laws and treaties. Title and related
rights in the content accessed through the Software
is the property of the applicable content owner and
may be protected by applicable law. This License
gives the Licensee no rights to such content.
RESTRICTIONS. The Licensee may not make copies of
the Software other than for backup or archival
purposes. Licensee may not distribute, rent,
lease, sublicense or sell the software to third
parties. Licensee may not post DNS Boss 2.4 on
ftp sites, web sites, newsgroups, bulletin boards
or other public places. Licensee may not decompile,
modify, reverse engineer, disassemble, or otherwise
attempt to discover the source code of the software.
Licensee may not create any program deriving wholly
or in part from the software. Licensee may not
use the Software for purposes transmitting
pornography. DNS Boss reserves the right to
refuse to license the Software to anyone; including
those they deem to be participating in unethical
conduct. Licensee may not use the Software in any
manner which is illegal in the regional government,
or the laws of California, or the laws of the
United States of America.
RESTRICTED RIGHTS. Use, duplication, reproduction,
and disclosure by Government is subject to
restrictions in subdivision (c) (1) (ii) of the
Rights in Technological Data and Computer Software
Clause at 252.227.7013 and in subparagraphs (a)
through (d) of the Commercial Software Restricted
Rights Clause at 52.227-19.
CONFIDENTIALITY. Licensee agrees software is
confidential and proprietary information of DNS Boss.
Licensee will take adequate steps to ensure software
is protected from unauthorized disclosure or use.
EXPORT LAW ASSURANCES. Licensee agrees that the
software and its accompanying documentation will not
be downloaded, exported, or reexported into or to a
national or resident of Cuba, Iraq, Iran, North Korea,
Libya, Sudan, or Syria, or to any country the U.S.
has embargoed goods, as well as any country on the
U.S. Commerce Department's Table of Denial Orders
and/or the U.S. Treasury Department's list of
Specially Designated Nations.
TERMINATION. Licensee may terminate this license at
any time by destroying the program, documentation,
and all permitted copies. If Licensee fails to comply
with any provision of this agreement, this license
will be terminated immediately without notice from
DNS Boss. Upon such termination, Licensee must
destroy all copies of the software.
DISCLAIMER OF WARRANTY/LIMITATION OF LIABILITY. DNS
Boss makes no warranty, express or implied for this
software including but not limited to the implied
warranty of fitness for intended use. This software
is provided AS IS. Under no circumstances and under
no legal theory, tort, contract, or otherwise shall
DNS Boss, or its suppliers or resellers be liable to
the Licensee, or any other person or entity for any
direct, indirect, special, incidental or
consequential damages of any character including,
without limitation, damages for loss of goodwill,
work stoppage, computer or network failure or
malfunction, or any and all other commercial, or
non-commercial damages or losses however caused,
even if DNS Boss has been advised of the
possibility of such damages. All risk pertaining
to the performance or use of the software
remains with the Licensee.
HIGH RISK ACTIVITIES. The Software is not
fault-tolerant and is not designed, manufactured or
intended for use or resale as on-line control
equipment in hazardous environments requiring
fail-safe performance, such as in the operation of
nuclear facilities, aircraft navigation or
communication systems, air traffic control, direct
life support machines, or weapons systems, in which
the failure of the Software could lead directly to
death, personal injury, or severe physical or
environmental damage ("High Risk Activities"). DNS
Boss and its suppliers specifically disclaim any
express or implied warranty of fitness for High
Risk Activities.
GOVERNING LAW. Governing Law. Any action related to
this License will be governed by California law and
controlling U.S. federal law. No choice of law rules
of any jurisdiction will apply.
________________________________________________________________
LOAD DEFAULT DNS DOMAIN
Load default DNS domain
If you ever have questions about what the default
settings are for any of the settings this is a good
place to look. If you don't know what all of the
different settings mean, just use the defaults.
________________________________________________________________
LOAD DNS DOMAIN
Load DNS Domain
"Load DNS Domain" allows you to look at another
DNS domain. After it loads, the configurations may
be changed. After that "Update DNS Databases"
should be selected.
________________________________________________________________
NEVER COPY HOSTS FILE
Never copy hosts file from another domain or file
The never copy hosts file from another domain or
file turns off the automatic copy of the hosts file
from another domain or file.
________________________________________________________________
NO DNS
Add [no_dns] to comment field
If there is ever a case where you have the need
to omit DNS entry, just put [no_dns] anywhere in the
comment field of the comment field. This will
eliminate the DNS records for that host only.
Here is an example:
217.18.74.56 topaz # [no_dns] John Doe SUN workstation
________________________________________________________________
OPEN AND EXTENSIBLE
DNS Boss: Open and Extensible
DNS Boss is very open and extensible. DNS Boss
is not constrained to specific versions of BIND. It
should work with all of the functioning versions of
BIND from 4.x to 8.x to 9.x and all of the releases
in between. DNS Boss is deliberately not shipped with
a verion of BIND, so that the Systems Administrator
can use the version of BIND that already comes with
the system, or one they wish to build. For example,
if a Systems Administrator were to only install DNS
Boss on a Solaris 2.5 to Solaris 10 machine, they
should be able to get a DNS primary running without
installing anything else, because SUN ships a working
version of BIND by default.
DNS Boss is NOT locked into a SQL database.
DNS Boss writes the DNS databases into open ASCII
files. If for some reason, a decision was ever made
to stop using DNS Boss, the ASCII DNS database files
could still be modified by hand, and a company would
not be locked into a proprietary solution, tied to
a proprietary version of a SQL type database.
DNS Boss can easily be extended by using either
the command line interface with UNIX shell scripts,
or the Java API. DNS Boss has powerful IP
Management capabilities.
________________________________________________________________
PLATFORMS
Platforms DNS Boss been ported to
Currently DNS Boss is ported to:
Solaris 2.5 - Solaris 10 SPARC
Solaris 2.5 - Solaris 10 Intel
Linux
________________________________________________________________
REFRESH RETRY EXPIRE TTL
Refresh, Retry, Expire, Minimum TTL
These settings tell the secondary when to come and retrieve
the DNS data from the primary, for example, every 6 hours
(REFRESH). If for some reason the secondary is unable to
pull at that 6 hour interval then (RETRY) every 1 hour
for up to 20 days (EXPIRE) and if it is unable to pull the
data from the primary after the 20 days, we should delete
the DNS data as they are two old. Also, the primary server
is telling all caching servers to hold the data for 6 hours
(MINIMUM) and after 6 hours, then to come back and get the
new data. Here is an example:
@ IN SOA ns.bobspizza.com. hostmaster.bobspizza.com. (
2001112024 ; Serial Number
21600 ; Refresh every 6 hours
3600 ; Retry every hour
1728000 ; Expire every 20 days
21600 ) ; Minimum 6 hours
________________________________________________________________
REMOTELY MAINTAIN ANOTHER MACHINE THAT HAS BEEN INSTALLED WITH DNS BOSS
Remotely maintain another machine that has been
installed with DNS Boss
Web:
____
Users using the Web User interface can
modify any number of DNS Primary Servers
running DNS Boss through their Web Browser.
X UI:
_____
In some cases, it may be desirable to maintain
multiple "DNS Boss" servers from one central location
via the "X" DNS Boss User Interface. By selecting
this option, you will have this capability. Some
sites may not have a firewall.
If there is a firewall in place, a hole must
be made in the firewall for outgoing traffic for rsh
from the central "DNS Boss" DNS primary to the
external "DNS Boss" DNS primary. Another hole must
be punched in the firewall for incomming "X"
traffic from the external "DNS Boss" DNS primary
to the internal "DNS Boss" DNS primary.
Also, on the external "DNS Boss" DNS primary,
there must be an entry in the /.rhosts, file for
the internal machine. There is no need to do any
xhosting, because DNS Boss already does it
automatically.
Here in an of examples of what the /.rhosts,
file would look like for a external machine that
you want to remotely maintain from an internal
machine.
external# vi /.rhosts
internal
internal.company.com
________________________________________________________________
REMOVE ALL DNS DATABASES BUT NOT CONFIGURATION DATA
Remove all DNS databases but not configuration data
This give you the opportunity to clean out all
of the existing DNS databases. After selecting this,
you should immediately select "Update all domains".
________________________________________________________________
REMOVE DNS DOMAIN COMPLETELY
Remove DNS domain completely
This deletes the DNS configuration directories
for a DNS domain, but it does not delete the DNS
databases for that domain. To do that, you must do
the following:
"Remove DNS domain completely"
"Remove all DNS databases but not configuration data"
"Update DNS databases"
________________________________________________________________
REPLICATION
DNS Boss Replication
DNS Boss has a very easy to use built in replication
mechanism for the replication of DNS Boss primary servers.
To use this there must be 1 DNS Boss Replication Sender,
and there can be any number of DNS Boss Replication
Receivers. DNS Boss must be installed on the Replication
Sender and Receiver machines.
To enable the DNS Boss Replication Sender for a DNS
primary, simply go to the Advanced menu and select:
"DNS Boss Replication Sender"
Click on: "Enable DNS Boss Replication Sender"
Choose an unused Port number you wish to use for the
transfer of data. Select a unique user name and password.
These are not related to the UNIX user name or password,
they are only for DNS Boss Replication. Then in the
TextField, put in the IP's of the other DNS Boss Primary
Receivers where you wish to push your DNS data. There
must be only 1 IP per line. Then hit Save and then Exit.
To enable the DNS Boss Replication Receiver for a DNS
primary, you must go to a different machine installed with
DNS Boss, and go to the Advanced menu and select:
"DNS Boss Replication Receiver"
Click on: "Enable DNS Boss Replication Receiver"
Type in the IP number of the DNS Boss Replication Sender.
Type in the same Port number you used on the DNS Boss
Replication Sender. Click Save. Go to the File menu on
the same window (DNS Boss Replication Receiver), and select
"DNS Boss Replication Authentication"
Type in the same user name and password that you used on
the DNS Boss Replication Sender. Click Save. Click Exit.
Then go back to the DNS Boss Replication Sender machine,
and after you have created a domain, click on "Update this
domain". If you look on the DNS Boss Replication Receiver
machine, you should see the updates comming through from
the DNS Boss Replication Sender as long as you still have
the DNS Boss Replication Receiver window up.
To monitor, or receive DNS updates the DNS Boss
Replication Receiver window must be up. If the window is
not up, updates will not receiveed. The exception to this
is that there is a non-GUI DNS Boss Replication Receiver
server that can be used. To use this server just follow
this example:
# cd /opt/DNSBoss/bin
# cp S99dnsbossprimaryreplicationreceiver /etc/rc2.d
# /etc/rc2.d/S99dnsbossprimaryreplicationreceiver start
This will allow the DNS Boss Replication Receiver
to start up automatically in a non-GUI mode if there is
a system reboot. Do not run the non-GUI Receiver at the
same time as the GUI Receiver, run one or the other.
________________________________________________________________
REVERT TO THE FOLLOWING AVAILABLE DNS BOSS SYSTEM ARCHIVE
Revert to the following available DNS Boss system archive
By selecting 'Revert to the following available DNS Boss system archive'
from the 'Advanced' menu, it is possible to revert to a previous state
of the DNS Boss system. The most recent archives are listed on top . Each
archive file contains a compressed tar file sith a date stamp. Here is an
example.
/var/opt/DNSBoss_archives/040105121609.tar.Z
By selecting an archive file, and clicking the: 'Revert to the following
available DNS Boss system archive' button, the system is reverted back to the
selected archive, and the DNS server is automatically restarted.
________________________________________________________________
ROLL BACK TO THE PREVIOUS STATE OF THE HOSTS FILE FOR THIS DOMAIN
Roll back to to the previous state of the hosts file
for this domain
If for some reason bad data gets put into the
hosts file that you are editing, and you would like
to revert back to the previous version of the hosts
file, you can do it by making this selection.
This selection causes DNS Boss to: copy in the
previous version of the hosts file for this domain,
and remove all DNS databases, and then rebuilt all
DNS databases. This removes any old non-existing
DNS data.
The rollback gets the previous version of the
hosts file even if you are in a new GUI session.
________________________________________________________________
SAVE SETTINGS
Save settings
Save settings saves all of the information that
has been entered on to the hard disk of the machine
that is running this product.
________________________________________________________________
SET DEFAULT DNS NAME AND IP FOR NSLOOKUP SERVER
Set default DNS name and IP for nslookup
'Server' name
This option should be selected if DNS
Boss is being used to manage multiple DNS
domains. It sets the 'Server' name and
IP response from the nslookup command.
The IP must be a valid IP of your DNS
primary. The server name can be fake or
real, and should be a fully qualified
name.
Also, with DNS Boss it is possible
to make the Staging DNS Boss Primary be
hidden, so that its name does not show up.
Only the names of the external DNS
servers would show up. Just select the
checkbox: "Hidden staging DNS primary".
________________________________________________________________
SET THE PATH TO THE NAMED EXECUTABLE
Set the path to the named executable
Use this window to set the path to the executable of
the version of BIND that you wish to use. DNS Boss uses
your version of BIND. For example, relatively recent
versions of the Solaris operating system ship with a
pre-built version of BIND 8.x located at:
/usr/sbin/in.named
which is used as the default version of BIND in DNS Boss
if nothing else is selected.
To use another version of BIND, just select, or type
in the complete path to the BIND executable you wish to
use in this window. For example, one could install the
free, pre-built or build it yourself Solaris package of
BIND 9.x for Solaris which should be available at-
http://www.sunfreeware.com. After installing the package,
use this window to select:
/usr/local/sbin/named
and the http://www.sunfreeware.com pre-built version of
BIND 9 should be capable of working. Also make sure you
select BIND 9.x on the main GUI window as the BIND version.
________________________________________________________________
SKIP ALL DNS RECORDS FOR THIS HOST
Skip all DNS records for this host
In some cases it may be desireable to completely
skip all the DNS records for a given host in the host
file. To do this, just add [no_dns] to the host file
behind the comment character. Here is an example of
a host that would get all of its DNS records skipped:
201.188.104.120 panther # [no_dns] Jane Doe
________________________________________________________________
SKIP DNS RECORD
Skip all DNS records for this host
In some cases it may be desireable to not have
a MX record. To do this, just add [no_mx] to the
host file behind the comment character. Here is an
example of a host that would get its MX record
skipped:
201.188.104.110 casper # [no_mx] John Doe
________________________________________________________________
SKIP MX
Skip MX record
In some cases it may be desireable to not have a
MX record. To do this, just add [no_mx] to the host
file behind the comment character. Here is an
example of a host that would get its MX record
skipped:
201.188.104.110 casper # [no_mx] John Doe
________________________________________________________________
SPINNING RED BALL
What is the spinning red ball
The spinning red ball is "Io", one of Jupiters
moons.
________________________________________________________________
SUGGESTED SOLARIS CONFIGURATION FOR LARGE SITES
Suggested Solaris configurations for large DNS
implementations spanning multiple geographic regions
The following is a suggested configuration to
get DNS BIND 8 or BIND 9 working in a very large site
spanning multiple geographic regions running a
centralized administration/staging server. This
configuration should be tested in a non-production
environment first before it is put into a production
environment.
How to set up a DNS Boss Staging / Multiple Primary
Configuration
"X" User Interface Web User Interface
Administration Administration
\ /
\ /
\ /
\ /
DNS Boss Staging DNS Primary (Sender)
\ \ DNS Client
\ \ /
\ \ /
\ Production /
\ DNS Boss Primary 1 --- DNS Client
\ (Receiver)
\
\
\ DNS Client
\ /
\ /
\ /
Production /
DNS Boss Primary 2 --- DNS Client
(Receiver)
So why run multiple DNS primary servers and a
separate Staging/Administration Server? Lets ask a
few very important questions:
QUESTION: Should the site DNS go down if somebody
makes a mistake on their DNS maintenance?
ANSWER: With the DNS Boss Staging Server setup, if
somebody accidently tries to push bad data to all the
DNS servers, it should only take down the the DNS
Boss Staging Server DNS, but not the Production DNS
Boss Primary DNS Servers. DNS Boss does a huge
amount of checking and simplification to verify the
correct creation of all DNS data. If however,
something slips through that causes a fatal error in
the restart of BIND, then the DNS Boss Staging Server
will not push the DNS data to the Production DNS
Boss Servers. DNS Boss looks at the return status
code for the restart of your version of BIND and
will only push data to the Production DNS Servers
if it sees a successful restart of BIND. The DNS
Boss staging server also automatically pings the
Production DNS Servers before it attempts to
replicate to verify that they are up to prevent
pushes from hanging.
QUESTION: Should the different DNS servers for the
same DNS domain be out of sync?
ANSWER: The DNS Boss Staging Server synchronizes
the data on all Production DNS servers by pushing
the exact data from the Staging Server to the
Production Servers.
QUESTION: What if there is a power blackout at the
site where the main DNS Primary is located?
Shouldn't the Production DNS servers located at
other geographic locations still be able to do
updates and modifications?
ANSWER: With the DNS Boss Staging Server setup, if
there were an extended power blackout where the main
DNS primary was located, a remote DNS Boss Production
DNS Primary located on the other side of the world
could still do updates, or even take over as the
DNS Boss Staging DNS Server.
To install the DNS Boss DNS primary sender (Staging
DNS Server):
# /opt/DNSBoss/bin/dnsboss
Click on the Advanced menu and select:
DNS Boss Replication Sender and fill in the information.
To install the DNS Boss DNS primary receiver:
# /opt/DNSBoss/bin/dnsboss
Click on the Advanced menu and select:
DNS Boss Replication Receiver and fill in the information.
Then go to the DNS Boss DNS primary sender and
click "Update this domain" for any DNS domain. On the
DNS Boss DNS primary receiver you should see the updates
come across on the receiver GUI.
Simulated disaster and recovery.
Here is a suggested test to simulate a
disaster that should be performed so you know
what to do when a real disaster hits.
Shutdown your master DNS Boss primary, and
one of your Production DNS Boss Primary DNS
servers. Example
stagingdns# init 0
ns1# init 0
and turn them both off. This will simulate
a catastrophic disaster in 1 or more
geographic regions. Go to your your surviving
Production DNS Primary, and add or delete
some hosts, and: 'Update this domain'.
This should work, and the fact that 2 out of
your 3 DNS primarys are down should not be
significantly noticed by the DNS clients.
The real advantage of doing this is that you
can carry on your business by adding or
deleting new DNS hosts, even while the other
DNS primarys servers are being maintained.
This would not be true if you were running a
Primary to Secondary configuration. You
would not be able to make updates.
________________________________________________________________
UPDATE ALL DOMAINS
Update all domains
This selection causes the DNS (Domain Name
System) databases for all the DNS domains that this
software maintains to be updated immediately.
Before it does an update it also saves your current
settings automatically.
If the following selection is ever made under
the "Advanced" menu:
"Remove all DNS databases but not configuration data",
you must immediately select: "Update all domains"
under the "File" menu.
________________________________________________________________
UPDATE THIS DOMAIN
Update this domain
This selection causes the DNS (Domain Name System)
databases for the current domain that this software
maintains to be updated immediately. Before it does
an update it also saves your current settings
automatically. If there exists multiple DNS domains,
all of the other domains DNS data will also become
live to the state they were at the last time each of
those domains got an "Update this domain".
If the following selection is ever made under
the "Advanced" menu:
"Remove all DNS databases but not configuration data",
you must immediately select: "Update all domains"
under the "File" menu.
________________________________________________________________
USE CUSTOM DB CACHE FILE
Use custom db.cache file
In some cases it may be desireable to use a
custom db.cache file. This could be done if there
was a need to maintain DNS for an isolated network
not connected to the Internet. The standard
db.cache file is a list of DNS servers on the
Internet that are at the very top level of the DNS
tree. In the following example:
"www.some_company.com." the final "." is the
equivalent to all of the machines in the db.cache
file. The final dot is not generally referred to
because it is understood, but it does exist. To
better understand what "." is, try the following
experiment:
% ping .
. is alive
%
When the system says ". is alive", it is saying
that one of the machine in the db.cache file, at
the very top level of the DNS tree, is on the
network.
The standard db.cache file is always used by
DNS Boss by default without selecting anything.
You must select "Use custom db.cache file" if
there is a requirement to maintain DNS from a network
that is isolated from the rest of the Internet.
To turn off the use of the custom db.cache, just
select: "Use the standard db.cache file".
________________________________________________________________
USE STANDARD DB CACHE FILE
Use standard db.cache file
This option under the Advanced menu is used if
you want to turn off the use of the custom db.cache
file. The default is that the standard db.cache is
always used. The only time when the "Use standard
db cache file" selection is needed is when there is
a need to disable the use of the custom db.cache
file.
________________________________________________________________
USER INTERFACES
User Interfaces
DNS Boss has several User Interfaces:
1) The standard X User Interface.
Example:
________
# /opt/DNSBoss/bin/dnsboss
2) The Web User Interface.
To run the Web User Interface, a user must add an
entry for themself in the /opt/DNSBoss/etc/passwd.txt
file, and then start the DNS Boss Web application
server. Nothing else should need to be configured
to get the standard Web UI working.
This would give jane_doe web access with a
password of: janes-secret-password, and she would
have access to all DNS domains from the Web UI.
Example:
________
# vi /opt/DNSBoss/etc/passwd.txt
jane_doe:janes-secret-password:*
# /opt/DNSBoss/bin/S99dnsbossweb start
# netscape https://localhost:8080
3) The Command Line User Interface.
The following shows the Command Line Interface
options.
Example:
________
# /opt/DNSBoss/bin/dnsboss_commandline -help
/opt/DNSBoss/bin/dnsboss
/opt/DNSBoss/bin/dnsboss_commandline -help
/opt/DNSBoss/bin/dnsboss_commandline -gui
/opt/DNSBoss/bin/dnsboss_commandline -autobuild_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -autobuild your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -autobuild_no_restart your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -add_domain your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -delete_domain your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -converter
/opt/DNSBoss/bin/dnsboss_commandline -license_agree
/opt/DNSBoss/bin/dnsboss_commandline -add_ip_to_domain your_domain.com subnet ip name
/opt/DNSBoss/bin/dnsboss_commandline -add_host_to_next_available_ip name your_domain.com subnet true
/opt/DNSBoss/bin/dnsboss_commandline -remove_host name your_domain.com
/opt/DNSBoss/bin/dnsboss_commandline -ip_exists ip
/opt/DNSBoss/bin/dnsboss_commandline -name_exists_in_domain name yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -list_names_in_domain yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_ips_in_domain yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_subnets_in_domain yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_names_in_domain yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_cnames_in_domain yourdomain.com
/opt/DNSBoss/bin/dnsboss_commandline -list_ips_in_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -list_subnets_in_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_ips_in_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_ips_names_and_cnames_in_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -list_percent_fill_of_ip_address_space_in_all_domains
/opt/DNSBoss/bin/dnsboss_commandline -set_property default_dns_server ns1.yourdomain.com /opt/DNSBoss/etc/server.properties
/opt/DNSBoss/bin/dnsboss_commandline -license
/opt/DNSBoss/bin/dnsboss_commandline -version
/opt/DNSBoss/bin/dnsboss_commandline -show_authorized_domains jane_doe
/opt/DNSBoss/bin/lockdnboss
4) The Java API.
Because of the open, extensible, nature of DNS
Boss, Developers, Systems Integrators, and Systems
Administrators can easily extend the DNS Boss
product and integrate it into their environment.
Because it is widely accepted, powerful, and safe,
the Java programming language was selected as the
programming interface. To see an already working,
pre-built, example which exercises most of the
capabilities of the Java API, do the following.
Example:
________
# cd /opt/DNSBoss/lib/tools/java_api
# ./api_demo
To see the Java source used to run the api_demo,
just look at the APIDemo.java source.
Example:
________
# cat APIDemo.java
/*
APIDemo.java
This stand alone Java application demonstrates
the features of the DNS Boss
Java API.
*/
import java.util.Vector;
import java.util.TreeMap;
import java.util.Iterator;
class APIDemo {
APIDemo() {
DNSBoss myDNSBoss = new DNSBoss();
System.out.println( "___________________________________________________________________________________" );
TreeMap domainNamesTreeMap = myDNSBoss.getDomainNames();
int domainNamesCounter = 0;
for ( Iterator mainIterator = domainNamesTreeMap.keySet().iterator(); mainIterator.hasNext(); ) {
++domainNamesCounter;
String dns_domain = (String)mainIterator.next();
System.out.println( " " );
System.out.println( "___________________________________________________" );
System.out.println( "DNS domain #" + domainNamesCounter + ": " + dns_domain );
//
// List all subnets.
//
TreeMap subNetsForDomainTreeMap = myDNSBoss.getSubNetsForDomain( dns_domain );
int subNetsForDomainCounter = 0;
for ( Iterator myIterator = subNetsForDomainTreeMap.keySet().iterator(); myIterator.hasNext(); ) {
++subNetsForDomainCounter;
String subNet = (String)myIterator.next();
System.out.println( subNetsForDomainCounter + " Subnets for " +
dns_domain + ": " + subNet );
}
//
// List all available IP's for a subnet.
//
System.out.println( "___________________________________________________" );
System.out.println( "Available IP's:" );
TreeMap subNetsForDomainTreeMap1 = myDNSBoss.getSubNetsForDomain( dns_domain );
subNetsForDomainCounter = 0;
for ( Iterator myIterator = subNetsForDomainTreeMap1.keySet().iterator(); myIterator.hasNext(); ) {
++subNetsForDomainCounter;
String subNet = (String)myIterator.next();
System.out.println( subNetsForDomainCounter + " Subnets for " +
dns_domain + ": " + subNet );
Vector availableIPsVector = myDNSBoss.getAllAvailableIPsForDomainOnSubNet( dns_domain, subNet );
for ( int i=0;i < availableIPsVector.size();++i) {
String anAvailableIP = (String)availableIPsVector.elementAt(i);
System.out.println( "Available IP for domain: " + dns_domain + " on subnet: " +
subNet + " IP: " + anAvailableIP );
}
}
System.out.println( "___________________________________________________" );
System.out.println( " " );
//
// Add a host.
//
System.out.println( "___________________________________________________" );
System.out.println( "Add hosts" );
TreeMap subNetsForDomainTreeMap2 = myDNSBoss.getSubNetsForDomain( dns_domain );
for ( Iterator myIterator = subNetsForDomainTreeMap2.keySet().iterator(); myIterator.hasNext(); ) {
String subNet = (String)myIterator.next();
// Use: true to really write the next available IP.
boolean write = false;
String addHostToNextAvailableIP = myDNSBoss.addHostToNextAvailableIPForDomainOnSubNet(
"robin", dns_domain, subNet, write );
System.out.println( " Prepared to add: " + addHostToNextAvailableIP );
}
//
// List out names in a domain.
//
System.out.println( "___________________________________________________" );
TreeMap namesInADomainTreeMap = myDNSBoss.getNamesInADomain( dns_domain );
int namesInADomainCounter = 0;
for ( Iterator myIterator = namesInADomainTreeMap.keySet().iterator(); myIterator.hasNext(); ) {
++namesInADomainCounter;
String name = (String)myIterator.next();
if ( namesInADomainTreeMap.containsKey( name ) ) {
System.out.println( namesInADomainCounter + " Unique name for " +
dns_domain + ": " + name );
}
System.out.println( " " + name + "." + dns_domain + " exists: " +
myDNSBoss.nameExistsInDomain( name, dns_domain ) );
}
//
// List out unique IP's in a domain.
//
System.out.println( "___________________________________________________" );
TreeMap uniqueIPsInADomainTreeMap = myDNSBoss.getUniqueIPsInADomain( dns_domain );
int uniqueIPsInADomainCounter = 0;
for ( Iterator myIterator = uniqueIPsInADomainTreeMap.keySet().iterator(); myIterator.hasNext(); ) {
++uniqueIPsInADomainCounter;
String ip = (String)myIterator.next();
if ( uniqueIPsInADomainTreeMap.containsKey( ip ) ) {
System.out.println( uniqueIPsInADomainCounter + " Unique IP for " +
dns_domain + ": " + ip );
}
}
//
// List out unique names in a domain.
//
System.out.println( "___________________________________________________" );
System.out.println( "Hosts:" );
Vector aDomainsHostDataVector = myDNSBoss.getHostsInADomain( dns_domain );
for ( int i=0;i < aDomainsHostDataVector.size();++i) {
HostEntry myHostEntry = (HostEntry)aDomainsHostDataVector.elementAt(i);
System.out.println( i + " " + myHostEntry.getIP() + " " + myHostEntry.getName() );
}
//
// List duplicate names in a domain.
//
System.out.println( "___________________________________________________" );
System.out.println( "Duplicate names in: " + dns_domain );
Vector duplicateNamesInADomainVector = myDNSBoss.getDuplicateNamesInADomain( dns_domain );
for ( int i=0;i < duplicateNamesInADomainVector.size();++i) {
System.out.println( duplicateNamesInADomainVector.elementAt(i) );
}
System.out.println( "___________________________________________________" );
System.out.println( " " );
System.out.println( "___________________________________________________________________________________" );
}
//
// List all IP's and names in all domains.
//
System.out.println( "___________________________________________________________________________________" );
System.out.println( " " );
System.out.println( "Listing all IP's and names in all domains." );
System.out.println( " " );
displayTreeMap( myDNSBoss.getGlobalIPsAndNames() );
System.out.println( " " );
System.out.println( "___________________________________________________________________________________" );
//
// List all subnets in all domains.
//
System.out.println( " " );
System.out.println( "Listing all subnets in all domains." );
System.out.println( " " );
displayTreeMap2( myDNSBoss.getGlobalSubNets() );
System.out.println( " " );
System.out.println( "___________________________________________________________________________________" );
//
// Listing all duplicate: IP's, names, and CNAMES in all domains.
//
System.out.println( " " );
System.out.println( "Listing all duplicate: IP's, names, and CNAMES in all domains. " );
System.out.println( " " );
displayVector( myDNSBoss.getDuplicateIPsNamesAndCNamesInAllDomains() );
System.out.println( " " );
System.out.println( "___________________________________________________________________________________" );
//
// Listing only duplicate IP's in all domains.
//
System.out.println( " " );
displayVector( myDNSBoss.getGlobalDuplicateIPs() );
System.out.println( " " );
System.out.println( "___________________________________________________________________________________" );
}
public void displayVector( Vector myVector ) {
for(int i=0;i < myVector.size();++i) {
System.out.println( (String)myVector.elementAt(i) );
}
}
public void displayTreeMap( TreeMap myTreeMap ) {
for ( Iterator myIterator = myTreeMap.keySet().iterator(); myIterator.hasNext(); ) {
String data = (String)myIterator.next();
System.out.println( myTreeMap.get( data ) );
}
}
public void displayTreeMap2( TreeMap myTreeMap ) {
for ( Iterator myIterator = myTreeMap.keySet().iterator(); myIterator.hasNext(); ) {
String data = (String)myIterator.next();
System.out.println( data );
}
}
public static void main(String args[]) {
new APIDemo();
}
}
________________________________________________________________