Dnsmasq

De Banane Atomic
Aller à la navigationAller à la recherche

Liens

Installation

Bash.svg
sudo pacman dnsmasq

Configuration DNS

/etc/dnsmasq.conf
# ip du serveur
listen-address=::1, 127.0.0.1, 192.168.0.x

# définit la route par défaut si ce n'est pas celle du serveur dnsmasq
dhcp-option=option:router,192.168.0.y

# Associer un domaine à une adresse IP
address=/mon-domaine.fr/192.168.0.10

# ignorer /etc/resolv.conf car il contient uniquement localhost
no-resolv
# Upstream DNS server addresses (serveur DNS de la box)
server=192.168.0.x
/etc/resolv.conf
nameserver ::1
nameserver 127.0.0.1
/etc/hosts
#<ip-address>	<hostname.domain.org>   <hostname>
127.0.0.1                               localhost
::1                                     localhost

192.168.0.x     mabox
192.168.0.y     site1.domaine.net site2.domaine.net
192.168.0.z     site3 site4
Après une modification, il faut redémarrer le service dnsmasq

DHCPCD

/etc/dhcpcd.conf
# dhcpcd, unfortunately, tends to overwrite /etc/resolv.conf by default,
# so if you use DHCP it is a good idea to protect /etc/resolv.conf. 
nohook resolv.conf

Configuration DHCP

/etc/dnsmasq.conf
interface=eth0
bind-interfaces

# allouer dynamique les ip 192.168.0.50 à 192.168.0.150
dhcp-range=192.168.0.50,192.168.0.150,12h
# pas d'allocations dynamique, seul les allocations statiques sont autorisées
dhcp-range=192.168.0.0,static

# Baux DHCP statiques
# donne un nom et une ip à l'adresse MAC correspondante
dhcp-host=xx:xx:xx:xx:xx:xx,Nom,192.168.x.x,infinite
# donne une ip à la machine dont le nom correspond
dhcp-host=Nom,192.168.x.x,infinite

# si unique serveur DHCP
dhcp-authoritative

Afficher les baux dhcp en cours

Bash.svg
cat /var/lib/misc/dnsmasq.leases

Mettre fin à un bail

Bash.svg
systemctl stop dnsmasq

# supprimer la ligne correspondant au bail
nano /var/lib/misc/dnsmasq.leases

systemctl start dnsmasq

VPN

/etc/dnsmasq.conf
interface=eth0
# ajouter l'interface tun
interface=tun0

# ajouter l'ip du serveur sur le réseau VPN
listen-address=127.0.0.1, 10.8.0.1

bind-interfaces

failed to create listening socket for 10.8.0.1: Cannot assign requested address

Dnsmasq démarre avant qu'OpenVPN n'ai eu le temp d'enregistrer l'ip 10.8.0.1
Étendre la configuration du service dnsmasq sans écraser la configuration par défaut: /usr/lib/systemd/system/dnsmasq.service

/etc/systemd/system/dnsmasq.service.d/openvpn.conf
[Unit]
After=openvpn@server.service

Firewall

Bash.svg
sudo ufw allow 53/tcp comment 'dns tcp port 53'
sudo ufw allow 53/udp comment 'dns udp port 53'

sudo ufw allow 67,68/udp comment 'dhcp udp ports 67,68'

log

/var/log/messages.log

/etc/dnsmasq.conf
# For debugging purposes, log each DNS query as it passes through dnsmasq.
log-queries
# Log lots of extra information about DHCP transactions.
log-dhcp

Erreurs

failed to create listening socket for port 53: Address already in use

Un autre programme utilise déjà le port 53.

Bash.svg
sudo netstat -peanut | grep :53
# tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      102        16584      2147/systemd-resolv 
# udp        0      0 127.0.0.53:53           0.0.0.0:*                           102        16583      2147/systemd-resolv
/etc/systemd/resolved.conf
[Resolve]
DNS=127.0.0.1
DNSStubListener=no
/etc/resolv.conf
nameserver  127.0.0.1
Bash.svg
sc-restart systemd-resolved
sc-start dnsmasq

Ne fonctionne pas avec Android

Android fait des requêtes DNS IPv6 et n'utilise donc pas DNSmasq.
Utiliser une application de changement d'adresse DNS.

Il semble que désactiver les IPv6 sur le routeur ait résolu le problème.