Compare commits
No commits in common. "f65105c31affe2b9373da7ead10038aacd804853" and "06b0b673c65716a431219cd9dd8fe3727c68481f" have entirely different histories.
f65105c31a
...
06b0b673c6
1 changed files with 0 additions and 107 deletions
|
@ -1,107 +0,0 @@
|
||||||
---
|
|
||||||
date: 2024-10-25
|
|
||||||
title: "Meet DNSvizor: run your own DHCP and DNS MirageOS unikernel"
|
|
||||||
description:
|
|
||||||
The NGI-funded DNSvizor provides core network services on your network; DNS resolution and DHCP.
|
|
||||||
tags:
|
|
||||||
- OCaml
|
|
||||||
- MirageOS
|
|
||||||
- DNSvizor
|
|
||||||
author:
|
|
||||||
name: Hannes Mehnert
|
|
||||||
email: hannes@mehnert.org
|
|
||||||
link: https://hannes.robur.coop
|
|
||||||
---
|
|
||||||
|
|
||||||
TL;DR: We got [NGI0 Entrust (via NLnet)](https://nlnet.nl/entrust/) funding for developing
|
|
||||||
[DNSvizor](https://nlnet.nl/project/DNSvizor/) - a DNS resolver and
|
|
||||||
DHCP server. Please help us by [sharing with us your dnsmasq
|
|
||||||
configuration](https://github.com/robur-coop/dnsvizor/issues/new), so we can
|
|
||||||
prioritize the configuration options to support.
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
The [dynamic host configuration protocol (DHCP)](https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol)
|
|
||||||
is fundamental in today's Internet and local networks. It usually runs on your
|
|
||||||
router (or as a dedicated independent service) and automatically configures
|
|
||||||
computers that join your network (for example wireless laptops, smartphones)
|
|
||||||
with an IP address, routing information, a DNS resolver, etc. No manual
|
|
||||||
configuration is needed once your friends' smartphone got the password of your
|
|
||||||
wireless network \o/
|
|
||||||
|
|
||||||
The [domain name system (DNS)](https://en.wikipedia.org/wiki/Domain_Name_System)
|
|
||||||
is responsible for translating domain names (such as "robur.coop", "nlnet.nl")
|
|
||||||
to IP addresses (such as 193.30.40.138 or 2a0f:7cc7:7cc7:7c40::138) - used by
|
|
||||||
computers to talk to each other. Humans can remember domain names instead of
|
|
||||||
memorizing IP addresses. Computers then use DNS to translate these domain names
|
|
||||||
to IP addresses to communicate with. DNS is a hierarchic, distributed,
|
|
||||||
faul-tolerant service.
|
|
||||||
|
|
||||||
These two protocols are fundamental to today's Internet: without them it would
|
|
||||||
be much harder for humans to use it.
|
|
||||||
|
|
||||||
## DNSvizor
|
|
||||||
|
|
||||||
We at [robur](https://robur.coop) got funding (from
|
|
||||||
[NGI0 Entrust via NLnet](https://nlnet.nl/project/DNSvizor/)) to continue our work on
|
|
||||||
[DNSvizor](https://github.com/robur-coop/dnsvizor) - a
|
|
||||||
[MirageOS unikernel](https://mirageos.org) that provides DNS resolution and
|
|
||||||
DHCP service for a network. This is fully implemented in
|
|
||||||
[OCaml](https://ocaml.org).
|
|
||||||
|
|
||||||
Already at our [MirageOS retreats](https://retreat.mirageos.org) we deployed
|
|
||||||
such unikernel, to test our [DHCP implementation](https://github.com/mirage/charrua)
|
|
||||||
and our [DNS resolver](https://github.com/mirage/ocaml-dns) - and found and
|
|
||||||
fixed issues on-site. At the retreats we have a very limited Internet uplink,
|
|
||||||
thus caching DNS queries and answers is great for reducing the load on the
|
|
||||||
uplink.
|
|
||||||
|
|
||||||
Thanks to the funding we received, we'll be able to work on improving the
|
|
||||||
performance, but also to finish our DNSSec implementation, provide DNS-over-TLS
|
|
||||||
and DNS-over-HTTPS services, and also a web interface. DNSvizor will use the
|
|
||||||
existing [dnsmasq](https://thekelleys.org.uk/dnsmasq/doc.html) configuration
|
|
||||||
syntax, and provide lots of features from dnsmasq, and also provide features
|
|
||||||
such as block lists from [pi-hole](https://pi-hole.net/).
|
|
||||||
|
|
||||||
We are at a point where the [basic unikernel (our MVP)](https://github.com/robur-coop/dnsvizor)
|
|
||||||
- providing DNS and DHCP services - is ready, and we provide
|
|
||||||
[reproducible binary builds](https://builds.robur.coop/job/dnsvizor). Phew. This
|
|
||||||
means that the first step is done. The `--dhcp-range` from dnsmasq is already
|
|
||||||
being parsed.
|
|
||||||
|
|
||||||
We are now curious on concrete usages of dnsmasq and the configurations you use.
|
|
||||||
If you're interested in dnsvizor, please [open an issue at our repository](https://github.com/robur-coop/dnsvizor/issues/new)
|
|
||||||
with your dnsmasq configuration. This will help us to guide which parts of the configuration to prioritize.
|
|
||||||
|
|
||||||
## Usages of DNSvizor
|
|
||||||
|
|
||||||
We have several use cases for DNSvizor:
|
|
||||||
- at your home router to provide DNS resolution and DHCP service, filtering ads,
|
|
||||||
- in the datacenter auto-configuring your machine park,
|
|
||||||
- when running your unikernel swarm to auto-configure them.
|
|
||||||
|
|
||||||
The first one is where pi-hole as well fits into, and where dnsmasq is used quite
|
|
||||||
a lot. The second one is also a domain where dnsmasq is used. The third one is
|
|
||||||
from our experience that lots of people struggle with deploying MirageOS
|
|
||||||
unikernels since they have to manually do IP configuration etc. We ourselves
|
|
||||||
also pass additional information to the unikernels, such as syslog host,
|
|
||||||
monitoring sink, X.509 certificates or host names, do some DNS provisioning, ...
|
|
||||||
|
|
||||||
With DNSvizor we will leverage the common configuration options of all
|
|
||||||
unikernels (reducing the need for boot arguments), and also go a bit further
|
|
||||||
and make deployment seamless (including adding hostnames to DNS, forwarding
|
|
||||||
from our reverse TLS proxy, etc.).
|
|
||||||
|
|
||||||
## Conclusion
|
|
||||||
|
|
||||||
[DNSvizor](https://github.com/robur-coop/dnsvizor) provides DNS resolution and
|
|
||||||
DHCP service for your network, and [already exists](https://builds.robur.coop/job/dnsvizor) :).
|
|
||||||
Please [report issues](https://github.com/robur-coop/dnsvizor/issues/) you
|
|
||||||
encounter and questions you may have. Also, if you use dnsmasq, please
|
|
||||||
[show us your configuration](https://github.com/robur-coop/dnsvizor/issues/new).
|
|
||||||
|
|
||||||
If you're interested in MirageOS and using it in your domain, don't hesitate
|
|
||||||
to reach out to us (via eMail: team@robur.coop) - we're keen to deploy MirageOS
|
|
||||||
and find more domains where it is useful. If you can
|
|
||||||
[spare a dime](https://robur.coop/Donate), we're a registered non-profit in
|
|
||||||
Germany - and can provide tax-deductable receipts in Europe.
|
|
Loading…
Reference in a new issue