Merge pull request #275902 from williamvds/dnsmasq_docs
nixos/dnsmasq: Add documentation
This commit is contained in:
commit
73f0f9c21c
2 changed files with 70 additions and 0 deletions
68
nixos/modules/services/networking/dnsmasq.md
Normal file
68
nixos/modules/services/networking/dnsmasq.md
Normal file
|
@ -0,0 +1,68 @@
|
|||
# Dnsmasq {#module-services-networking-dnsmasq}
|
||||
|
||||
Dnsmasq is an integrated DNS, DHCP and TFTP server for small networks.
|
||||
|
||||
## Configuration {#module-services-networking-dnsmasq-configuration}
|
||||
|
||||
### An authoritative DHCP and DNS server on a home network {#module-services-networking-dnsmasq-configuration-home}
|
||||
|
||||
On a home network, you can use Dnsmasq as a DHCP and DNS server. New devices on
|
||||
your network will be configured by Dnsmasq, and instructed to use it as the DNS
|
||||
server by default. This allows you to rely on your own server to perform DNS
|
||||
queries and caching, with DNSSEC enabled.
|
||||
|
||||
The following example assumes that
|
||||
|
||||
- you have disabled your router's integrated DHCP server, if it has one
|
||||
- your router's address is set in [](#opt-networking.defaultGateway.address)
|
||||
- your system's Ethernet interface is `eth0`
|
||||
- you have configured the address(es) to forward DNS queries in [](#opt-networking.nameservers)
|
||||
|
||||
```nix
|
||||
{
|
||||
services.dnsmasq = {
|
||||
enable = true;
|
||||
settings = {
|
||||
interface = "eth0";
|
||||
bind-interfaces = true; # Only bind to the specified interface
|
||||
dhcp-authoritative = true; # Should be set when dnsmasq is definitely the only DHCP server on a network
|
||||
|
||||
server = config.networking.nameservers; # Upstream dns servers to which requests should be forwarded
|
||||
|
||||
dhcp-host = [
|
||||
# Give the current system a fixed address of 192.168.0.254
|
||||
"dc:a6:32:0b:ea:b9,192.168.0.254,${config.networking.hostName},infinite"
|
||||
];
|
||||
|
||||
dhcp-option = [
|
||||
# Address of the gateway, i.e. your router
|
||||
"option:router,${config.networking.defaultGateway.address}"
|
||||
];
|
||||
|
||||
dhcp-range = [
|
||||
# Range of IPv4 addresses to give out
|
||||
# <range start>,<range end>,<lease time>
|
||||
"192.168.0.10,192.168.0.253,24h"
|
||||
# Enable stateless IPv6 allocation
|
||||
"::f,::ff,constructor:eth0,ra-stateless"
|
||||
];
|
||||
|
||||
dhcp-rapid-commit = true; # Faster DHCP negotiation for IPv6
|
||||
local-service = true; # Accept DNS queries only from hosts whose address is on a local subnet
|
||||
log-queries = true; # Log results of all DNS queries
|
||||
bogus-priv = true; # Don't forward requests for the local address ranges (192.168.x.x etc) to upstream nameservers
|
||||
domain-needed = true; # Don't forward requests without dots or domain parts to upstream nameservers
|
||||
|
||||
dnssec = true; # Enable DNSSEC
|
||||
# DNSSEC trust anchor. Source: https://data.iana.org/root-anchors/root-anchors.xml
|
||||
trust-anchor = ".,20326,8,2,E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D";
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
## References {#module-services-networking-dnsmasq-references}
|
||||
|
||||
- Upstream website: <https://dnsmasq.org>
|
||||
- Manpage: <https://dnsmasq.org/docs/dnsmasq-man.html>
|
||||
- FAQ: <https://dnsmasq.org/docs/FAQ>
|
|
@ -181,4 +181,6 @@ in
|
|||
restartTriggers = [ config.environment.etc.hosts.source ];
|
||||
};
|
||||
};
|
||||
|
||||
meta.doc = ./dnsmasq.md;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue