[LINUX] Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 3: Installieren und Konfigurieren von dnsmasq)

Einführung

  1. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 1: Zusammenfassung der Verfügbarkeit von plattenlosen Clients nach Modell)
  2. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 2: PiServer-Analyse und alternatives Systemdesign)
  3. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 3: Installieren und Konfigurieren von dnsmasq)
  4. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 4: Erstellen eines NFS-Servers und Importieren eines Betriebssystems für Clients)
  5. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 5: Anpassen des Raspberry PI-Betriebssystems für Clusterknoten (1))
  6. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 6: Anpassung des Raspberry PI-Betriebssystems für Clusterknoten (2))
  7. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (7: Einstellung der TFTP-Route und Starttest für jeden Raspetorte)

Dieser Artikel ist eine Fortsetzung von Teil 2. Dieses Mal wird beim Erstellen eines alternativen PiServer-Systems ein PXE-Server mit dnsmasq erstellt, dem Schlüssel.

1. Bereiten Sie zunächst einen überschüssigen Computer mit einem installierten UNIX-basierten Betriebssystem vor

Es ist eine egoistische Vermutung, aber wenn Sie viele Raspeltorten haben, denke ich, dass die überschüssigen Maschinen, die Sie frei benutzen können, irgendwo zu Hause oder bei der Arbeit / Universität liegen. Und ich denke, es ist eine gute Idee, ein bekanntes UNIX-basiertes Betriebssystem auf einem überschüssigen Computer zu installieren, daher werde ich keine Anleitung zur Installation des Betriebssystems selbst beschreiben.

Vorsichtsmaßnahmen bei der Installation des Betriebssystems

Im Folgenden wird erläutert, dass der Hostname des PXE-Servers "hogeHost" und die IP 192.168.172.16/24 lautet.

# /etc/hosts(Beispiel)
#192 feste IP des PXE-Servers.168.172.16
#Wenn der Hostname hogeHost ist

127.0.0.1 localhost
192.168.172.16 hogeHost

[^ 20200608 Hinzugefügt]: Hinzugefügt nach Erhalt eines Kommentars von @kakinaguru_zo (2020/06/08) [^ 20200608 Hinzugefügt 2]: 2020/06/08 Hinzugefügt

2. Installieren Sie das dnsmasq-Paket

Die Methode zum Installieren von Paketen ist für jede Distribution unterschiedlich. Wenn Sie jedoch ein UNIX-basiertes Betriebssystem haben, das ein Paketsystem verwendet, sollten Sie Binärpakete auf jeden Fall im offiziellen Repository verteilen, damit Sie es nicht selbst kompilieren müssen. [^ GENTOO]. Ich werde auch weglassen, wie das Paket in jeder Distribution installiert wird. Installieren Sie dnsmasq mit den Befehlen, die Sie normalerweise verwenden, z. B. apt-get, pacman oder dnf. Wenn Sie den Befehl vergessen haben, lesen Sie den folgenden Link. Referenz: ArchLinux Pacman-Vergleichstabelle

[^ GENTOO]: Mit Ausnahme von Gentoo, bei dem Sie jede Software selbst kompilieren müssen (bitteres Lächeln).

3. dnsmasq Einstellungen

Normalerweise kann ich alle Einstellungen in die Datei /etc/dnsmasq.conf schreiben, also schreibe ich alles in die Datei dnsmasq.conf. Abhängig von der Distribution gibt es neben /etc/dnsmasq.conf auch eine Umgebung, in der sich ein Unterverzeichnis /etc/dnsmasq.d/ befindet und alle Dateien in diesem Verzeichnis enthalten sind Bitte speichern Sie die Einstellungsdatei separat mit. [^ DIV_EX]

Die in diesem Artikel beschriebene Datei dnsmasq.conf ist eine modifizierte Version der von PiServer ausgespuckten.

[^ DIV_EX]: Beispiel: Teilen Sie Dateien durch DNS-, DHCP-, TFTP-Funktionen, Teilen durch die MAC-Adresse von Raspeye usw.

