mykb/docs/dnsmasq.md

81 lines
1.9 KiB
Markdown
Raw Permalink Normal View History

# DNSMasq
A simple and lightweight DNS and DHCP server for local development.
Personally I have only yet used this to circumvent NAT Loopback issues with my router, but it can be used for much more.
## Installation
It's a simple
```sh
pacman -S dnsmasq
```
### Configuration
We need to disable the systemd-resolved service, as it will conflict with DNSMasq.
Afterwards we can start the DNSMasq service.
```sh
systemctl disable systemd-resolved.service
systemctl stop systemd-resolved.service
systemctl enable --now dnsmasq.service
```
We can now look into the configuration file at `/etc/dnsmasq.conf` and make changes to our liking.
```conf
listen-address=::1,127.0.0.1,192.168.1.1
```
More cached DNS queries:
```conf
cache-size=1000
```
(max 10000)
DNSSec validation:
```conf
conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
```
## DNS Forwarding
We will most likely not have all wanted DNS entries ourselves and should look these up on a different server.
We can do this by chaning `/etc/resolv.conf` to the following:
```conf
nameserver ::1
nameserver 127.0.0.1
options trust-ad
```
If we want Networkmanager to not overwrite this file, we can set it to immutable:
```sh
chattr +i /etc/resolv.conf
```
then restart Networkmanager:
```sh
systemctl restart NetworkManager.service
```
Now add your upstream DNS servers to `/etc/dnsmasq.conf`:
```conf
no-resolv
# Google's nameservers, for example
server=8.8.8.8
server=8.8.4.4
```
## Address Overrides
For NAT Loopback we need to override the DNS entries for our local network.
For example if we want to direct `cloud.example.com` to our server directly, we can add the following to `/etc/dnsmasq.conf`:
```conf
address=/cloud.example.com/192.168.1.2
```
adjust the IP address to your setup.
After restarting the dnsmasq service, we can check if the DNS entry is correct:
```sh
drill cloud.example.com
```
You can now set this DNS server as your primary DNS server in your router or on your local machine.