Reputation: 11
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.
Upvotes: 0
Views: 896
Reputation: 1372
I have no experience using bind9, but if you are searching for an option that does not require you to edit the DNS seeder source code then I would recommend using the generic-seeder app instead.
The generic-seeder is a clone of the original bitcoin-seeder app that aims to make it easy to run a seeder for virtually any blockchain network. The bitcoin-seeder was developed specifically for the bitcoin network only, and configuring it to work with a different blockchain network can be time-consuming and tedious at best. The generic-seeder overcomes this limitation by utilizing a configuration file that holds the data used to connect to a given blockchain, without having to edit the source code, and adds new features and a full setup tutorial as well.
Getting this set up from start to finish is covered in the setup guide linked below.
Github repo: https://github.com/team-exor/generic-seeder
Step-by-step setup guide: https://github.com/team-exor/generic-seeder/blob/master/SETUP.md
Full disclosure: I am the author of the generic-seeder.
Upvotes: 1