3.1. DNS-Funktion einstellen (deaktivieren)

Die Beispieldatei (Standard) dnsmasq.conf wird mit einer Zeile auskommentiert, um den DNS-Dienst an Port 5353 zu öffnen. Wenn Sie jedoch dnsmasq in diesem Status ausführen, wird Port 53, der für normale DNS-Dienste verwendet wird, ohne Erlaubnis geöffnet. Öffnen Sie den Port daher nicht absichtlich. Behalten Sie die Kommentarzeile bei und fügen Sie die Zeile port = 0 hinzu

/etc/dnsmasq.conf(Teil)


・ ・ ・
#port=5353
#DNS deaktivieren(Zeile hinzufügen)
port=0

#Die folgende Zeile ist Port=Wenn 0 angegeben ist, ist es keine notwendige Zeile, aber
#Falls der DNS-Dienst versehentlich gestartet wird
#Geben Sie an, dass DNS ein lokaler Dienst ist
local-service

#Als Tag-Name beim Festlegen von DHCP-bezogenen Elementen
#Da Sie Ihren eigenen Hostnamen verwenden, sollten Sie Ihren eigenen Hostnamen im Voraus verwenden/Registrieren Sie die Adresse
# [Format] host-record=Hostname,Host-IP
host-record=hogeHost,192.168.172.16
・ ・ ・

3.2. Einstellen der TFTP-Funktion

Standardmäßig ist die TFTP-Serverfunktion deaktiviert. Aktivieren Sie sie daher zuerst. Es ermöglicht auch die Identifizierung des Clients anhand der MAC-Adresse und die Änderung der TFTP-Route, auf die heruntergeladen werden soll.

/etc/dnsmasq.conf(Teil)


#Aktivieren Sie die TFTP-Serverfunktion
enable-tftp

#Speicherort des Referenzverzeichnisses für von tftp bereitgestellte Dateien(wie es Dir gefällt)
#Unter diesem Verzeichnis MAC/Wir werden für jede IP-Adresse ein tftproot-Verzeichnis erstellen
# (Es ist eigentlich eine symbolische Verbindung)
tftp-root=/srv/tftp

#Aktivieren Sie die Möglichkeit, das tftproot-Verzeichnis automatisch nach MAC-Adresse zu sortieren.
#Wenn Raspai auf den TFTP-Server zugreift, sollte er bereits eine IP haben.
#In einer Umgebung, in der eine feste IP zugewiesen werden kann, kann das tftproot-Verzeichnis automatisch jeder IP-Adresse zugewiesen werden.
#In diesem Fall nach gleich"ip"Zu
#Die Umgebung, die wir gerade bauen/etc/Ich plane, eine feste IP für die Verwaltung durch Hosts zu verwenden
#Ich wage es, einen Mac zu verwenden, um die Kompatibilität mit PiServer-Funktionen aufrechtzuerhalten.
tftp-unique-root=mac

Erstellen Sie außerdem ein Basisverzeichnis, um das tftp-Stammverzeichnis zu speichern, das für jeden in der tftp-root-Zeile angegebenen Raspetorte angezeigt werden soll.

# mkdir /srv/tftp

3.3. DHCP-Funktionseinstellungen

Standardmäßig ist die DHCP-Serverfunktion deaktiviert. Aktivieren Sie sie daher. Beachten Sie jedoch, dass sich die Beschreibungsmethode der DHCP-Funktion, die von nun an festgelegt werden soll, ändert, je nachdem, ob in der aktuell verwendeten Umgebung (Subzone) ein anderer DHCP-Server vorhanden ist. In meinem Beispiel ist es übrigens derjenige, der über einen vorhandenen DHCP-Server verfügt.

/etc/dnsmasq.conf(Teil)


# dhcp-Die DHCP-Funktion wird ohne die Bereichslinie nicht aktiviert. Verwenden Sie daher eine der Linien entsprechend Ihrer Umgebung.

