Ulyssesonline

the tech surfer

  • Home
  • About
  • Archives
You are here: Home / General / How to Setup a DNS Server in Ubuntu

November 7, 2007

How to Setup a DNS Server in Ubuntu

Overview
Would you like to setup a DNS Server in Ubuntu? How about setting up a private internal domain name at home? Well, you’ve come to the right place. There are number of tutorials on the internet showing you how to setup a DNS Server with Ubuntu using Bind 9. So, why another how-to document? That’s a good question. I’ve decided I needed to write a simple tutorial that anyone with a little bit of Linux knowledge would be able to follow. In the process, I hope readers are also able to learn how DNS works. Ok, let’s jump right to it!

What is DNS?

First of all, let’s cover the basics. What is DNS? DNS stands for Domain Name Server. It’s a service that runs on a server that translates humanly recognizable domain names such as www.yahoo.com or www.google.com into its assigned IP addresses. If the DNS server does not recognize the domain name being requested, it will forward the domain name request to another DNS server and so on until the name is resolved.

A typical DNS request is when someone is accessing a website. Let’s use the www.yahoo.com domain as an example. When a user clicks a Yahoo link or types the Yahoo URL on the address bar of the browser, the DNS server processes the domain request. If it doesn’t find www.yahoo.com on its DNS table, it will forward the request to another DNS server with a higher authority and so on until it finds a server with the URL entry. The IP address information is then sent back to the user’s browser. If the domain name is not found, a “server not found” message is displayed on the browser.

Assumptions

Enough with the DNS background. Let’s now start configuring our own DNS server. Let’s assume that we have the following: we want to create a private internal domain name called mydomain.com, our private internal network is 192.168.0.x and our router and gateway is set at 192.168.0.1. Let’s assume all devices are going to be configured with static IP addresses. Normally, most computer systems nowadays are configured to automatically obtain IP addresses from the DHCP server/router. In this example, we will use static IP addresses to show how DNS works. Finally, we have 3 computers connected to our network:

  • Ubuntu Server, the DNS server – 192.168.0.9
  • Ubuntu Desktop – 192.168.0.10
  • PC – 192.168.0.11

Instructions

1. To install the DNS server, we need to install Bind 9.

sudo apt-get install bind9

sudo apt-get install bind9

2. Let’s configure Bind. We need to touch 5 files.

We will edit 3 files.

  • /etc/bind/named.conf.local
  • /etc/bind/named.conf.options
  • /etc/resolv.conf

We will create 2 files.

  • /etc/bind/zones/mydomain.com.db
  • /etc/bind/zones/rev.0.168.192.in-addr.arpa

A. First step. Lets add our domain zone – mydomain.com.

sudo vi /etc/bind/named.conf.local

sudo vi /etc/bind/named.conf.local

# Our domain zone
zone "mydomain.com" {
   type master;
   file "/etc/bind/zones/mydomain.com.db";
};
 
# For reverse DNS 
zone "0.168.192.in-addr.arpa" {
   type master;
   file "/etc/bind/zones/rev.0.168.192.in-addr.arpa";
};

# Our domain zone zone "mydomain.com" { type master; file "/etc/bind/zones/mydomain.com.db"; }; # For reverse DNS zone "0.168.192.in-addr.arpa" { type master; file "/etc/bind/zones/rev.0.168.192.in-addr.arpa"; };

Save file. Exit.

We just created a new domain. Please note: later we will create two files named mydomain.com.db and rev.0.168.192.in-addr.arpa files. Also, notice the reverse IP address sequence in the reverse DNS section.

B. Let’s add the DNS servers from your ISP. In my case, I’m using Comcast DNS servers. You can place the primary and secondary DNS servers here separated by semicolons.

sudo vi /etc/bind/named.conf.options

sudo vi /etc/bind/named.conf.options

forwarders {
   68.87.76.178;
};

forwarders { 68.87.76.178; };

Save file. Exit.

C. Now, let’s modify the resolv.conf file found in /etc and place the IP address of our DNS server which is set to 192.168.0.9.

$ sudo vi /etc/resolv.conf

$ sudo vi /etc/resolv.conf

search mydomain.com.
nameserver 192.168.0.9

search mydomain.com. nameserver 192.168.0.9

D. Now, let’s define the zones.

sudo mkdir /etc/bind/zones
sudo vi /etc/bind/zones/mydomain.com.db

sudo mkdir /etc/bind/zones sudo vi /etc/bind/zones/mydomain.com.db

$TTL 3D
@ IN SOA ns.mydomain.com. admin.mydomain.com. (
   2007062001
   28800
   3600
   604800
   38400
);
mydomain.com.  IN      NS         ns.mydomain.com.
ubuntudesktop  IN      A          192.168.0.10
www            IN      CNAME      ubuntudesktop
pc             IN      A          192.168.0.11
gw             IN      A          192.168.0.1
                       TXT        "Network Gateway"

$TTL 3D @ IN SOA ns.mydomain.com. admin.mydomain.com. ( 2007062001 28800 3600 604800 38400 ); mydomain.com. IN NS ns.mydomain.com. ubuntudesktop IN A 192.168.0.10 www IN CNAME ubuntudesktop pc IN A 192.168.0.11 gw IN A 192.168.0.1 TXT "Network Gateway"

The TTL or time to live is set for 3 days
The ns.mydomain.com nameserver is defined
ubuntudesktop, pc and gateway are entered as an A record
An alias of www is assigned to ubuntudesktop using CNAME

E. Let’s create a “rev.0.168.192.in-addr.arpa” file for reverse lookup.

sudo vi /etc/bind/zones/rev.0.168.192.in-addr.arpa

