{"id":19142690,"url":"https://github.com/jgaa/vuberdns","last_synced_at":"2026-06-14T01:31:40.850Z","repository":{"id":68076590,"uuid":"140062642","full_name":"jgaa/vUberdns","owner":"jgaa","description":"Simple, ultrafast DNS server","archived":false,"fork":false,"pushed_at":"2022-03-04T07:46:20.000Z","size":156,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-22T19:25:26.255Z","etag":null,"topics":["boost-asio","cpp14","dns-server"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jgaa.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2018-07-07T07:28:48.000Z","updated_at":"2022-09-03T21:22:17.000Z","dependencies_parsed_at":"2023-03-17T06:45:47.824Z","dependency_job_id":null,"html_url":"https://github.com/jgaa/vUberdns","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jgaa/vUberdns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgaa%2FvUberdns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgaa%2FvUberdns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgaa%2FvUberdns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgaa%2FvUberdns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jgaa","download_url":"https://codeload.github.com/jgaa/vUberdns/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgaa%2FvUberdns/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34306772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["boost-asio","cpp14","dns-server"],"created_at":"2024-11-09T07:28:10.240Z","updated_at":"2026-06-14T01:31:40.831Z","avatar_url":"https://github.com/jgaa.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vUberdns\n\n**Simple, ultrafast DNS server**.\n\nThis DNS server is designed to serve a limited number of zones, and to do that as fast as possible while consuming few resources. First of all, - all information is kept in memory. So when a request comes in, the server can answer immediately - without looking up any database tables or querying any external entities.\n\nIt does not need to write to disk. Any number of instances can be deployed using shared, read-only storage volumes with the zone information.\n\n## Motivation\n\nI needed a simple DNS server for some private projects, so I decided to make one. The code is currently a re-factored version of the embedded DNS server in the [vUbercool](https://github.com/jgaa/vUbercool) project. DNS have over the years proven to be a security nightmare, with lots and lots of exploits found in popular servers and client libraries. To keep things safe and sound, I feel better running a server that I myself have designed with security in mind, and with a limited number of features.\n\n## Current Status\n\nI just started. It can load a zone file (in a simple text file format) into memory and serve the most basic requests.\n\nI plan to add more features rapidly over the next weeks, and make a beta release when I feel it is useful and ready to be tested in the wild.\n\n## Operating Systems\n\nIt's designed for *nix. So far I have only tested it with Debian Linux.\n\n## How to test it?\n\nBuild it with cmake, and start it in a console:\n\n```sh\n~/src/vUberdns$ ./build/src/dnsd/vudnsd -H \"localhost:5353\" --io-threads 2 -z conf/exampe_zone.txt -C\n\n```\n\nThis will start it, and listen for requests on localhost, port 5353\n\nThen, use for example *dig* to query it from another console:\n\n```sh\n~$ dig @127.0.0.1 -p 5353 onebillionsites.com\n\n; \u003c\u003c\u003e\u003e DiG 9.10.3-P4-Debian \u003c\u003c\u003e\u003e @127.0.0.1 -p 5353 onebillionsites.com\n; (1 server found)\n;; global options: +cmd\n;; Got answer:\n;; -\u003e\u003eHEADER\u003c\u003c- opcode: QUERY, status: NOERROR, id: 63363\n;; flags: qr rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0\n;; WARNING: recursion requested but not available\n\n;; QUESTION SECTION:\n;onebillionsites.com.           IN      A\n\n;; ANSWER SECTION:\nonebillionsites.com.    300     IN      A       127.0.0.1\n\n;; Query time: 0 msec\n;; SERVER: 127.0.0.1#5353(127.0.0.1)\n;; WHEN: Sun Jul 08 17:49:15 EEST 2018\n;; MSG SIZE  rcvd: 53\n```\n\n```sh\n~$ dig @127.0.0.1 -p 5353 onebillionsites.com soa\n\n; \u003c\u003c\u003e\u003e DiG 9.10.3-P4-Debian \u003c\u003c\u003e\u003e @127.0.0.1 -p 5353 onebillionsites.com soa\n; (1 server found)\n;; global options: +cmd\n;; Got answer:\n;; -\u003e\u003eHEADER\u003c\u003c- opcode: QUERY, status: NOERROR, id: 60944\n;; flags: qr rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2\n;; WARNING: recursion requested but not available\n\n;; QUESTION SECTION:\n;onebillionsites.com.           IN      SOA\n\n;; ANSWER SECTION:\nonebillionsites.com.    300     IN      SOA     ns1.onebillionsites.com. hostmaster.onebillionsites.com. 1 7200 600 3600000 60\n\n;; AUTHORITY SECTION:\nonebillionsites.com.    300     IN      NS      ns1.onebillionsites.com.\nonebillionsites.com.    300     IN      NS      ns2.onebillionsites.com.\n\n;; ADDITIONAL SECTION:\nns1.onebillionsites.com. 300    IN      A       127.0.0.1\nns2.onebillionsites.com. 300    IN      A       127.0.0.2\n\n;; Query time: 0 msec\n;; SERVER: 127.0.0.1#5353(127.0.0.1)\n;; WHEN: Sun Jul 08 17:55:59 EEST 2018\n;; MSG SIZE  rcvd: 152\n```\n\n## Running on port 53\n\nIf you want the server to use port 53 under Linux, you have several options. You can run it as root (bad, bad idea), or you can give the application permission to use privileged ports. One way to do that is to run the command below.\n\n```sh\n$ sudo setcap CAP_NET_BIND_SERVICE=+eip  ./build/src/dnsd/vudnsd\n```\n\n## Prebuilt Docker container\n\n```sh\n$ docker run --name vudnsd -p 53:53/udp -d --rm jgaafromnorth/vuberdns\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgaa%2Fvuberdns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjgaa%2Fvuberdns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgaa%2Fvuberdns/lists"}