#Wenn sich keine anderen DHCP-Server im Subnetz befinden
# -------------------
#Es ist erforderlich, den IP-Bereich anzugeben, der dem Client, der Netzmaske usw. zugewiesen wurde.
# [Format] dhcp-range=tag:Hostname,Starten Sie IP,IP beenden(,Netzmaske(,Broadcastadresse(,Mietzeit)))

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

#Sie sollten auch das Standard-Gateway angeben
# [Format] dhcp-option=tag:Hostname,option:router,Gateway-Adresse

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

#Wenn sich im Subnetz ein anderer DHCP-Server befindet, der Ihnen eine IP-Adresse gibt
# ------------------
#Als DHCP-Proxy fungieren. Im Fall von Proxy wird das Format geändert, da der angegebene Bereich nur die IP ist, die Sie besitzen.
# [Format] dhcp-range=tag:Hostname,Host-IP,proxy
dhcp-range=tag:hogeHost,192.168.172.16,proxy

#Es scheint besser zu sein, die DHCP-Antwort um 1 Sekunde zu verzögern, um einen Startfehler aufgrund eines Fehlers in PXE auf der Clientseite zu verhindern.
dhcp-reply-delay=2

#Protokoll über DHCP
log-dhcp

3.4. PXE-Funktionseinstellungen

Die Person, die die Funktionen tftp und dhcp aktiviert, ist die Person, die die PXE-Funktion möchte. Daher gibt es für eine solche Person ein spezielles Einstellungselement. Die Einstellung für Raspai ist ein "magischer" Zustand, in dem nur eine Zeile erforderlich ist. Wenn Sie die PXE-Funktion jedoch auf einem anderen allgemeinen Computer als Raspai verwenden möchten, überprüfen Sie die Details anhand der Beispieldatei. Beachten Sie, dass der PXE-Server von dnsmasq, der diese eine Zeile nicht hat, vom Raspeye-Bootloader (bootcode.bin) ignoriert wird, sodass er ein erforderliches Element ist.

# /etc/dnsmasq.conf(Teil)
#Rasppie Bootcode.Eine Zeile ist erforderlich, damit bin als TFTP-Server erkannt wird
# ("Raspberry Pi Boot"Die Zeichenfolge kann nicht geändert werden)
# pxe-service=tag:PXE-Servername,0,"Raspberry Pi Boot"
pxe-service=tag:hogeHost,0,"Raspberry Pi Boot"

3.5 DHCP-Einstellungen pro Client und vorläufige Erstellung des TFTP-Stammverzeichnisses

Von hier aus fügen Sie einen Eintrag für jede Raspeltorte hinzu. Finden Sie die MAC-Adresse Ihres Raspeye heraus und fügen Sie zeilenweise Einträge hinzu.

/etc/dnqmasq.conf(Teil,Die MAC-Adresse ist ein geeigneter Wert)



#Einstellungen, wenn kein anderer DHCP-Server vorhanden ist
# (Weisen Sie jeder MAC-Adresse eine feste IP zu)
# --------------
# [Format] dhcp-host=Raspeye MAC-Adresse,set:Hostname,IP-Adresse zu geben,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

#Einstellungen für Proxy-DHCP-Einstellungen
#  -----
# [Format] dhcp-host=Raspeye MAC-Adresse,set:Hostname

# 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

Erstellen Sie nach dem Hinzufügen von Einträgen ein Unterverzeichnis mit einem Namen, der den Doppelpunkt der MAC-Adresse in einen Bindestrich unter dem Referenzverzeichnis ändert, das beim Festlegen von tftp-bezogenen Elementen angegeben wurde, damit beim Teststart von dnsmasq kein Fehler auftritt. Machen. (In der Produktion ist dies ein symbolischer Link zum Ordner / boot des Client-Betriebssystems.)

# 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

Damit sind die dnsmasq-Einstellungen abgeschlossen.

