50 lines
1.3 KiB
Markdown
50 lines
1.3 KiB
Markdown
# DNS Server in Rust
|
|
|
|
This repository contains the code for a **DNS server implemented in Rust**, as part of the tutorial [**Building a DNS Server in Rust**](https://rust-trends.com/posts/building-a-dns-server-in-rust/) . The tutorial covers:
|
|
- Understanding DNS requests and responses.
|
|
- Handling UDP packets in Rust.
|
|
- Parsing and constructing DNS packets.
|
|
- Implementing decompression of DNS packets.
|
|
- Forwarding DNS queries to resolvers.
|
|
|
|
## 📖 Tutorial
|
|
For a step-by-step guide, check out the full tutorial:
|
|
[Building a DNS Server in Rust: Part 1 of 2](https://rust-trends.com/posts/building-a-dns-server-in-rust/)
|
|
|
|
## 🛠 Installation
|
|
|
|
Ensure you have **Rust** installed:
|
|
```sh
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|
```
|
|
|
|
## Clone this repository:
|
|
|
|
```sh
|
|
git clone https://github.com/Rust-Trends/dns-server-tutorial.git
|
|
cd dns-server-tutorial
|
|
```
|
|
|
|
## 🚀 Running the Server
|
|
|
|
Goto to the step you want to explore, e.g. step1, and start the DNS server on port 1053:
|
|
|
|
```sh
|
|
cd step1
|
|
cargo run
|
|
```
|
|
|
|
## 🔍 Testing with dig
|
|
|
|
To test your server, open another terminal and run:
|
|
|
|
```sh
|
|
dig @localhost -p 1053 www.rust-trends.com
|
|
```
|
|
|
|
## 🤝 Contributions
|
|
|
|
Feel free to open issues or submit pull requests to improve the project!
|
|
|
|
📜 License: MIT
|