mykb/docs/dnsmasq.md

1.9 KiB

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

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.

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.

listen-address=::1,127.0.0.1,192.168.1.1

More cached DNS queries:

cache-size=1000

(max 10000)

DNSSec validation:

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:

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:

chattr +i /etc/resolv.conf

then restart Networkmanager:

systemctl restart NetworkManager.service

Now add your upstream DNS servers to /etc/dnsmasq.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:

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:

drill cloud.example.com

You can now set this DNS server as your primary DNS server in your router or on your local machine.