L’Internet des Objets
Le serveur dnsmasq fournit les services de serveur de nom, dhcp et tftp. Il est conçu pour être simple à configurer et léger. Il est souvent utilisé dans les systèmes embarqués, comme les points d’accès.
Il peut être configuré pour fournir les trois services, deux de ces services ou juste un seul.
Dans la section 2.1 sur hostapd, nous avons montré comment mettre en place la liaison de données entre un point d’accès et un client (voire plusieurs).
Pour que le client puisse utiliser le réseau, il faut lui attribuer les quatre paramètres ip.
Le serveur dhcp va fournir l’adresse ip, le masque, l’adresse du routeur par défaut et l’adresse du serveur de nom.
En général, le même boîtier va fournir le serveur dhcp, le serveur dns et le routeur. Ce n’est pas obligatoire, mais c’est ce que nous allons montrer. Le serveur dnsmasq va fournir les services dhcp et dns. Il ne fournira pas la partie routeur que nous traiterons plus tard.
L’installation se fait classiquement. Quand l’exécutable dnsmasq s’exécute, il fournit spontanément le service de nommage. Pour cela, il utilise le fichier local /etc/hosts et le serveur de nom de l’ordinateur hébergeur. Celui ci utilisera les services distants et offrira aux clients le service. C’est le comportement classique d’une box qui fournit le service aux ordinateurs locaux et qui interroge les serveurs du fournisseur d’accès.
Le nom dnsmasq indique que ce serveur masque les serveurs officiels au réseau local. Il permet aussi de masquer une résolution pour faire pointer un nom officiel vers un miroir local. Ainsi, le serveur de paquets Debian français ftp.fr.debian.org peut pointer sur un miroir local, comme 10.30.3.3.
Pour la partie dhcp, la première utilisation du service consiste à définir un ensemble d’adresses disponibles pour les clients. Les clients n’auront pas d’adresse fixe. Pour éviter de modifier le fichier de configuration principal, il est possible d’utiliser un fichier spécifique, comme 192.168.conf dans le répertoire /etc/dnsmasq.d.
dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h
Cela définit la plage des adresses de 50 à 150. Il faut bien sûr qu’une des interfaces réseaux possède une adresse compatible. Pour affecter une adresse spécifique à une adresse mac et lui donner un nom, la syntaxe est voisine :
dhcp-host=11:22:33:44:55:66,dolin,192.168.0.60,45m
Le routage est assez simple à mettre en œuvre. Il faut commencer par router. Pour cela, il faut vérifier la valeur du pseudo fichier /proc/sys/net/ipv4/ip_forward. La valeur 1 indique que Linux va router, la valeur 0 indique qu’il n’y a pas de routage. Pour rendre la modification permaente, il faut décommenter la ligne du fichier /etc/sysctl.conf.
#net.ipv4.ip_forward=1
En général les points d’accès fournissent des adresses privées (comme 192.168.X.Y ou 10.X.Y.Z) aux clients. Ces adresses ne permettent pas d’aller sur Internet sans activer la translation d’adresses. Pour cela, il faut exécuter la commande suivante :
/sbin/iptables -t nat -A POSTROUTING -o enp0s31f6 -j MASQUERADE
Si l’interface qui permet au point d’accès d’aller sur internet est enp0s31f6, alors le trafic qui sortira par cette interface sera natté.