4. Grammatikprüfung von dnsmasq.conf

Führen Sie eine Syntaxprüfung für die abgeschlossene dnsmasq.conf durch

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

Das ist alles für diese Zeit. Nächstes Mal erstellt einen NFS-Server und importiert das Betriebssystem für Clients manuell.

Recommended Posts

Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 3: Installieren und Konfigurieren von dnsmasq)
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 2: PiServer-Analyse und alternatives Systemdesign)
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 4: Erstellen eines NFS-Servers und Importieren eines Client-Betriebssystems)
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 1: Zusammenfassung der Verfügbarkeit von plattenlosen Clients nach Modell)
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 7: Einstellung der TFTP-Route und Starttest für jeden Raspetorte)
Erstellen Sie eine Django-Umgebung auf Raspai (MySQL)
Erstellen Sie eine virtuelle Umgebung mit pyenv und venv
Erstellen Sie eine Python-Entwicklungsumgebung auf Raspberry Pi
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --2 PHP Einführung
Cross-Compilieren von Raspberry Pi und Erstellen einer Remote-Debug-Entwicklungsumgebung mit VS Code
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver. 1. Apache-Einführung
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen einer numerischen Berechnungsumgebung mit pyenv und miniconda3
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --3. Verwenden Sie MySQL
Erstellen Sie mit VirtualBox und Ubuntu eine Scikit-Lernumgebung für maschinelles Lernen
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Erstellen Sie eine Partition und installieren Sie Raspberry Pi OS
Erstellen einer Entwicklungsumgebung für die Python2.7-Serie mit Vagrant
Verwenden einer Webkamera mit Raspberry Pi
Erstellen Sie eine 64-Bit-Python 2.7-Umgebung mit TDM-GCC und MinGW-w64 unter Windows 7
Weihnachtsklassiker (?) Einen Weihnachtsbaum mit Raspberry Pi und Philips Hue anzünden
Erstellen Sie einen Kanji-Kompass mit Raspberry Pi und Sense Hat
[DynamoDB] [Docker] Erstellen Sie mit Docker-Compose eine Entwicklungsumgebung für DynamoDB und Django
Haustierüberwachung mit Rekognition und Raspberry pi
Erstellen Sie mit Laragon ganz einfach eine Entwicklungsumgebung
Wie wäre es mit einer virtuellen Umgebung mit Anaconda und einer Pip-Installation?
Erstellen Sie mit Docker-Compose eine schnelle API-Umgebung
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Erstellen Sie eine OpenCV-Python-Umgebung auf Raspberry Pi B +
Erstellen Sie mit pyenv eine virtuelle Umgebung für Python
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Erstellen Sie mit Neovim eine moderne Python-Umgebung
Erstellen Sie Linux in einer Windows-Umgebung. Schritte zum Installieren und Migrieren von Laradock
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Versuch und Irrtum]
Ich habe versucht, mit Raspberry Pi 4 eine Umgebung von Ubuntu 20.04 LTS + ROS2 zu erstellen
Erstellen Sie eine Datenanalyseumgebung, die die GitHub-Authentifizierung und Django mit JupyterHub verbindet
Erstellen eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (3) Empfangen einer Python-Datei
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
Erstellen Sie eine TensorFlow-Entwicklungsumgebung auf Amazon EC2 mit Befehlskopie
Erstellen Sie eine Entwicklungsumgebung für die C-Sprache mit einem Container
Erstellen Sie mit pulumi eine WardPress-Umgebung auf AWS
Erstellen einer Python-Umgebung mit virtualenv und direnv
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
MQTT Radicon Car mit Arduino und Himbeere
[Memo] Erstellen Sie eine virtuelle Umgebung mit Pyenv + anaconda
Erstellen Sie mit der Doker Toolbox eine Django-Entwicklungsumgebung
Erstellen einer Python-Umgebung mit OSX Elcapitan
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Erstellen Sie mit IntelliJ schnell eine Python Django-Umgebung