There are many reasons for BIND server not to work. BIND is quite old and stable open source project so if it doesn’t work it’s usually something related to configuration and less likely something due to the compilation, installation or bug in the package. Also, there are more than few uses of BIND server so configurations can vary from one use case to another.
Depending on Linux distribution you may install BIND with apt or yum. It’s also possible to compile and install BIND from the source, but it might be the more complicated option and is rarely better even if you know what are you doing. I remember I was doing it 10+ year ago.
There are more than few useful tools when checking if the installation and set up is proper.
named-checkconf is one of the first you’re going to fire to see if your configuration is valid. For example:
named-checkconf /etc/bind/named.conf
Then you might check your zone files with named-checkzone like this:
named-checkzone /etc/bind/zones/yourdomain.com.db
Those commands will check config files for syntax errors but won’t be able to detect misconfiguration and logical errors like when the syntax is correct but the server still doesn’t behave as you desire.
To check if the server is properly resolving your FQDN you can use dig command which is pretty standard on all Linux based systems:
dig somedomain.com
Try to test your domains with dig command from more than one physical server, or you can test zones propagation with some external service (there are quite a few – just use google to find them).
Finally, my last nightmare with BIND was on an Ubuntu server which already had it preinstalled and working. The problem was that the BIND was configured to operate only for localhost using allow-query directive, so it’s always good to inspect closely everything in named.conf.options file.
Good luck in chasing down the issues and let me know about your personal experience. Maybe it will help someone.