So today I’ve been asked to provide a POC for a 3CX Phone System installation at a small site of 5-10 users. As part of this installation i was asked if i could re-use some old CISCO 7941 IP Phones. These phones are only partially supported by the 3CX system and required some DNS trickery to get there NTP working as the client no longer had a CISCO support contact to download the correct firmware files.
The Cisco phones will automatically try and go to http://pool.ntp.org for NTP however for the POC the phones will be on a none internet connected VLAN, to overcome this problem i installed an NTP and DNS server on the 3CX server and set it to return the 3CX server IP for any DNS requests
I installed BIND for Windows from:
https://www.isc.org/downloads/
I then created a service account for this to run called “named”, allowed it to log on as a service and then configured bind using named.conf as follows
options { # If DNS should only listen to a specific interface multiple interfaces # define it here, # remove the comment sign and set the IP Address of the interface # listen-on { x.x.x.x;}; listen-on-v6 {none;}; allow-query {any;}; directory "C:\Program Files\Bind\etc"; disable-empty-zone yes; allow-recursion {"none";}; additional-from-cache no; recursion no; }; zone "." { type master; file "db.redirectallhosts"; };
I then created a zone file db.redirectallhosts to return the single IP required in this configuration:
$TTL 30 ;30 sec ; Use a short TTLbecause the client caches ; these the queried names for that time without ; query the DNS Server again @ IN SOA ns.yourdomain.local. hostmaster.yourdomain.local. ( 2015072200 ; serialnumber of zone, increment it on any changes 240 ; refresh (4min) 120 ; retry (2 min) 900 ; expire (15 minutes) 300 ; minimum (5 minutes) ) ; IP of your Nameserver IN NS x.x.x.x ; IP to redirect * IN A x.x.x.x
Now start the BIND service as preform an NSlookup, you will find that any request will now return the same IP specified in the db* file.
If you have any issues starting the BIND service check the local event log and ensure that the service account has write permissions to the \etc directory.