Bind is a server process for DNS, the name named might be more familiar.
My DNS will forward to my ISP's DNS'es and cache the result. But it will also have configuration to ask the internet root servers if my ISP is not responding. Last but not least, my own domain will be in there.

You can download bind from The Internet Systems Consortium and currently has version 9.2.3.

For configuring i used ./configure -build=i586-pc-linux-gnu, and then juist make the thing.
Now, there is good news and bad news ... the good news is that we don't need any extra libraries, the bad news is, that even after stripping, the executable is about 1.3 MB.

For the installation, i copied the named executable to /usr/sbin. And a little start script, which i call /etc/init.d/rc3.d/30_start_dns:

echo Staring DNS server ...

Now you need the change the firewall, if you want to be able to receive answers for your DNS requests from internet. This is a good line for that:
iptables -A INPUT -i ppp0 -p udp --sport 53 -m state --state RELATED,ESTABILSHED -j ACCEPT
Here you use the connection tracker to see if the packet is ans answer to your question, and if it is, accept it. Ofcourse the DROP line should be behind this to drop the other traffic.

Now you need to configure your DNS, which is beyond the scope of this document.