How to configure bind9 to accept connections from other machines

Solution 1:

This line shows bind listening:

tcp 0 0 localhost.localdomain:domain : LISTEN

netstat is translating the port number (53) to the service name (domain), as determined by the file /etc/services. As you can see, however, it is only listening on the loopback interface - localhost - instead of all interfaces (* or 0.0.0.0).

You don't specify which distro you're running, so the next step is somewhat murky. You're looking for the primary bind config file named.conf. It could be in /etc, /etc/bind9/, /etc/named/, /var/named/chroot/etc/, or really anywhere. Once you find it, look for the option 'listen-on' and remove it completely. Restart named and it should now listen on all interfaces.

Solution 2:

Yes, bind is running. From your netstat output:

tcp        0      0 localhost.localdomain:domain *:*                     LISTEN

The "domain" service is port 53. The problem is that your bind daemon is only listening on localhost ( 127.0.0.1 ). You can change that behaviour on binds' config-file adding:

listen-on { any; };

( Check that there aren't any other listen-on lines on the file )

Solution 3:

Without seeing your BIND configuration file, I will take a shot in the dark and say you need to add/modify the listen-on directive(s) appropriately.

See http://www.zytrax.com/books/dns/ch7/hkpng.html or http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.ch06.html for more information.
I would also suggest picking up a copy of DNS and BIND from O'Reilly and reading it. It covers everything you ever wanted to know about DNS and BIND but were afraid to ask...