2015-08-22 18:53:07 +00:00
|
|
|
# trust-dns [![Build Status](https://travis-ci.org/bluejekyll/trust-dns.svg?branch=master)](https://travis-ci.org/bluejekyll/trust-dns)
|
2015-08-22 00:29:00 +00:00
|
|
|
A Rust based DNS client and server, built to be safe and secure from the
|
|
|
|
ground up.
|
2015-08-14 23:28:01 +00:00
|
|
|
|
|
|
|
# Goals
|
|
|
|
|
|
|
|
- Build a safe and secure DNS server and client with modern features.
|
2015-10-17 22:33:13 +00:00
|
|
|
- No panics, all code is guarded
|
2015-08-22 00:29:00 +00:00
|
|
|
- Use only safe Rust, and avoid all panics with proper Error handling
|
|
|
|
- Use only stable Rust
|
2015-08-14 23:28:01 +00:00
|
|
|
- Protect against DDOS attacks (to a degree)
|
2015-10-17 22:33:13 +00:00
|
|
|
- Support options for Global Load Balancing functions
|
|
|
|
- Make it dead simple to operate
|
2015-08-14 23:28:01 +00:00
|
|
|
|
|
|
|
# Status:
|
|
|
|
|
2015-10-17 22:33:13 +00:00
|
|
|
WARNING!!! Under active development!
|
2015-08-22 00:29:00 +00:00
|
|
|
|
2015-10-17 22:33:13 +00:00
|
|
|
The client now supports timeouts (thanks mio!). Currently hardcoded to 5 seconds,
|
|
|
|
I'll make this configurable if people ask for that, but this allows me to move on.
|
2015-08-14 23:28:01 +00:00
|
|
|
|
2015-10-17 22:33:13 +00:00
|
|
|
The server code is complete, the daemon currently only supports IPv4. Master file
|
|
|
|
parsing is complete and supported.
|
2015-08-22 00:29:00 +00:00
|
|
|
|
2015-10-17 22:33:13 +00:00
|
|
|
## RFC's implemented
|
2015-09-17 21:13:01 +00:00
|
|
|
|
2015-10-17 22:33:13 +00:00
|
|
|
- RFC 1035: Base DNS spec (partial, caching not yet supported)
|
|
|
|
https://tools.ietf.org/html/rfc1035
|
|
|
|
- RFC 3596: IPv6
|
|
|
|
https://tools.ietf.org/html/rfc3596
|
|
|
|
- RFC 2136: Dynamic Update
|
|
|
|
https://tools.ietf.org/html/rfc2136
|
|
|
|
|
|
|
|
## RFC's in progress or not yet implemented
|
|
|
|
|
|
|
|
- RFC 1995: Incremental Zone Transfer
|
|
|
|
https://tools.ietf.org/html/rfc1995
|
|
|
|
- RFC 1996: Notify slaves of update
|
|
|
|
https://tools.ietf.org/html/rfc1996
|
|
|
|
- RFC 2782: Service location
|
|
|
|
https://tools.ietf.org/html/rfc2782
|
|
|
|
- RFC 3007: Secure Dynamic Update
|
|
|
|
https://tools.ietf.org/html/rfc3007
|
|
|
|
- RFC 6891: Extension Mechanisms for DNS
|
|
|
|
https://tools.ietf.org/html/rfc6891
|
|
|
|
- RFC 4034: DNSSEC Resource Records
|
|
|
|
https://tools.ietf.org/html/rfc4034
|
|
|
|
- DNSCrypt
|
|
|
|
https://dnscrypt.org/
|
|
|
|
- Dynamic DNS Update Leases
|
|
|
|
https://tools.ietf.org/html/draft-sekar-dns-ul-01
|
|
|
|
- DNS Long-Lived Queries
|
|
|
|
http://tools.ietf.org/html/draft-sekar-dns-llq-01
|
|
|
|
|
|
|
|
# Usage
|
|
|
|
|
|
|
|
TBD
|
2015-08-14 23:28:01 +00:00
|
|
|
|
|
|
|
# FAQ
|
|
|
|
|
|
|
|
- Why are you building another DNS server?
|
|
|
|
|
|
|
|
Because I've gotten tired of seeing the security advisories out there for BIND.
|
|
|
|
Using Rust semantics it should be possible to develop a high performance and
|
|
|
|
safe DNS Server that is more resilient to attacks.
|