Création d'un environnement distribué avec la série Raspberry PI (Partie 3: Installation et configuration de dnsmasq)

introduction

  1. Création d'un environnement distribué avec la série Raspberry PI (Partie 1: Résumé de la disponibilité des clients sans disque par modèle)
  2. Création d'un environnement distribué avec la série Raspberry PI (Partie 2: Analyse PiServer et conception de système alternatif)
  3. Création d'un environnement distribué avec la série Raspberry PI (Partie 3: Installation et configuration de dnsmasq)
  4. Création d'un environnement distribué avec la série Raspberry PI (Partie 4: Création d'un serveur NFS et importation d'un système d'exploitation pour les clients)
  5. Création d'un environnement distribué avec la série Raspberry PI (Partie 5: Personnalisation du Raspberry PI OS pour les nœuds de cluster (1))
  6. Création d'un environnement distribué avec la série Raspberry PI (Partie 6: Personnalisation du Raspberry PI OS pour les nœuds de cluster (2))
  7. Création d'un environnement distribué avec la série Raspberry PI (7: configuration d'itinéraire tftp et test de démarrage pour chaque tarte à la râpe)

Cet article est la suite de la Partie 2. Cette fois, lors de la construction d'un système alternatif PiServer, ce sera la partie de la construction d'un serveur PXE avec dnsmasq, qui est la clé.

1. Commencez par préparer une machine excédentaire avec un système d'exploitation UNIX installé

C'est une supposition égoïste, mais si vous avez beaucoup de tartes à la râpe, je pense que les machines excédentaires que vous pouvez utiliser librement se trouvent quelque part à la maison ou au travail / à l'université. Et je pense que c'est une bonne idée d'installer un système d'exploitation UNIX familier sur une machine excédentaire, donc je ne décrirai pas comment installer le système d'exploitation lui-même.

Précautions lors de l'installation du système d'exploitation

Dans ce qui suit, nous supposerons que le nom d'hôte du serveur PXE est "hogeHost" et que l'adresse IP est 192.168.172.16/24.

# /etc/hosts(Exemple)
#192 IP fixe du serveur PXE.168.172.16
#Lorsque le nom d'hôte est hogeHost

127.0.0.1 localhost
192.168.172.16 hogeHost

[^ 20200608 Ajouté]: Ajouté après avoir reçu un commentaire de @kakinaguru_zo (08/06/2020) [^ 20200608 Ajouté 2]: 08/06/2020 Ajouté

2. Installez le package dnsmasq

La méthode d'installation des packages est différente pour chaque distribution, mais si vous avez un système d'exploitation basé sur UNIX qui utilise un système de packages, vous devez absolument distribuer les packages binaires sur le référentiel officiel, vous n'avez donc pas besoin de le compiler vous-même. [^ GENTOO]. J'omettrai également comment installer le package dans chaque distribution. Installez dnsmasq en utilisant les commandes que vous utilisez normalement, telles que apt-get, pacman ou dnf. Si vous avez oublié la commande, reportez-vous au lien ci-dessous. Référence: Tableau de comparaison ArchLinux Pacman

[^ GENTOO]: Sauf pour Gentoo, qui vous oblige à compiler vous-même n'importe quel logiciel (sourire amer)

3. paramètres dnsmasq

Normalement, je peux écrire tous les paramètres dans le fichier /etc/dnsmasq.conf, donc je prends le style d'écrire tout dans le fichier dnsmasq.conf. Selon la distribution, en plus de /etc/dnsmasq.conf, il y a aussi un environnement où il y a un sous-répertoire /etc/dnsmasq.d/ et tous les fichiers sous ce répertoire sont inclus, donc dans ce cas vous aimez Veuillez enregistrer le fichier de paramètres séparément avec. [^ DIV_EX]

Le fichier dnsmasq.conf décrit dans cet article est une version modifiée de celui créé par PiServer.

[^ DIV_EX]: Exemple: Divisez les fichiers par DNS, DHCP, fonctions tftp, divisez par l'adresse MAC de Raspeye, etc.

3.1. Configuration (désactivation) de la fonction DNS

