-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit b1f78fd
Showing
22 changed files
with
6,251 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
*.o | ||
dnsseed* | ||
dnsstats.log |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
CXXFLAGS = -O3 -g0 -march=native | ||
LDFLAGS = $(CXXFLAGS) | ||
|
||
dnsseed: dns.o bitcoin.o netbase.o protocol.o db.o main.o util.o | ||
g++ -pthread $(LDFLAGS) -o dnsseed dns.o bitcoin.o netbase.o protocol.o db.o main.o util.o -lcrypto | ||
|
||
%.o: %.cpp bitcoin.h netbase.h protocol.h db.h serialize.h uint256.h util.h | ||
g++ -std=c++11 -pthread $(CXXFLAGS) -Wall -Wno-unused -Wno-sign-compare -Wno-reorder -Wno-comment -c -o $@ $< | ||
|
||
dns.o: dns.c | ||
gcc -pthread -std=c99 $(CXXFLAGS) dns.c -Wall -c -o dns.o | ||
|
||
%.o: %.cpp |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
reex-seeder | ||
============== | ||
|
||
Reex-seeder is a crawler for the Reex network, which exposes a list | ||
of reliable nodes via a built-in DNS server. | ||
|
||
Features: | ||
* regularly revisits known nodes to check their availability | ||
* bans nodes after enough failures, or bad behaviour | ||
* accepts nodes down to v0.1.0 to request new IP addresses from, | ||
but only reports good post-v0.1.0 nodes. | ||
* keeps statistics over (exponential) windows of 2 hours, 8 hours, | ||
1 day and 1 week, to base decisions on. | ||
* very low memory (a few tens of megabytes) and cpu requirements. | ||
* crawlers run in parallel (by default 24 threads simultaneously). | ||
|
||
REQUIREMENTS | ||
------------ | ||
|
||
$ sudo apt-get install build-essential libboost-all-dev libssl-dev -y | ||
|
||
USAGE | ||
----- | ||
|
||
Assuming you want to run a dns seed on dnsseed.example.com, you will | ||
need an authorative NS record in example.com's domain record, pointing | ||
to for example vps.example.com: | ||
|
||
$ dig -t NS dnsseed.example.com | ||
|
||
;; ANSWER SECTION | ||
dnsseed.example.com. 86400 IN NS vps.example.com. | ||
|
||
On the system vps.example.com, you can now run dnsseed: | ||
|
||
./dnsseed -h dnsseed.example.com -n vps.example.com | ||
|
||
If you want the DNS server to report SOA records, please provide an | ||
e-mail address (with the @ part replaced by .) using -m. | ||
|
||
COMPILING | ||
--------- | ||
Compiling will require boost and ssl. On debian systems, these are provided | ||
by `libboost-dev` and `libssl-dev` respectively. | ||
|
||
$ make | ||
|
||
This will produce the `dnsseed` binary. | ||
|
||
|
||
RUNNING AS NON-ROOT | ||
------------------- | ||
|
||
Typically, you'll need root privileges to listen to port 53 (name service). | ||
|
||
One solution is using an iptables rule (Linux only) to redirect it to | ||
a non-privileged port: | ||
|
||
$ iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-port 5353 | ||
|
||
If properly configured, this will allow you to run dnsseed in userspace, using | ||
the -p 5353 option. |
Oops, something went wrong.