Giter Club home page Giter Club logo

veil-dns-seeder's Introduction

veil-seeder

Veil-seeder is a crawler for the Veil 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
  • 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 96 threads simultaneously).

REQUIREMENTS

$ sudo apt-get install build-essential libboost-all-dev libssl-dev

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.

veil-dns-seeder's People

Contributors

cavespectre11 avatar veil-project avatar

Watchers

 avatar  avatar

veil-dns-seeder's Issues

Add option to listen on p2p network and support `getaddr` queries

While the design of this is purely DNS; it's only giving a few IP addresses for the network to chose from. Since these nodes will really have a complete picture of all the nodes on the network, it may be useful for them to be able to respond to getaddr queries with their list of addresses.

The Initial Bucket List

  • Need to figure out why the .dat file sometimes writes the data, sometimes writes nothing. I suspect db is getting cleaned out. It should leave you off where you were when you shut down; then when you start up, validate the saved ones.
  • - The current queue of found addresses should be stored when it dumps the database; so it can start up with those queued again.
  • - Code needs some massive cleaning up
  • - could use a log file for network failures; a lot are in threads and can't be printed easily.
  • - needs a quiet mode
  • - should have a way to point the output files to a folder and not the current directory
  • - The protocol needs to be cleaned up. Needs a much cleaner state machine for version send, version response, verack send, verack receive, then getaddr send with re-attempts if you don't get a response right away.
  • - When receiving addresses; they should be checked against the current ones in the queue. I don't think they are, there are likely a lot of duplicates.
  • - There should be some sort of statistical determination of proper block height to accept; so we don't report out stuck nodes. something that uses the timestamp and the protocol timing to determine if it appears to be moving... rather than basing on a fixed hardcoded block height that's acceptable.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.