I have these fine set-top boxes here, that try to synchronize their time with some external NTP servers.
The names of the NTP servers are coded into the firmware and can not be changed in the network settings menu. They are called ntp1.technibutler.de, ntp2.technibutler.de and ntp3.technibutler.de. Though they are already Stratum 2 servers, I would rather use my own, local DCF77 radio clock. Obviously it makes no sense to contact some server in the wide internet to get information that is already available locally.
Luckily those servers are just used for time synchronization and nobody wants to get web pages from them or wants to send emails to them. So all that needs to be done is to redefine their address resolution in DNS.
In a first step, I configure my own DNS server. The example below are config files for bind9. Any other DNS server should work as well, just pretend that you are authorized to answer queries for the technibutler NTP servers. As long as there is no DNSSEC or secure NTP involved, everything is fine.
First I need to define the different zones. As there might be other services within the technibutler.de zone, that I still want to use, I will define an extra zone for each hostname of the NTP servers.
; $TTL 86400 @ IN SOA ntp1.technibutler.de. redefined-dns.alteholz.de. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS localhost. @ IN A 10.10.10.1
; $TTL 86400 @ IN SOA ntp2.technibutler.de. redefined-dns.alteholz.de. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS localhost. @ IN A 10.10.10.1
; $TTL 86400 @ IN SOA ntp3.technibutler.de. redefined-dns.alteholz.de. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS localhost. @ IN A 10.10.10.1
I store those configs in /etc/bind/redefined/db.ntp1.technibutler.de, /etc/bind/redefined/db.ntp3.technibutler.de and /etc/bind/redefined/db.ntp3.technibutler.de. The only IP address that is needed in these files are the actual IP address of my local NTP server. As I just have only one, all NTP servers from technibutler.de need to point to this address.
Now I have to tell bind that my zones are the master zone. This is done in /etc/bind/redefined/redefined-zones.conf:
zone "ntp1.technibutler.de" { type master; file "/etc/bind/redefined/db.ntp1.technibutler.de"; }; zone "ntp2.technibutler.de" { type master; file "/etc/bind/redefined/db.ntp2.technibutler.de"; }; zone "ntp3.technibutler.de" { type master; file "/etc/bind/redefined/db.ntp3.technibutler.de"; };
And last but not least I have to tell bind9 to load this config during startup. So I add a line:
include "/etc/bind/redefined/redefined-zones.conf";
at the beginning of /etc/bind/named.conf.local
And voila, before that configuration:
$ nslookup ntp1.technibutler.de Server: 10.10.10.254 Address: 10.10.10.254#53 Non-authoritative answer: Name: ntp1.technibutler.de Address: 62.138.2.9
and after that configuration:
$ nslookup ntp1.technibutler.de Server: 10.10.10.254 Address: 10.10.10.254#53 Non-authoritative answer: Name: ntp1.technibutler.de Address: 10.10.10.1
After the configuration of your DNS server is done, you just need to point the set-top boxes or any other device in your home network to your own DNS server. You can either deliver this information via “option domain-name-servers” with DHCP, or manually put your DNS server in the network settings of your device.