Defcon-1-Logo

           [Home]    [FBSD Articles]    [Scripts Corner]    [Contribute]    [Search]    [FBSD Links]    [Files]

About Us

FreeBSD Articles
  *Hardware
  *Networking
  *Security
  *Software
  *X Windows


Files / Scripts
Newbies Corner
Tech. Talk
Tips and Tricks


FreeBSD Links

Articles in other
Languages :
  *French Articles
  *Spanish Articles

Want to Help ?
 
   Click Here

Email Users5

Search:
 

 


FreeBSD Search:


 

 

Powered-By-Apache-Logo

DNS - BIND

## Damon Slachter <razorz@jagged.net>

  With domain names becoming the "thing to have" these days, some people are feeling left out. If you are one of those people this article just might be for you. I will be concentrating on the BIND implementation of DNS and hopefully, by the end of reading this you will have a fully functional bind server.

   What is BIND?

   BIND (Berkeley Internet Name Domain) was written by Kevin Dunlap for the 4.3BSD UNIX operating system as a implementation of the Domain Name System, or DNS. Since its early release for 4.3BSD, BIND has been ported to virtually all flavors of UNIX and Microsoft Windows NT.    BIND has since been maintained by the Internet Software Consortium.

   Before we start I will be assuming you know basic Unix commands such as ls, cd, cp, mkdir and others like it. If not, my best advise is to stick around in #FreeBSD on Undernet more often or find a basic unix tutorial. With this being said, your ready to enter the realm of DNS/Bind.

   Installing the bind8 server is a simple task and can be achieved by doing the following:

       # cd /usr/ports/net/bind8
       # make
       # make install
    

   By executing these few commands you tell the makefile to download the source for bind8, compile it and then install it. Now that the Bind server is installed, we get into the config files themselves.

       # cd /etc
       # ls
    

   In the /etc directory you should have the file named.conf, if not lets make one, if so you must edit it anyhow.

       options {
       directory "/etc/namedb/";    // Config file directory
       };

       zone "jagged.net" in { // Domain you control/own
       type master;
       file "db.jagged";    // the file used for domain config
       };

       zone "159.243.207.in-addr.arpa" in {  // IP address 207.243.159.x
       type master;
       file "db.207.243.159"; // Again, file that controls this
       };

       zone "0.0.127.in-addr.arpa" in {    // Local loop zone
       type master;
       file "db.127.0.0";   // file controlling this IP field
       };

       zone "." in {        // Default, root name servers
       type hint; 
       file "db.cache";   // Cache file of Internic NS's
       };
    

   Thats basically it for the /etc/named.conf file, here are a few pointers.

   Pointers for named.conf

       zone "159.243.207.in-addr.arpa" in {
    

   This line will be used for reverse information on the Class C IP block of 207.243.159.0/24. Do not use 159.243.207, use your actual IP address block, minus the last number.

   Now its time to get the actual domain database files (ie: db.jagged) setup.

       # cd /etc
       # mkdir namedb
       # ls
    

   You will need to ftp to rs.internic.net/domain/ and download named.root and then rename the file as db.cache and your good to go.

   This is where the reverse names for your IP's are created.

   In the /etc/namedb dir use your favorite editor, may it be vi, ee or pico and make 3 files.

       # pico db.127.0.0
    

   In db.127.0.0 file you need the following:

       @ IN SOA ns1.jagged.net. ns2.jagged.net. (
           1     ; Serial #
           10800   ; Refresh after 3 hours
           3600   ; Retry after 1 hour
           604800  ; Expire after 1 week
           86400 )  ; Minimum TTL of 1 day

           IN NS ns1.jagged.net.
           IN NS ns2.jagged.net.

       1 IN PTR localhost.
    

   The "IN NS nsX.jagged.net." lines can be replaced by your dns server's hostname such as sun.jagged.net. or hellspawn.jagged.net. You can also put your ISP's nameserver as the secondary one.

   ***** TIP: The serial # must be changed every time you edit the file if you want your records to be correctly updated. You can also create serial number in the YYYYMMDDTTTT format (Year, Month, Date, Time: 199901210230 or 9901210230 ******

   Next,

       # pico db.207.243.159
    

 207.243.159 would be replaced by your actual IP address, not the full address only the first 3 #'s.

       @ IN SOA ns1.jagged.net. ns2.jagged.net. (
           1    ; Serial
           10800  ; Refresh after 3 hours
           3600  ; Retry after 1 hour
           604800 ; Expire after 1 week
           86400 ) ; Minimum TTL of 1 day

           IN NS ns1.jagged.net
           IN NS ns2.jagged.net.

       83   IN PTR jagged.net.
    

   This is the file where you will specify the reverse DNS for your internet IP address. In most cases you will not have reverse delegation over your IP (the ability to set this yourself), but you need to set it up anyways.

   The line,

       93  IN  PTR  jagged.net.
    

   is the actual line that specifies what this IP will reverse as, example:

       > nslookup 207.243.159.93
       Server: jagged.net
       Address: 207.243.159.93

       Name:  jagged.net
       Address: 207.243.159.93
    

   For a user with only a hostname such as sun.jagged.net you would just use

       93  IN  PTR  sun.jagged.net.
    

   Now comes the fun part, creating your hostnames!

       # pico db.jagged
    

   Where jagged is the name of YOUR actual domain or the hostname your ISP has set for you, i.e.: sparcstation.jagged.net. You may still use the db.jagged file for this but you must specify sparcstation.jagged.net in the /etc/named.conf file.

       @ IN SOA ns1.jagged.net. ns2.jagged.net. (
           1    ; Serial
           10800  ; Refresh after 3 hours
           3600  ; Retry after 1 hour
           604800 ; Expire after 1 week
           86400 ) ; Minimum TTL of 1 day

           IN NS ns1.jagged.net.
           IN NS ns2.jagged.net.

       localhost    IN A  127.0.0.1
       jagged.net.   IN A  207.243.159.93

       ns1       IN CNAME    jagged.net.
       ns2       IN CNAME    jagged.net.
       ftp       IN CNAME    jagged.net.
       mail      IN CNAME    jagged.net.
       www       IN CNAME    jagged.net.

       jagged.net.   IN MX  mail.jagged.net.
    

   Here is a brief explanation of what these lines mean.

       jagged.net.   IN A  207.243.159.93
    

   This is the forward lookup for the jagged.net domain.

       www  IN CNAME    jagged.net.
    

   This creates a "sub domain" or hostname off the root domain jagged.net.

   The "IN MX" feature of BIND can only be described using a scenario like the following.

   Imagine you are a network admin and your company needs a separate server just for email. Sure, no problem, but now people have to send email to foobar@mail.jagged.net. This isn't a problem but foobar@jagged.net looks much better to you and your boss so you do the following:

       jagged.net.   IN   MX   mail.jagged.net.
    

   Meaning the "Mail Exchange" jagged.net. points to mail.jagged.net. This command gets much more complicated so I will stop here.

   Now that all of your config files are ready you can now start the bind server.

       # /usr/local/sbin/named
    

   This starts the named server.

       ***** TIP: If you make changes to your db files just use the command
       killall -HUP named to reload your named server. ******
    

   Now you are ready to test out your named server for the first time. You might want to change /etc/resolv.conf so it points to your name server:

       domain JAGGeD.net
       nameserver 207.243.159.93
    

   Type nslookup and you should see something along the lines of:

       > nslookup
       Default Server: jagged.net
       Address: 207.243.159.93

       >
    

   If you don't see something close to this then something isn't configured right. Go back through the steps mentioned above and see if you typed something wrong.

   I hope you enjoyed the first edition of the DNS/Bind server startup guide and have found it useful. If you have ANY questions please feel free to join us in #FreeBSDHelp on the EfNet IRC servers.

Email Us

ghostrdr@defcon1.org

This site cannot be duplicated without permission

© 1998 - 2010 Defcon1, www.defcon1.org. Copyrights for all materials on this web site are held by the individual authors, artists, photographers or creators. Materials may not be reproduced or otherwise distributed without permission of www.defcon1.org and the content's original author.