sudo vi /etc/bind/zones/rev.0.168.192.in-addr.arpa

$TTL 3D
@       IN      SOA     ns.mydomain.com. admin.mydomain.com. (
                2007062001
                28800
                604800
                604800
                86400
)
        IN      NS      ns.mydomain.com.
1       IN      PTR     gw.mydomain.com.
10      IN      PTR     ubuntudesktop.mydomain.com.
11      IN      PTR     pc.mydomain.com.

$TTL 3D @ IN SOA ns.mydomain.com. admin.mydomain.com. ( 2007062001 28800 604800 604800 86400 ) IN NS ns.mydomain.com. 1 IN PTR gw.mydomain.com. 10 IN PTR ubuntudesktop.mydomain.com. 11 IN PTR pc.mydomain.com.

3. Let’s restart Bind to activate our latest changes.

sudo /etc/init.d/bind9 restart

sudo /etc/init.d/bind9 restart

4. Finally, let’s test our new domain and DNS entries.

Dig

$ dig mydomain.com

$ dig mydomain.com

Nslookup

nslookup gw

nslookup gw

5. That’s it.

Filed Under: General, Linux Tagged With: bind9, DNS, domain name server, ubuntu

Comments

  1. todd says

    November 13, 2007 at 6:27 pm

    Thanks… after three other how to’s this one worked fof my setup. I was going crazy trying to figure out why my internal ip’s wouldn’t resolve.

  2. ulyssesr says

    November 13, 2007 at 10:33 pm

    Todd, I’m glad you found it useful.

  3. mark says

    November 27, 2007 at 4:09 pm

    Awesome HowTo, exactly what I was looking for. Thanks…

  4. blizzx says

    December 7, 2007 at 5:29 am

    Hey Ulyssesr!
    Nice work man!
    That was simple, clear and fast!
    Thank you for writing this!

  5. Daren says

    December 18, 2007 at 8:35 pm

    I just study Linux. And I want to know how to set up DNs, Mail Sever and Web Server in my Linux(Only one pc or labtop).
    Thanks for reply,..

  6. kay says

    January 11, 2008 at 9:48 am

    Great work.
    Liked it loads, easy to understand.
    I have a question though:
    I have about 10 windows work station and two linux boxes. i want to be able to refer to each PC or System with its name. Say, i want to be able to ping them by their names e.g instead of pinging a system with it’s IP address, i want to ping it with it’s name; like thing : ping PC-ubuntu-desktop instead of ping 192.168.0.20. How can i achieve this please.

  7. ulyssesr says

    January 11, 2008 at 2:08 pm

    Hi Kay,

    1. First, you will need to assign a static ip addresses to all your workstations. The last thing you need is a host with a different ip address each time you are connected to the network.

    2. Second, you need to enter several A records to your zone file, e.g. /etc/bind/zones/mydomain.com.db in this example.

    ubuntudesktop-1 IN A 192.168.0.11
    ubuntudesktop-2 IN A 192.168.0.12
    ubuntudesktop-3 IN A 192.168.0.13
    ubuntudesktop-4 IN A 192.168.0.14

    and so forth….

    3. For reverse lookup, make the appropriate entries to your reverse DNS file, rev.0.168.192.in-addr.arpa in this example. Here, we are making a reverse DNS entry for ubuntudesktop-1 at ip 192.168.0.11.

    11 IN PTR ubuntudesktop-1.mydomain.com.

    Don’t forget that period in the end of the domain.

    Hope that helps.

  8. Daniel says

    January 26, 2008 at 5:28 am

    Dear Ulysses,

    What do I need to do if I need to use the same DNS server for several subnets, such as:

    192.168.100.0 255.255.255.0
    192.168.110.0 255.255.255.0
    192.168.120.0 255.255.255.0

    Would it work if I made a separate reverse dns entry in named.conf.local for each subnet and create a separate file for each entry?

  9. ulyssesr says

    January 28, 2008 at 10:24 pm

    Yes, creating 3 reverse DNS entries in named.conf.local and making 3 separate reverse files in /etc/bind/zones/ should do the trick. Let me know how it goes.

  10. Daniel says

    January 28, 2008 at 11:35 pm

    I haven’t gotten it to work. The actual subnets I am using are:

    192.168.1.252 255.255.255.252
    192.168.20.0 255.255.255.0

    I have the Ubuntu Server 7.10 named GutsyServer at:

    192.168.1.254 255.255.255.252

    I have the Windows XP client named Client-B3 at:

    192.168.20.11 255.255.255.0

    I wonder if I named the reverse-dns files correctly. If I want to use just one reverse-dns file for a 192.168.0.0 255.255.0.0 network, could I just create a file named rev.168.192.in-addr.arpa. In the file I made reference to Client-B3 such:

    11.20 IN PTR Client-B3.Gutsy.org

    Is that the correct way to do it?

    I have tried using two separate reverse-dns files, one for 192.168.1.252 and one for 192.168.20.11, but I could not get it to work. In each file I stated the SOA. Is that correct? I wonder if that is the source of my error.

  11. Daniel says

    January 29, 2008 at 1:35 am

    I am able to do a tracert from Client-B3 to GutsyServer, but for some reason the browser will not work with the internet? It seems like internally the DNS server works, but will not work with the ISP’s DNS server? I made sure the forwarders are correct. Is there something else that needs to be configured?

  12. ulyssesr says

    February 3, 2008 at 9:49 am

    Daniel, I thought about this for a little bit. I haven’t use multiple multiple networks locally, much more use DNS across 2 or multiple networks. The rule is to always get your network working first. Make sure you can ping the DNS server from all the networks.

  13. Daniel says

    February 3, 2008 at 10:26 pm

    I have already gotten the network working. When I use Windows 2003 Server everything works smoothly. When I use Ubuntu as a DNS Server I am able to resolve dns names from the server itself, including http://www.microsoft.com. I checked it with nslookup. When I try to use nslookup from one of the clients that I’ve assigned to the DNS Server with the A command and the PTR command, I am successful. But when I do nslookup for http://www.microsoft.com from the client, I get a message saying that the query was denied. It seems that the ISP’s DNS servers are rejecting my DNS server’s request for a query when I do the request from a client. This is odd to me. I’ve looked at about a dozen tutorials. None of them address this issue. I wonder if there is something else involved rather than DNS, like perhaps ldap.

    In any case, thanks for the reply.

    Daniel

  14. prakash says

    February 26, 2008 at 3:39 am

    sir dns server is exalent but i want nis server

  15. Sabyasachi says

    March 10, 2008 at 2:59 pm

    I have a dns cache defined as “home”
    —————————————————
    $TTL 3D
    @ IN SOA ns1.home. admin.home. (

    2006081401
    28800
    3600
    604800
    38400
    );

    home. IN NS ns1.home.
    server1 IN A 192.168.1.3
    www IN CNAME server1
    ————————————————–
    and my reverse lookup is
    ————————————————–
    $TTL 3D
    @ IN SOA ns1.home. admin.home. (
    2006081401;
    28800;
    604800;
    604800;
    86400
    );

    IN NS ns1.home.
    3 IN PTR server1.home.
    ———————————————————
    I have just installed apache and havent touched its default config yet. When I type

    server1.home –> it works (apache default page)
    but, when I type

    home –> Works (apache default page)
    or
    server2.home — > Works (apache default page)

    Why?

    When I type any other canonical, like server3.home or server100.home, it doesnt work.

    I have cleared cache in firefox, but still result is the same. From where is it finding server2 or just home?

    I am a bit confused, any tip would help. Thanks.

  16. Mohammed says

    March 30, 2008 at 4:15 am

    I read the stuff about the ibuntu server and i think you did an excellent job.I have been for sometime now been working how to configure an ubuntu dns server.The stuff is very simple and i wish to say CONGRATULATIONS.I have learnt lots more from you.
    I want to know if you also do anything on configratioon of an ubuntu proxy server.
    Best wishes to you.You are just too wonderful.

    • Ty Peterson says

      November 14, 2009 at 5:55 am

      I found your blog on google and read a few of your other posts. Look forward to reading more from you in the future.

  17. Bryan says

    April 9, 2008 at 11:20 am

    Hi Ulysses,

    I liked your tutorial about setting up DNS for a local network and followed directions to try and set up mine. Apparently I overlooked that it was for a local network so after a day of trying (and not getting it to work) I woke up the next day and realized I may need a tutorial for a web server rather than a local network. Duh! So, do you have a tutorial to set up DNS for a web server? If not can you point me one? I am trying to set up Apache on ubuntu on a server at home and want to handle my own DNS. I have a few towers and am wondering if I should setup DNS on the same tower I have my www files/Apache on, or set DNS up on a seperate tower? I have 5 static IP addresses I can use.

    Thanks Ulysses!!

  18. dizi izle says

    April 15, 2008 at 8:51 am

    thanks you..

  19. Rahul Hulawale says

    April 17, 2008 at 2:24 am

    Ya hurre
    But can you tell me that how to add the ubuntu clients in the dns and how to add the windows machines in this domain e.g. mydomain.com

  20. gnu says

    April 26, 2008 at 6:28 pm

    hey

  21. gnu says

    April 26, 2008 at 6:30 pm

    I was wondering if i set up a dns server from home do i not need to register my domain name? or if can it work as a redirect service for people trying to access my site externally?

  22. byteslash says

    August 6, 2008 at 12:34 am

    dude, this is wonderfull im so glad and thankful that u wrote this. it worked perfectly.

    thanx a lot once again,

    take care

  23. Ed says

    August 8, 2008 at 6:24 pm

    nslookup mydomain.com

    doesn’t provide an IP address with this setup.

  24. ph33d says

    August 13, 2008 at 3:27 am

    If I was to have a purchased domain : thisdomain.com and had it point to my home static IP address, would this work as a real host. Assuming I have apache installed and the firewall configured properly.

  25. baoan says

    September 4, 2008 at 8:46 am

    Hello there,

    I have a question that maybe someone can help me. I try to setup a server (Ubuntu 8.04) to be mail, ftp, www, dns, dhcp server. The Linux Box has 2Networks card, one for ISP with public STatic IP :

    ETH1 : (ISP)
    eth1 IP : 216.12.37.88
    Subnet : 255.255.255.237
    gateway : 216.12.37.80

    DNS : 206.181.2.8
    206.181.2.9

    ETH0 : (Internal)
    eth0 IP : 10.10.8.1
    subnet : 255.255.255.0
    gateway : 216.12.37.88

    DNS : 10.10.8.1

    Any idea to setup DNS and DHCP server, i don’t know nothing for now about Linux, i’m studying now.

    Thank’s

  26. dizi izle says

    September 12, 2008 at 8:42 am

    If I was to have a purchased domain : thisdomain.com and had it point to my home static IP address, would this work as a real host. Assuming I have apache installed and the firewall configured properly.

  27. normy says

    September 17, 2008 at 5:58 am

    that’s is interesting me, too… please help us
    how to configure ubuntu as dns and webserver ???

  28. Pablo says

    September 19, 2008 at 10:19 am

    great tutorial, just in the point, clear and soft, thanks

  29. floating away says

    October 13, 2008 at 1:28 pm

    hi ulysses.
    I just want to make a simple thing. I’m really new to Linux.

    I got a static ipaddress in my dormitory. Here is what I got from TCP/IP properties on my windows.
    IP address 129.125.101.82
    subnest mask 255.255.0.0
    default gateway 129.125.101.251

    preferred DNS server: 129.125.36.9
    alternate DNS server: 129.125.4.13

    I have changed the third one (IP address, sbnt mask and gatwy) through this command sudo vi /etc/network/interfaces

    now, how can I put the 129.125.36.9 on my ubuntu? where should I put it?

    Really thanks

  30. SB says

    October 14, 2008 at 1:25 am

    The author doesn’t seem to followup any more.

  31. AT says

    October 15, 2008 at 8:10 am

    floating away:

    edit your /etc/resolv.conf file

    nameserver 129.125.36.9
    nameserver 129.125.4.13

    hope that helps.

  32. pornoizleara says

    October 18, 2008 at 3:12 pm

    thanks

  33. Brock says

    November 16, 2008 at 9:10 pm

    wonderful – very helpful – thanks!

  34. Mike says

    November 18, 2008 at 12:01 pm

    Thanks for the post, very straightforward – to the point. I’m in the process of setting up name servers for the first time and this is a big help – setting up a private system to play with. It’s great.

  35. dizi izle says

    December 5, 2008 at 2:46 pm

    thanks

  36. Daniel says

    February 4, 2009 at 5:15 am

    I found this very useful. Now I want to take this one step further by setting up a load of forward aliases (for HTTP headers) to be used setup a number of IIS (web) sites on the same server which happens to be a KVM machine running win2003. so if my domain was “test.com” should I able to ping ssp or mysite or team and if so what would be their qualified names.. I have tried to ping
    ssp.win2003-01.test.com and it times out where as win2003-01.test.com is ok

    win2003-01 IN A 192.168.1.110
    www IN CNAME win2003-01
    ssp IN CNAME win2003-01
    Mysite IN CNAME win2003-01
    team IN CNAME win2003-01

    Thanks in advance

    • ulyssesr says

      February 4, 2009 at 10:39 am

      Daniel,

      Have you tried this format instead of an ip address?

      `subdomain1 IN CNAME domain.com`

      or

      `ssp IN CNAME win2003-01.test.com`

      It’s worth a try.

      • Daniel says

        February 18, 2009 at 6:37 am

        Thanks for your help. In the end I just changed the order of the DNS servers and this worked. I think this article could do with an example windows client TCP/IP configuration which ensures I can resolve my local machine/aliases addresses as well as all my other www adresses.

        Also I guess we need to automatically start bind9 automatically on server power up. Have you done this?

        Regards

        Daniel

  37. Gerry says

    March 13, 2009 at 11:18 am

    Would have been great if the following had been explained instead of just saying here it is, use it:

    “0.168.192.in-addr.arpa”

    @ IN SOA ns.mydomain.com. admin.mydomain.com. (
    2007062001
    28800
    3600
    604800
    38400
    );
    mydomain.com. IN NS ns.mydomain.com.
    ubuntudesktop IN A 192.168.0.10
    www IN CNAME ubuntudesktop
    pc IN A 192.168.0.11
    gw IN A 192.168.0.1
    TXT “Network Gateway”

    Unfortunately I didn’t learn anything from the tutorial except how to copy and paste 🙁

  38. smakke says

    April 27, 2009 at 11:37 pm

    Check this tutorial it explains some details better,

    http://www.ubuntugeek.com/dns-server-setup-using-bind-in-ubuntu.html

  39. Adolfo says

    June 12, 2009 at 3:55 am

    It can’t be told clearer, I’ve configured from scratch my DNS in 15 minutes.

    Thank you very much!!!

    • ulyssesr says

      June 12, 2009 at 10:17 am

      I’m glad that worked for you. 🙂

  40. server support says

    June 29, 2009 at 11:40 pm

    Being on Linode, the service offers its own DNS server, and I know that many web hosts, VPS, and dedicated server companies also do the same. However there are real benefits in running your own DNS server, with editing speed and ease of use being one of them. Although for full disclosure I have decided to use Linode’s DNS service to reduce load on my own server. Nonetheless, this guide will go through the relatively simple process of setting up a DNS server in Ubuntu Linux.

    The first thing one needs to do is to install Bind. Bind is a file based DNS server that is pretty simple to use once you understand it; however there are multiple files to edit. When installed using sudo apt-get install bind9 a default configuration file is created for you as well.

    The second step is to update the /etc/bind/named.conf.local configuration file to add our zone. Our zone specifies what domains this DNS server is responsible for. For this tutorial I will use example.com as the sample domain. Therefore in name.conf.local you will add both the zone definition as well as the reverse DNS entry for your IP. They should be written as:

    zone “example.com” in {
    type master;
    file “/etc/bind/zones/example.com.db”;
    allow-transfer { any;};
    };

    zone “1.0.168.192.in-addr.arpa” {
    type master;
    file “/etc/bind/zones/1.0.168.192.db”;
    };

    Please remember to replace example.com with your real domain name and 192.168.0.1 (written in reverse) with your real IP address.

    The third, and optional step, is to configure some default DNS server options. The file used to do this is /etc/bind/named.conf.options The main settings that ought to be of interest are: forwarders, notify, and directory. Forwarders specify which DNS server should be used when your DNS server is queried for a domain that it is not responsible for. Notify specifies whether slave DNS servers should be notified of changes when they are made on this server. Directory specifies where DNS configuration files should be looked for if a full file parameter is not used in our zone entries in step two. Samples of three options are:

    forwarders { 208.67.222.222; 208.67.222.220; }
    notify { yes; }
    directory { “/dns/zones”; }

    The fourth step in our Ubuntu DNS server setup is creating our zone file. I am assuming that you did not specify a custom zone directory like the options example above. Therefore you will want to create your zone files in the folder /etc/bind/zones by just creating example.com.db and filling it with entries such as:

    // TTL = Time to live for records on slave (2 days)
    // 2009030700 = Serial for Bind to check whether an update has occured
    // 6H = Time between refresh requests
    // 1H = Time between retry attempts
    // 1W = Expiry time for the record on slave
    // 1D = Amount of time an invalid response is stored on slave
    $TTL 2D
    @ IN SOA ns1.example.com. root.example.com. (
    2009030700
    6H
    1H
    1W
    1D
    )

    // ns1.example.com. = Name server
    // mail.example.com. = Mail server
    // http://www.example.com. = HTTP server
    // *.example.com. = Wildcard entry
    example.com. IN NS ns1.example.com.
    example.com. IN MX 10 mail.example.com.
    ns1 IN A 192.168.0.1
    www IN A 192.168.0.1
    mail IN A 192.168.0.1
    * IN A 192.168.0.1

    The above zone definition file sets some basic servers and points them to the computer with the IP address 192.168.0.1. You can host each service on a different IP if they are on different servers. You can also point to other name servers by using CNAME instead of A records. Please note that all domain names end with a “.”.

    While a reverse DNS zone file is optional, for things like mail servers if a reverse entry is not available it can be flagged as a possible spam server. So it is good practice to do it. For our example zone file the reverse would be in the file 1.0.168.192.db and look like:

    // TTL = Time to live for records on slave (2 days)
    // 2009030700 = Serial for Bind to check whether an update has occured
    // 6H = Time between refresh requests
    // 1H = Time between retry attempts
    // 1W = Expiry time for the record on slave
    // 1D = Amount of time an invalid response is stored on slave
    $TTL 2D
    @ IN SOA ns1.example.com. root.example.com. (
    2009030700
    6H
    1H
    1W
    1D
    )

    IN NS ns1.example.com.
    1 IN PTR example.com.

    After the files have been created restart bind through the command /etc/init.d/bind9 restart and using the command dig @192.168.0.1 http://www.example.com to use your own DNS server to query the record http://www.example.com. If an answer is given (should look like your entry for www in the example.com.db file) then everything is set up correctly. You should now update your domain name registar’s DNS records to point to your server.

  41. michelle says

    July 28, 2009 at 9:39 pm

    so awesome!

  42. robert says

    August 16, 2009 at 3:21 pm

    excellent! I’ll have to read up more to see how this all works, but I got a dns configured in 15 minutes.

    • ulyssesr says

      August 17, 2009 at 12:01 pm

      I’m glad it worked for you. DNS was a total mystery to me until I started digging for information. I’m glad I was able to help.

  43. Gary says

    October 2, 2009 at 12:34 pm

    Thanks a lot man!!

  44. Dennis says

    October 10, 2009 at 10:47 am

    Instructions are clear and easy to follow. I set this up relatively quickly and am able to resolve by using the dns name setup in the config files. I dropped the firewall and added the linux IP to my Windows system dns entry under the network config. I’m trying to use the dns server on my windows box now but cant resolve unless I use the entire domain name. On my linux box I can ping gw but on my Windows box I have to ping gw.example.com in order for it to resolve. If I ping gw from my windows box it does not resolve. Does anyone know of an additional step needed to use the dns on all local computers without having to type in the entire domain name? Thanks in advance.

    • ulyssesr says

      October 15, 2009 at 9:08 pm

      Dennis, The only thing I can recommend is to make sure your Windows clients are pointing to your internal DNS. The other thing I did was added this: ‘domain.com. IN A xxx.xxx.xxx.xxx’ in the zone file. Just replace the xxx with your ip address.

  45. log holder says

    December 14, 2009 at 8:42 pm

    Nice job on your website here. I too am attempting to build a site for my small home construction business. Its a long story, but I’m not very good at this techy stuff. I like the site theme you have used here and was wondering what it was named? I bought Brian Gardner’s theme but just gave up. I want to supplement my bills in the winter time and thought I could do it. Its a long road ahead. Anyway, I just stumbled across your article here and am glad to have met you. virtually of course :-).

    • ulyssesr says

      December 15, 2009 at 9:59 am

      It’s the Lust theme from the 7 Deadly Series of Themes of wpdesigner.

  46. Hakan Can says

    January 18, 2010 at 8:18 pm

    Super site. Thx! 🙂

  47. demopoly says

    January 23, 2010 at 11:14 pm

    Hey! Thanks for not obeying standard practices, posting any warnings, or stating which systems versions you’re using.

    My computer, ubuntu 9.10, no longer goes online after following these instructions. It’s offline totally. Thanks, bud.

    TO ALL USERS: Use Webmin. I’ve been able to ‘mostly’ repair my system and set things back to defaults using webmin. I should have used webmin in the first place before taking advice from self-declared ‘guru’s.

  48. jzacsh says

    January 26, 2010 at 5:40 pm

    Hi,

    Do you know how to make sure there’s nothing wrong with the DNS settings on an Ubuntu client? I have Optimum Online as my ISP and I keep getting, what looks to me like, DNS errors:
    http://domainnotfound.optimum.net/cablevassistctxt/dnsassist/main.iscx?ycmredirected=true&domain=google.com

    I’ve never gotten a ‘domain not found’ like that on any operating system, when trying to resolve major domains. (its happening with a lot of sites, too.)

    • ulyssesr says

      January 27, 2010 at 1:22 pm

      Jzaksh,

      It sounds like your DNS server is not forwarding to your ISP DNS servers. Check your resolv.conf configuration file.

      • jzacsh says

        January 27, 2010 at 2:20 pm

        Hey, thanks for the reply 🙂

        My resolv.conf is (as expected) built automatically:
        $ sudo less /etc/resolv.conf
        # Generated by NetworkManager
        domain 532
        search 532
        nameserver 192.168.0.1

        ^ that nameserver 0.1 is the address of the router. 532 is the LAN’s SSID. Any pointers? I would think that’s right (not only because its automated) because the request should just be passed on to the nearest authority (the router), right?

  49. ulyssesr says

    January 28, 2010 at 5:51 pm

    SSID? Did you mean your internal domain name? A typical entry would be:

    domain yourdomain.com
    search yourdomain.com

    • jzacsh says

      January 28, 2010 at 9:07 pm

      Hey, I’m going to start a thread on unix.com and stop abusing your comments area – sorry 🙁

      To answer your question, this is on a laptop (not a server) in a home network (not a business), so there’s no domain (no name servers or anything in this house). The whole network is setup fairly close to the defaults of our Dlink router. If you have any suggestions what I could look up to give me a lead, that’d be awesome! (ps, great article, I’m going to set up a domain just for kicks pretty soon)

      • ulyssesr says

        January 29, 2010 at 8:39 am

        Abuse is never good. : )

  50. Gson says

    June 8, 2010 at 1:46 am

    I think am stuck here, how come u get to configure you DNS over static IP? Secondly, am trying to set up one on with DHCP but can’t get it to work. I can’t even ping with the hostname. I need your help here.
    Do reply.

  51. Virgil_Machine says

    August 16, 2010 at 8:21 am

    Step 2.B.: how do I find the addresses of the comcast primary and secondary dns servers?

    • Ulysses says

      August 17, 2010 at 1:28 am

      A quick search in Google solves that problem.

  52. Virgil_Machine says

    August 17, 2010 at 6:27 pm

    Ulysses, thank you. I found them via google (didn’t expect it to be that easy), and discovered that they’re also in my router (linksys WRT54G) on the status tab.

    • Ulysses says

      August 21, 2010 at 5:04 pm

      Glad to help.

  53. Brett says

    September 9, 2010 at 3:26 am

    Hi Ulysses,

    I’ve got bind up and working thanks to your tutorial.
    I don’t know if it’s possible but can I define a single host that is not part of my domain?

    I’ve got a .no-ip.org domain name which I can’t access local due to anti-spoofing on my firewall, so I would like my bind server to anwser a query for the no-ip.org address with the equivalent local ip.

    Does that make an sense?

    Regards,
    Brett

    • Ulysses says

      September 9, 2010 at 6:39 am

      I’m not really sure what you meant. Would you care re-phrasing the question.

      • Brett says

        September 9, 2010 at 9:23 am

        Ok,

        I have a “home” domain, lets say mydomain.com that I have bind setup and working for.

        I also have a legitimate domain myhost.no-ip.org (free D-DNS service) which allows me to access my server externally without needing a fixed ip address, this all works fine.
        However if I try to reach myhost.no-ip.org (external ip address) from my home network my router basically denies the request as it thinks it’s spoofed.

        What I would like is my local DNS to respond with the internal address (192.168.0.x) when I lookup myhost.no-ip.org from my home network rather than the authortative address from no-ip.org (external address), I suppose for my local DNS server to respond with a local ip instead of forwarding the request even though the domain name is different.

        Any clearer?

        Thanks,
        Brett

        • Ulysses says

          September 9, 2010 at 11:18 pm

          Thanks for the clarification. Yes, it makes a whole lot of sense now. You can try several things. The first one is probably the easiest. #1 You can add myhost.no-ip.org to your hosts file. For example, if your server is 192.168.0.10, then you would add ‘192.168.0.10 myhost.no-ip.org’ to your hosts file. #2 You can add a second domain to your local DNS. It’s similar setup to how you did mydomain.com. One last thing, make sure your resolv.conf is pointing your local DNS. It’s 192.168.0.9 in my example above.

  54. Brett says

    September 10, 2010 at 2:59 am

    Hi Ulysses,

    I’m avoiding the hosts file option as i would need to change it whenever I took my laptop out of the house…

    I did try adding no-ip.org to named.config.local which worked, however I don’t really want a “fake” master as I then can’t resolve any other no-ip.org addresses, or am I missing a trick here?

    Thanks again,
    Brett

  55. VJ says

    September 13, 2010 at 3:33 pm

    Hi Ulysses,

    I followed exact steps but bind9 process failing to start.
    Could you please help me on this?

    Thanks in advance
    Vj

  56. Dips says

    November 20, 2010 at 9:18 am

    Hi,

    I am getting following error.

    please help me.

    #dig pc.mydomain.com

    ; <> DiG 9.7.0-P1 <> pc.mydomain.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 10185
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

    ;; QUESTION SECTION:
    ;pc.mydomain.com. IN A

    ;; Query time: 0 msec
    ;; SERVER: 172.16.16.109#53(172.16.16.109)
    ;; WHEN: Sat Nov 20 21:45:50 2010
    ;; MSG SIZE rcvd: 33

  57. Dips says

    November 20, 2010 at 11:17 am

    Hi,

    I am getting following error.

    please help me.

    zone mydomain.com/IN: NS ‘ns.mydomain.com’ has no address records (A or AAAA)
    zone mydomain.com/IN: not loaded due to errors.

  58. Cunnigham says

    December 10, 2010 at 6:58 pm

    Great info. They must be something good. Thanks

  59. shufil says

    January 6, 2011 at 12:15 am

    when i perform sudo /etc/init.d/bind9 restart
    command am getting an error , etc/default/bind9: 5: Syntax error: Unterminated quoted string

  60. shufil says

    January 6, 2011 at 12:15 am

    when i perform sudo /etc/init.d/bind9 restart
    command am getting an error , etc/default/bind9: 5: Syntax error: Unterminated quoted string

    • Ulysses says

      January 6, 2011 at 3:26 pm

      I would check the config files. Look for entries involving quotes that needs to be closed/terminated. You just have a missing end quote. That’s all.

  61. Andrew J. Leer says

    January 11, 2011 at 8:20 am

    @Ulysses Yeah that’s definitely the most compact, straight-forward, tutorial on setting up bind that I’ve ever read.

    That said there were a few more steps need to get both the Linux and Windows machines running on my network, you can see the successful results of that endeavor over at: http://serverfault.com/questions/220974/bind9-dns-ubuntu-names-pingible-on-server-but-not-on-windows-machines

    (Basically the question’s answer in the link above handles the Windows Advanced TCP/IP settings side of things.)

  62. Ulysses says

    January 16, 2011 at 3:08 am

    Hi Andrew, thanks for sharing the solution. When you ping, do you use the host name only or the fully qualified domain name? Just curious. It looks like adding the DNS entry in Windows fixes that issue.

  63. Erik says

    February 20, 2011 at 10:38 am

    Thank you for this very concise and helpful information. This is sooo exactly what I was looking for I can’t even explain it. The one thing I had to figure out was to replace ‘ns’ in a few places with the hostname I’d given the server hosting the DNS server.

  64. Ed says

    February 20, 2011 at 4:05 pm

    No luck,
    trying this on Ubuntu server 10.10, and it doesn’t work. I’ve actually copied the examples straight from the site just for the heck of it to see if I could get it to work using your example.

    Nslookup and DIG both give me SERVFAIL results.

  65. Ed says

    February 20, 2011 at 4:15 pm

    The odd part is that I’ve been able to empty out my resolve.conf and named.conf.options file completely and outside DNS requests still work (despite restarting bind). How is it getting that information?

    For giggles I’m restarting the server… very odd.

  66. Ed says

    February 20, 2011 at 4:35 pm

    Even weirder.. Reverse lookup works… but forward lookup doesn’t. I used named-checkzone and both of the zone files are happy. Not sure why this is failing.

  67. Ed says

    February 20, 2011 at 4:57 pm

    Now I’ve got reverse lookup fully working, however the best I can get for forward lookup is an “NXDOMAIN” status in DIG (which is a step up from SERVFAIL from before).

  68. Ed says

    February 20, 2011 at 5:03 pm

    Correction… and this is really odd. I had fatfingered my resolv.conf file to use my router’s IP address (gateway). With this set up… forward lookups were in a an NXDOMAIN state, and reverse lookups were in an NOERROR state. Correcting it to the DNS server address of 192.168.1.200 has now put it back in a SERVFAIL state. For the hell of it, I’ve completely unplugged any external source just to see if I can get this working as a private setup without any forwarding.

  69. Soccer Predictions says

    March 3, 2011 at 8:02 am

    Thanks, i tried this and really works for me. Great post

  70. sarmad says

    March 15, 2011 at 12:43 am

    Hi Ulysses, thanks a lot for this very good tutorial. But I am stuck somewhere at the Comcast IP. Suppose I only want a local connection between my server and another terminal laptop and I want to use the default domain (mydomain.com). I have a wireless router whose control panel is activated by http://192.168.1.1 and this router has already given two IP addresses to my server and my other laptop (server 192.168.1.101) the other laptop was given (192.168.1.100). I imagine that after the setup has completed I would be able to open the website (mydomain.com) hosted on my server from the other machine.
    I would be so grateful if you would be able to explain for me what to do in terms of IP addresses and any other thing. Much thanks

  71. Ulysses says

    March 15, 2011 at 1:17 am

    I hope I’m able to answer your question correctly. You would like to be able to connect to any desktop, laptop or server on your local network using a hostname or a fully qualified domain name. To do this you need to point the DNS entry of each machine to your DNS server. In this example, let’s assume your DNS server is 192.168.1.10. Typically, the DNS entries point to your router, 192.168.1.1. If you make that change to every machine on your network, you should be able to resolve a hostname in your local network as well as the internet, assuming your DNS server is routing properly.

  72. sarmad says

    March 15, 2011 at 3:04 am

    Thanks for your reply. Let us suppose that I am at the stage of

    sudo vi /etc/bind/named.conf.options

    forwarders {
    68.87.76.178;
    };

    what IP address I should put instead of 68.87.76.178 (because this is not my ISP address). Did you mean that I should put 192.168.1.10 instead? How to point the DNS entry of each machine to my DNS server- can u please explain practically how to do this. My assumed server IP is 192.168.1.101 and my other terminal laptop is 192.168.1.100.

    Assume also that I am going to put a web page hosted on my server so that it can be reached from my terminal just by writing the domain name mydomain.com

    Your help is very much appreciated as I am still very new in this field, very interested in learning.

  73. Ulysses says

    March 15, 2011 at 3:42 am

    The forwarders should be the DNS server of your ISP. To resolve your local domain, you need to change the network settings of your terminal laptop to use 192.168.1.101 as DNS instead of 192.168.1.1.

    In Windows, you need to go to Control Panels, Network Connections, Properties, TCP/IP and then enter 192.168.1.101 as your DNS.

    I hope that makes sense.

  74. sarmad says

    March 15, 2011 at 8:33 am

    I thought that you might help me better if I explain my environment settings. I have two laptops and I am intending to make one of them as a server for learning purposes. My router has given the server the IP 192.168.1.100 and the other was given the IP 192.168.1.101. I am intending to make the first one as the server. The router IP is 192.168.1.1 . As I am still new in this field, I was totally confused on the number of parameter used on your tutorial. I am especially confused about the IP to use for the DNS server. Suppose I am not able to get the static IP; will it be possible to use the local IP(s) mentioned in this message?. And then what IP should be used in the forwarder. My Terminal shows the prompt

    sarmad@sarmad-HP-G61-Notebook-PC:~$

    I would be so grateful if you reformulate your tutorial in view of my environment settings to enable me to build the local domain mydomain.com

  75. Ulysses says

    March 15, 2011 at 8:52 am

    If your DNS server is 192.168.1.100, then you need to change the DNS network setting on your laptop to point to 192.168.1.100. Simple.

  76. Seg says

    March 19, 2011 at 11:09 am

    Had same problem but all I did is restart the bind9 process anyway and that was all. I used the line below:

    $ sudo service bind9 restart

    To explicitly confirm bind9 is running, use this line:

    $ service bind9 status

  77. sarmad says

    March 19, 2011 at 12:28 pm

    Thanks a lot for all. I could reinstall Bind again and no problem with it now. Now I installed apache22 on a Windows 7 and and I created a testing site on a folder I called c:\mysites and a server name I called it site1.local. And all the necessary setting I have done in the httpd.conf file. I also tweaked the hosts file inside Windows 7. I am intending to request the name http://site1.local from my other laptop browser (Ubuntu 10.10) but I am not succeeding. I am getting the error (Forbidden

    You don’t have permission to access / on this server) please note that I also opened port 80.

  78. Pariuri Online says

    March 20, 2011 at 5:24 am

    I had a problem with the setup until i deleted the cache, after that everything worked ok

  79. sharad says

    July 6, 2011 at 2:36 am

    i m getting following error-

    sudo /etc/init.d/bind9 restart
    * Stopping domain name service…bind9 rndc: connect failed: 127.0.0.1#953: connection refused

  80. Ganixra says

    July 24, 2011 at 12:19 pm

    Whenever i am trying this domain name system for my ubuntu system. it is not running. is any additional configuration or packages need to config dns. now i m using ubuntu 10.10. please help me..

  81. Art says

    August 26, 2011 at 8:40 pm

    I’m having the same problem.

  82. Andrew says

    September 12, 2011 at 2:19 pm

    This seems kinda pointless. To quote yourself ..
    “Let’s assume all devices are going to be configured with static IP addresses. Normally, most computer systems nowadays are configured to automatically obtain IP addresses from the DHCP server/router. ”

    Why give an example that is not applicable to “most computer systems nowadays”?

    • Ulysses says

      September 13, 2011 at 10:00 am

      I think you are confusing DHCP which automatically assigns IP addresses to computers vs DNS which makes server names stick that’s accessible from any computer in the same network. That’s what we are after here. We want DNS to work internally as well as forward outside of the internal domain.

