{"id":13547908,"url":"https://github.com/mwarning/KadNode","last_synced_at":"2025-04-02T20:31:06.712Z","repository":{"id":46877910,"uuid":"10891980","full_name":"mwarning/KadNode","owner":"mwarning","description":"P2P DNS with content key, crypto key and PKI support. DynDNS alternative.","archived":false,"fork":false,"pushed_at":"2024-02-11T21:21:15.000Z","size":1976,"stargazers_count":407,"open_issues_count":13,"forks_count":74,"subscribers_count":41,"default_branch":"master","last_synced_at":"2024-08-02T12:24:23.903Z","etag":null,"topics":["c","decentralized","dht","dns","dyndns","p2p","pki","tls"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mwarning.png","metadata":{"files":{"readme":"README.md","changelog":"changelog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-06-23T21:06:21.000Z","updated_at":"2024-08-01T04:03:35.000Z","dependencies_parsed_at":"2024-01-14T03:51:24.447Z","dependency_job_id":"6658086c-ce38-4034-b1e3-dbee79030eb1","html_url":"https://github.com/mwarning/KadNode","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwarning%2FKadNode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwarning%2FKadNode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwarning%2FKadNode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwarning%2FKadNode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mwarning","download_url":"https://codeload.github.com/mwarning/KadNode/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246887911,"owners_count":20850163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","decentralized","dht","dns","dyndns","p2p","pki","tls"],"created_at":"2024-08-01T12:01:03.023Z","updated_at":"2025-04-02T20:31:06.699Z","avatar_url":"https://github.com/mwarning.png","language":"C","funding_links":[],"categories":["C","c"],"sub_categories":[],"readme":"# KadNode - P2P DNS\n\nKadNode finds the IP address of other instances on the Internet or local network.\nIt is used like DNS, but is based on the decentralized BitTorrent network.\n\nKadNode intercepts `.p2p` domain queries on the systems level and resolves them using a decentralized [Kademlia DHT](https://en.wikipedia.org/wiki/Kademlia) network.\nAdditionally, [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) authentication can be used to make sure the correct IP address was found.\nIf successful, the IP address is passed to the application making the request.\n\n\n## Features\n\n* Support for two kinds of domains:\n  1. public key domains as `\u003cpublic-key\u003e.p2p`\n     * No need to exchange any further keys/certificates\n     * Uses `secp256r1` [ECC](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography) key pairs\n  2. named domains like `yourdomain.com.p2p`\n     * Needs pre-shared certificates (self-signed root certificates or e.g. `Let's Encrypt`)\n     * Uses TLS session handshake for authentication\n* IPv4/IPv6 support\n* UPnP/NAT-PMP support\n* Local peer discovery\n* Small size / ~100KB depending on features / ~50KB compressed\n* Command line control program\n* NSS support through `/etc/nsswitch.conf`\n* DNS server interface and DNS proxy\n  * Handles `A` (IPv4 address),`AAAA` (IPv6), and `SRV` requests\n* Packages for ArchLinux, Debian, FreeBSD, MacOSX, OpenWrt, Windows\n* Peer file import/export on startup/shutdown and every 24h\n* Uses `sha256` hash method\n\n\n## Documentation\n\n- [Manual Page](misc/manpage.md)\n- [Implementation Details](misc/implementation.md)\n- [Usage examples](misc/examples.md)\n- [FAQ](misc/faq.md)\n- [Wiki](https://github.com/mwarning/KadNode/wiki/)\n- [Video: KadNode decentralized DNS system - 34. Chaos Communication Congress](https://www.youtube.com/watch?v=DFFNEoEYItE)\n\n\n## Installation\nYou can download the latest package from [releases page](https://github.com/mwarning/KadNode/releases/latest/)\n\n\n### OpenWrt routers\nFrom official package repository:\n`opkg install kadnode`\n\n\n### Debian/Ubuntu\nFrom PPA repository:\n```sh\nsudo add-apt-repository ppa:stokito/kadnode\nsudo apt update\nsudo apt install kadnode\n```\n\nOr install a downloaded package with `dpkg -i kadnode_*.deb`\n\n\n### FreeBSD\nFrom repository: `pkg install kadnode`\n\nOr install a downloaded package with `pkg install kadnode-*.txz`\n\n\n### ArchLinux\nFrom repository: `yay -S kadnode`\n\nOr install a downloaded package with `pacman -U kadnode-*.pkg.tar.xz`\n\n\n## Build from sources\nInstall libraries and their headers. On Debian/Ubuntu use:\n```sh\nsudo apt install libmbedtls-dev, libnatpmp-dev, libminiupnpc-dev\n```\n\nCheckout code and compile KadNode:\n```sh\ngit clone https://github.com/mwarning/KadNode.git\ncd KadNode\n# basic features and debug mode\nFEATURES=\"bob tls cmd dns debug\" make\n# all features\nFEATURES=\"bob tls cmd lpd dns nss natpmp upnp debug\" make\n```\n\nFinally, start KadNode:\n\n```sh\n./build/kadnode\n```\n\nTo install use:\n```sh\nsudo make install install_nss\n```\nTo uninstall:\n```sh\nsudo make uninstall uninstall_nss\n```\n\n\n## Related Projects\n\n* [pkdns](https://github.com/pubky/pkdns) and [Pkarr](https://github.com/pubky/pkarr) ed25519 pubkey domains on Mainline DHT.\n* [btlink](https://github.com/anacrolix/btlink) an HTTP addressing scheme for BitTorrent.\n* [opendht](https://github.com/savoirfairelinux/opendht/wiki) a DHT daemon [used by Ring softphone](https://blog.savoirfairelinux.com/en-ca/2015/ring-opendht-a-distributed-hash-table/). \n* [DNSLink Standard](https://dnslink.org/) a format used by IPFS for DNS TXT records to associate content and identifiers with a domain.\n* [Tor Onion Services](https://en.wikipedia.org/wiki/.onion)\n* [GNUnet Name System](https://gnunet.org/) secure and decentralized naming system\n* [NameCoin](https://www.namecoin.org/) blockchain for DNS\n\n\n## License\n\n  MIT/X11\n\n\n## Authors\n\n  * KadNode: Moritz Warning (http://github.com/mwarning/KadNode)\n  * Kademlia DHT: Juliusz Chroboczek (https://github.com/jech/dht)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmwarning%2FKadNode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmwarning%2FKadNode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmwarning%2FKadNode/lists"}