{"id":17645287,"url":"https://github.com/richardschneider/net-dns","last_synced_at":"2025-05-07T03:45:51.182Z","repository":{"id":56743387,"uuid":"123491576","full_name":"richardschneider/net-dns","owner":"richardschneider","description":"DNS data model and Name Server with serializer for the wire and master file format ","archived":false,"fork":false,"pushed_at":"2019-07-22T23:39:38.000Z","size":1775,"stargazers_count":25,"open_issues_count":10,"forks_count":17,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-07T03:45:37.175Z","etag":null,"topics":["dns","dns-library","dnssec","edns0"],"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/richardschneider.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}},"created_at":"2018-03-01T20:58:03.000Z","updated_at":"2024-01-13T21:12:24.000Z","dependencies_parsed_at":"2022-08-16T01:10:45.157Z","dependency_job_id":null,"html_url":"https://github.com/richardschneider/net-dns","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardschneider%2Fnet-dns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardschneider%2Fnet-dns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardschneider%2Fnet-dns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardschneider%2Fnet-dns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richardschneider","download_url":"https://codeload.github.com/richardschneider/net-dns/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252810273,"owners_count":21807759,"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":["dns","dns-library","dnssec","edns0"],"created_at":"2024-10-23T10:54:45.817Z","updated_at":"2025-05-07T03:45:51.146Z","avatar_url":"https://github.com/richardschneider.png","language":"C#","funding_links":["https://www.buymeacoffee.com/kmXOxKJ4E"],"categories":[],"sub_categories":[],"readme":"# net-dns\n\n[![build status](https://ci.appveyor.com/api/projects/status/github/richardschneider/net-dns?branch=master\u0026svg=true)](https://ci.appveyor.com/project/richardschneider/net-dns) \n[![travis build](https://travis-ci.org/richardschneider/net-dns.svg?branch=master)](https://travis-ci.org/richardschneider/net-dns)\n[![Coverage Status](https://coveralls.io/repos/richardschneider/net-dns/badge.svg?branch=master\u0026service=github)](https://coveralls.io/github/richardschneider/net-dns?branch=master)\n[![Version](https://img.shields.io/nuget/v/Makaretu.Dns.svg)](https://www.nuget.org/packages/Makaretu.Dns)\n[![docs](https://cdn.rawgit.com/richardschneider/net-dns/master/doc/images/docs-latest-green.svg)](https://richardschneider.github.io/net-dns/articles/intro.html)\n\nDNS data model with serializer/deserializer for the wire and \"master file\" format.\n\n## Features\n\n- Serialization for the wire and master file formats\n- Pretty printing of messages\n- Supports compressed domain names\n- Supports multiple strings in TXT records\n- Supports the extended 12-bit RCODE\n- Future proof: handles unknown resource records and EDNS options\n- Graceful truncation of messages\n- A name server that answeres DNS questions\n- Data models for\n  - [RFC 1035](https://tools.ietf.org/html/rfc1035) Domain Names (DNS)\n  - [RFC 1183](https://tools.ietf.org/html/rfc1183) New DNS RR Definitions\n  - [RFC 1996](https://tools.ietf.org/html/rfc1996) Zone Changes (DNS NOTIFY)\n  - [RFC 2136](https://tools.ietf.org/html/rfc2136) Dynamic Updates (DNS UPDATE)\n  - [RFC 2845](https://tools.ietf.org/html/rfc2845) Secret Key Transaction Authentication for DNS (TSIG)\n  - [RFC 2930](https://tools.ietf.org/html/rfc2930) Secret Key Establishment for DNS (TKEY RR)\n  - [RFC 3225](https://tools.ietf.org/html/rfc3225) Indicating Resolver Support of DNSSEC\n  - [RFC 3599](https://tools.ietf.org/html/rfc3596) DNS Extensions to Support IPv6\n  - [RFC 4034](https://tools.ietf.org/html/rfc4034) Resource Records for the DNS Security Extensions (DNSSEC)\n  - [RFC 5001](https://tools.ietf.org/html/rfc5001) DNS Name Server Identifier (NSID) Option\n  - [RFC 6672](https://tools.ietf.org/html/rfc6672) DNAME Redirection in the DNS\n  - [RFC 6891](https://tools.ietf.org/html/rfc6891) Extension Mechanisms for DNS (EDNS(0))\n  - [RFC 7828](https://tools.ietf.org/html/rfc7828) The edns-tcp-keepalive EDNS0 Option\n  - [RFC 7830](https://tools.ietf.org/html/rfc7830) The EDNS(0) Padding Option\n- Targets .Net Framework 4.5 and 4.7.2 and .NET Standard 1.4 and 2.0\n- CI on Travis (Ubuntu Trusty and OSX) and AppVeyor (Windows Server 2016)\n\n## Getting started\n\nPublished releases are available on [NuGet](https://www.nuget.org/packages/Makaretu.Dns/).  To install, run the following command in the [Package Manager Console](https://docs.nuget.org/docs/start-here/using-the-package-manager-console).\n\n    PM\u003e Install-Package Makaretu.Dns\n    \n## Usage\n\n### Name Server\n\nCreate a name server that can answer questions for a zone.\n\n```csharp\nusing Makaretu.Dns.Resolving;\n\nvar catalog = new Catalog();\ncatalog.IncludeZone(...);\ncatalog.IncludeRootHints();\nvar resolver = new NameServer { Catalog = catalog };\n```\n\nAnswer a question\n\n```csharp\nvar request = new Message();\nrequest.Questions.Add(new Question { Name = \"ns.example.com\", Type = DnsType.AAAA });\nvar response = await resolver.ResolveAsync(request);\n```\n\n### Data Model\n\n```csharp\nusing Makaretu.Dns\n\nvar msg = new Message\n{\n\tAA = true,\n\tQR = true,\n\tId = 1234\n};\nmsg.Questions.Add(new Question \n{ \n\tName = \"emanon.org\" \n});\nmsg.Answers.Add(new ARecord \n{ \n\tName = \"emanon.org\",\n\tAddress = IPAddress.Parse(\"127.0.0.1\") \n});\nmsg.AuthorityRecords.Add(new SOARecord\n{\n\tName = \"emanon.org\",\n\tPrimaryName = \"erehwon\",\n\tMailbox = \"hostmaster.emanon.org\"\n});\nmsg.AdditionalRecords.Add(new ARecord \n{ \n\tName = \"erehwon\", \n\tAddress = IPAddress.Parse(\"127.0.0.1\") \n});\n\n```\n\n# Related projects\n\n- [net-mdns](https://github.com/richardschneider/net-mdns) - client and server for multicast DNS\n- [net-udns](https://github.com/richardschneider/net-udns) - client for unicast DNS, DNS over HTTPS (DOH) and DNS over TLS (DOT)\n- [DNSSEC](https://www.icann.org/resources/pages/dnssec-qaa-2014-01-29-en) -  What Is It and Why Is It Important?\n \n# License\nCopyright © 2018 Richard Schneider (makaretu@gmail.com)\n\nThe package is licensed under the [MIT](http://www.opensource.org/licenses/mit-license.php \"Read more about the MIT license form\") license. Refer to the [LICENSE](https://github.com/richardschneider/net-dns/blob/master/LICENSE) file for more information.\n\n\u003ca href=\"https://www.buymeacoffee.com/kmXOxKJ4E\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/yellow_img.png\" alt=\"Buy Me A Coffee\" style=\"height: auto !important;width: auto !important;\" \u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardschneider%2Fnet-dns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichardschneider%2Fnet-dns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardschneider%2Fnet-dns/lists"}