Trackbacks

  1. Como montar un servidor DNS en Ubuntu 8.04 LTS « TELEMATICA says:
    September 19, 2008 at 9:11 am

    […] Como montar un servidor DNS en Ubuntu 8.04 LTS Este servidor se monto en una maquina virtal VMWare server, corriendo tanto como host y como guest Ubuntu 8.04 LTS, y se hizo siguiendo la siguiente pagina […]

  2. DNS Server on Ubuntu « Bright Star Blogs says:
    February 16, 2009 at 12:34 am

    […] http://idzole32onthenet.wordpress.com/2008/08/06/dns-server-pada-ubuntu-server-71/ http://ulyssesonline.com/2007/11/07/how-to-setup-a-dns-server-in-ubuntu/ http://slackerbox.com/node/334 […]

  3. ØáÈ ÇáãÑÌæ ÇáãÓÇÚÏÉ Ýí Ïæãíä äíã nds - ãÌÊãÚ áíäæßÓ ÇáÚÑÈí says:
    August 9, 2009 at 12:46 pm

    […] […]

  4. Tips for bind setup on ubuntu linux says:
    July 4, 2011 at 11:14 pm

    […] This one on ulyssesonline (http://ulyssesonline.com/2007/11/07/how-to-setup-a-dns-server-in-ubuntu/) […]

  5. Setup DNS Server in Ubuntu | TurboLinux Blog says:
    August 4, 2011 at 5:26 am

    […] Here is a good tutorial show you how to Setup DNS Server in Ubuntu: Would you like to setup a DNS Server in Ubuntu? How about setting up a private internal domain name at home? Well, you’ve come to the right place. There are number of tutorials on the internet showing you how to setup a DNS Server with Ubuntu using Bind 9. So, why another how-to document? That’s a good question. I’ve decided I needed to write a simple tutorial that anyone with a little bit of Linux knowledge would be able to follow. In the process, I hope readers are also able to learn how DNS works. Ok, let’s jump right to it! […]

  6. bind9 DNS Ubuntu names pingible on server, but not on Windows Machines? - Admins Goodies says:
    August 13, 2011 at 1:47 am

    […] setup a DNS server today on Ubuntu, following this tutorial. My intent was to setup my network for dns-name resolving on the private LAN within a single zone […]

Copyright © 2003 - 2018