Le fichier d'exemple (par défaut) dnsmasq.conf est commenté avec une ligne pour ouvrir le service DNS sur le port 5353. Cependant, si vous exécutez dnsmasq dans cet état, le port 53, qui est utilisé pour les services DNS normaux, sera ouvert sans autorisation, donc n'ouvrez pas le port intentionnellement. Gardez la ligne de commentaire et ajoutez la ligne port = 0

/etc/dnsmasq.conf(partie)


・ ・ ・
#port=5353
#Désactiver le DNS(Ajouter une ligne)
port=0

#La ligne suivante est port=Si 0 est spécifié, ce n'est pas une ligne nécessaire, mais
#Au cas où le service DNS démarre par erreur
#Spécifiez que DNS est un service local
local-service

#En tant que nom de balise lors de la configuration des éléments liés au DHCP
#Puisque vous utiliserez votre propre nom d'hôte, votre propre nom d'hôte à l'avance/Enregistrez l'adresse
# [Format] host-record=nom d'hôte,IP hôte
host-record=hogeHost,192.168.172.16
・ ・ ・

3.2. Réglage de la fonction tftp

Par défaut, la fonction de serveur tftp est désactivée, alors activez-la d'abord. Il permet également d'identifier le client par adresse MAC et de modifier la route tftp vers laquelle effectuer le téléchargement.

/etc/dnsmasq.conf(partie)


#Activer la fonction de serveur tftp
enable-tftp

#Emplacement du répertoire de référence pour les fichiers fournis par tftp(comme vous voulez)
#Sous ce répertoire, MAC/Nous allons créer un répertoire tftproot pour chaque adresse IP
# (C'est en fait un lien symbolique)
tftp-root=/srv/tftp

#Activez la possibilité de trier automatiquement le répertoire tftproot par adresse MAC.
#Au moment où Raspai accède au serveur tftp, il devrait déjà avoir une adresse IP.
#Dans un environnement où une adresse IP fixe peut être attribuée, le répertoire tftproot peut être automatiquement attribué à chaque adresse IP.
#Dans ce cas, après égal"ip"À
#L'environnement que nous construisons actuellement/etc/Je prévois d'utiliser une adresse IP fixe pour la gestion par les hôtes
#J'ose utiliser mac pour maintenir la compatibilité avec les fonctions PiServer.
tftp-unique-root=mac

Créez également un répertoire de base pour stocker le répertoire racine tftp à afficher pour chaque tarte râpe spécifiée dans la ligne tftp-root.

# mkdir /srv/tftp

3.3. Paramètres de la fonction DHCP

Par défaut, la fonction de serveur DHCP est désactivée, alors activez-la. Cependant, veuillez noter que la méthode de description de la fonction DHCP à définir à partir de maintenant changera selon qu'un autre serveur DHCP existe ou non dans l'environnement (sous-zone) que vous utilisez actuellement. Au fait, dans mon exemple, c'est celui qui a un serveur DHCP existant.

/etc/dnsmasq.conf(partie)


# dhcp-La fonction DHCP ne sera pas activée sans la ligne de plage, utilisez donc l'une ou l'autre des lignes en fonction de votre environnement.

#S'il n'y a pas d'autres serveurs DHCP dans le sous-réseau
# -------------------
#Il est nécessaire de spécifier la plage d'adresses IP donnée au client, au masque de réseau, etc.
# [Format] dhcp-range=tag:nom d'hôte,Démarrer IP,IP de fin(,Masque net(,Adresse de diffusion(,Durée du bail)))

#dhcp-range=tag:hogeHost,192.168.172.32,192.168.63,255.255.255.0

#Vous devez également spécifier la passerelle par défaut
# [Format] dhcp-option=tag:nom d'hôte,option:router,adresse de la passerelle

#dhcp-option=tag:hogeHost,option:router,192.168.172.254

#S'il y a un autre serveur DHCP dans le sous-réseau qui vous donnera une adresse IP
# ------------------
#Agir en tant que proxy DHCP. Dans le cas de Proxy, le format est modifié car la plage donnée est uniquement l'adresse IP que vous possédez.
# [Format] dhcp-range=tag:nom d'hôte,IP hôte,proxy
dhcp-range=tag:hogeHost,192.168.172.16,proxy

