I’m currently working on an altcoin clone project and trying to setup the initial DNS seed nodes that are hard coded into the coin’s source. I’ve seen there are basically two common approaches to this problem. The first is to fork and customize bitcoin-seeder which I am also working on and the other option, which I’m asking for advice here, is to use Bind9 to return the DNS results. I understand that I need to create authoritative NS records with my registrar/dns provider and point that to a server where I have Bind9 installed. My distro of choice is Ubuntu 16.04 but if there is a superior option I’m open to suggestions.
What I’m having trouble finding information on is how I would actually setup the configuration files for Bind9 to achieve what is required for a seed node. From what I can tell it is resolving a list of A records to differ IPs for the same hostname that the NS record was created for. A working example of what I’m looking to recreate would be Bitcoin Green’s seed DNS seed1.savebitcoin.io
Here are the results I'm trying to recreate:
$ dig -t NS seed1.savebitcoin.io
; <<>> DiG 9.10.3-P4-Ubuntu <<>> -t NS seed1.savebitcoin.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18869
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;seed1.savebitcoin.io. IN NS
;; ANSWER SECTION:
seed1.savebitcoin.io. 60 IN NS .
;; Query time: 182 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Sun Sep 16 20:51:08 UTC 2018
;; MSG SIZE rcvd: 62
That part seems straight forward but creating these results is what I'm having trouble finding examples of:
$ nslookup seed1.savebitcoin.io
Server: 172.31.0.2
Address: 172.31.0.2#53
Non-authoritative answer:
Name: seed1.savebitcoin.io
Address: 140.82.37.220
Name: seed1.savebitcoin.io
Address: 140.82.56.246
Name: seed1.savebitcoin.io
Address: 144.217.180.204
Name: seed1.savebitcoin.io
Address: 159.65.68.90
Name: seed1.savebitcoin.io
Address: 165.227.92.165
Name: seed1.savebitcoin.io
Address: 173.249.45.133
Name: seed1.savebitcoin.io
Address: 207.148.6.53
Name: seed1.savebitcoin.io
Address: 207.148.30.90
Name: seed1.savebitcoin.io
Address: 217.163.29.197
Name: seed1.savebitcoin.io
Address: 37.221.194.104
Name: seed1.savebitcoin.io
Address: 45.76.125.224
Name: seed1.savebitcoin.io
Address: 45.76.190.205
Name: seed1.savebitcoin.io
Address: 45.77.140.29
Name: seed1.savebitcoin.io
Address: 45.77.240.10
Name: seed1.savebitcoin.io
Address: 54.37.30.248
Name: seed1.savebitcoin.io
Address: 80.211.66.187
Name: seed1.savebitcoin.io
Address: 94.237.68.209
Name: seed1.savebitcoin.io
Address: 94.237.68.215
Name: seed1.savebitcoin.io
Address: 94.237.68.236
Name: seed1.savebitcoin.io
Address: 94.237.69.39
Name: seed1.savebitcoin.io
Address: 104.236.60.11
Name: seed1.savebitcoin.io
Address: 108.61.173.171
Name: seed1.savebitcoin.io
Address: 139.99.43.36
Name: seed1.savebitcoin.io
Address: 139.99.195.2
Name: seed1.savebitcoin.io
Address: 140.82.24.39
Can anyone show an example of or point me to where I can learn about having the same hostname return a list of different IPs? Is this a round robin or is it something different? Any help on how I can achieve these results using Bind9 or perhaps another solution would be much appreciated.