If you Google for DNS and BIND, you will find many howto documents. The only difference when running a firewall is that you have to open port 53 on the firewall.
If you're using IPTABLES, for example:
Code:
#
# DNS - allow local queries on subnet 123.45.67.0
#
-A INPUT -p tcp -m tcp --dport 53 --syn -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp -s 123.45.67.0/24 --sport 53 -d 0/0 -j ACCEPT
-A INPUT -p tcp -m tcp -s 123.45.67.0/24 --sport 53 -d 0/0 --syn -j ACCEPT