#Il semble qu'il soit préférable de retarder la réponse DHCP d'une seconde pour éviter l'échec du démarrage dû à un bogue dans PXE côté client.
dhcp-reply-delay=2

#Journal sur DHCP
log-dhcp

3.4. Paramètres de la fonction PXE

La personne qui active les fonctions tftp et dhcp est la personne qui veut la fonction PXE, il y a donc un élément de réglage dédié pour une telle personne. Le paramètre pour Raspai est un état «magique» où une seule ligne est requise, mais si vous souhaitez utiliser la fonction PXE sur un ordinateur général autre que Raspai, veuillez vérifier les détails en fonction du fichier exemple. Notez que le serveur PXE de dnsmasq, qui n'a pas cette seule ligne, sera ignoré par le chargeur de démarrage Raspeye (bootcode.bin), c'est donc un élément obligatoire.

# /etc/dnsmasq.conf(partie)
#Code de démarrage Rasppie.Une ligne requise pour que bin soit reconnu comme un serveur tftp
# ("Raspberry Pi Boot"La chaîne de caractères ne peut pas être modifiée)
# pxe-service=tag:Nom du serveur PXE,0,"Raspberry Pi Boot"
pxe-service=tag:hogeHost,0,"Raspberry Pi Boot"

3.5. Paramètres DHCP par client et création provisoire du répertoire racine tftp

De là, vous ajouterez une entrée pour chaque tarte à la râpe. Découvrez l'adresse MAC du Raspeye que vous possédez et ajoutez des entrées ligne par ligne.

/etc/dnqmasq.conf(partie,L'adresse MAC est une valeur appropriée)



#Paramètres lorsqu'il n'y a pas d'autre serveur DHCP
# (Attribuez une adresse IP fixe à chaque adresse MAC)
# --------------
# [Format] dhcp-host=Adresse MAC de Raspeye,set:nom d'hôte,Adresse IP à donner,infinite
# Raspi2
#dhcp-host=b8:27:eb:GG:HH:II,set:hogeHost,192.168.172.32,infinite
# Raspi3
#dhcp-host=b8:27:eb:XX:YY:ZZ,set:hogeHost,192.168.172.33,infinite
# Raspi4
#dhcp-host=dc:a6:32:PP:QQ:RR,set:hogeHost,192.168.172.34,infinite

#Paramètres des paramètres DHCP du proxy
#  -----
# [Format] dhcp-host=Adresse MAC de Raspeye,set:nom d'hôte

# Raspi2
dhcp-host=b8:27:eb:GG:HH:II,set:hogeHost
# Raspi3
dhcp-host=b8:27:eb:XX:YY:ZZ,set:hogeHost
# Raspi4
dhcp-host=dc:a6:32:PP:QQ:RR,set:hogeHost

Après avoir ajouté des entrées, créez un sous-répertoire avec un nom qui change le deux-points de l'adresse MAC en trait d'union sous le répertoire de référence spécifié lors de la définition des éléments liés à tftp afin qu'une erreur ne se produise pas lorsque dnsmasq est démarré par le test. Faire. (En production, ce sera un lien symbolique vers le dossier / boot du système d'exploitation client)

# mkdir /srv/tftp/b8-27-eb-GG-HH-II
# mkdir /srv/tftp/b8-27-eb-XX-YY-ZZ
# mkdir /srv/tftp/dc-a6-32-PP-QQ-RR

Ceci termine les paramètres de dnsmasq.

4. Vérification grammaticale de dnsmasq.conf

Effectuer une vérification de syntaxe sur le fichier dnsmasq.conf terminé

# sudo dnsmasq --test      
dnsmasq: syntax check OK.
#

C'est tout pour cette fois. La prochaine fois construira un serveur NFS et importera manuellement le système d'exploitation pour les clients.

Recommended Posts

Création d'un environnement distribué avec la série Raspberry PI (Partie 3: Installation et configuration de dnsmasq)
Construire un environnement distribué avec la série Raspberry PI (Partie 2: Analyse PiServer et conception de système alternatif)
Créer un environnement Tensorflow avec Raspberry Pi [2020]
Création d'un environnement distribué avec la série Raspberry PI (Partie 4: Création d'un serveur NFS et importation d'un système d'exploitation client)
Construction d'un environnement distribué avec la série Raspberry PI (Partie 1: Résumé de la disponibilité des clients sans disque par modèle)
Créez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 4
Création d'un environnement distribué avec la série Raspberry PI (Partie 7: configuration de la route tftp et test de démarrage pour chaque tarte à la râpe)
Construire un environnement Django sur Raspai (MySQL)
Créez un environnement virtuel avec pyenv et venv
Construire un environnement de développement Python sur Raspberry Pi
Fabriquez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 3
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --2 introduction PHP
Compilation croisée de Raspberry Pi et création d'un environnement de développement de débogage à distance avec VS Code
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et créez un serveur Web ―― 1. Introduction à Apache
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Construire un environnement de calcul numérique avec pyenv et miniconda3
Compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --3. Utilisez MySQL
Créez un environnement d'apprentissage automatique scikit-learn avec VirtualBox et Ubuntu
Créez une caméra de surveillance WEB avec Raspberry Pi et OpenCV
Créez une partition, puis installez le système d'exploitation Raspberry Pi
Comment créer un environnement de développement de la série Python2.7 avec Vagrant
Utiliser une webcam avec Raspberry Pi
Créez un environnement Python 2.7 64 bits avec TDM-GCC et MinGW-w64 sous Windows 7
Classique de Noël (?) Éclairage d'un arbre de Noël avec Raspberry Pi et Philips Hue
Faire une boussole d'affichage kanji avec Raspberry Pi et Sense Hat
[DynamoDB] [Docker] Créer un environnement de développement pour DynamoDB et Django avec docker-compose
Surveillance des animaux avec Rekognition et Raspberry pi
Créez facilement un environnement de développement avec Laragon
Que diriez-vous de créer un environnement virtuel avec Anaconda et de faire une installation pip?
Créez un environnement d'API rapide avec docker-compose
Créez un convertisseur Ethernet LAN sans fil et un routeur simple avec Raspberry Pi
[Linux] Créer un environnement Jenkins avec Docker
Faire une minuterie de lavage-séchage avec Raspberry Pi
Construire un environnement OpenCV-Python sur Raspberry Pi B +
Créez un environnement virtuel pour python avec pyenv
Faites fonctionner l'oscilloscope avec le Raspberry Pi
Créez un compteur de voiture avec Raspberry Pi
Créez un environnement Python moderne avec Neovim
Construisez Linux sur un environnement Windows. Étapes pour installer Laradock et migrer
[Linux] Construction de l'environnement Docker avec Amazon Linux 2
Construisez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3! [Essai et erreur]
J'ai essayé de créer un environnement Ubuntu 20.04 LTS + ROS2 avec Raspberry Pi 4
Créer un environnement d'analyse de données qui relie l'authentification GitHub et Django avec JupyterHub
Création d'un système de contrôle de température avec tarte aux framboises et ESP32 (3) Réception d'un fichier Python
[Pour les débutants] J'ai fait un capteur humain avec Raspberry Pi et notifié LINE!
Créer un environnement de développement TensorFlow sur Amazon EC2 avec une copie de commande
Créer un environnement de développement de langage C avec un conteneur
Créez un environnement WardPress sur AWS avec Pulumi
Construire un environnement python avec virtualenv et direnv
Créez un environnement python avec ansible sur centos6
[Python] Créer un environnement de développement Django avec Docker
Créer un environnement de construction python3 avec Sublime Text3
Créez un environnement Django avec Vagrant en 5 minutes
MQTT Radicon Car avec Arduino et Raspberry
[Memo] Créez un environnement virtuel avec Pyenv + anaconda
Créer un environnement de développement Django à l'aide de Doker Toolbox
Construire un environnement Python avec OSX Elcapitan
Obtenez la température et l'humidité avec DHT11 et Raspberry Pi
Créez rapidement un environnement Python Django avec IntelliJ