Diese Dokumentation dient ausschließlich zu Bildungszwecken. Alle gezeigten IP-Adressen, Netzwerkkonfigurationen und LWI-Einträge sind rein fiktiv und wurden nur zur Veranschaulichung verwendet. Sie spiegeln keine realen Systeme oder Netzwerke wider.
Diese Inhalte sollen helfen, die theoretischen Konzepte von DHCP, DNS, Proxmox und anderen Netzwerk-Technologien besser zu verstehen.
Bevor ich mit diesem Projekt anfange, schaue ich mir an, welche Hardware ich besitze, um einen entsprechenden Rechner als leistungsfähigen Rechner verwenden könnte. Dazu habe ich mich für einen HPE Server entschieden. Der Server war nicht mehr in Betrieb und könnte dem gut zum experimentieren verwenden.
Hier wird der physische Umbau des Servers umgesetzt. Bauteile wie Prozessoren, Arbeitsspeicher, Festplatten, Netzwerkkomponente, werden hier ausgetauscht oder erweitert.
Spezifikationen:
| Vorher: | Nachher: | |
|---|---|---|
| Arbeitsspeicher: | 16 GB DDR4 | 128 GB DDR4 |
| CPU: | 1x Intel Xeon E5-2603 v3 1.60GHz | 1x Intel Xeon E5-2603 v3 1.60GHz |
| Festplatten | 6x 120 GB SSD | 6x 120 GB SSD |
Der Server braucht Mindestanforderungen für die Installation für Proxmox:
| Minimum Hardware: | Empfohlene Hardware: | Spezifikationen des Servers: |
|---|---|---|
|
|
|
Im Grunde genommen wäre eigentlich jeder PC, welches die minimalen Anforderungen entsprechen würde, ausreichen. Man könnte auch einen Laptop als Proxmox-Server aufsetzen.
Bevor man Proxmox installieren kann, muss zuerst ein USB-Stick mit einem Proxmox Image aufgesetzt werden. Dazu muss zuerst Proxmox von der offiziellen Website (proxmox.com) heruntergeladen werden.
Abbildung 1: Proxmox Installationsseite für ISO-Dateien
Sobald die ISO-Datei fertig heruntergeladen wurde, muss mit einem Imager-Tool (z.B. Rufus bei Windows, Etcher auf macOS oder Linux) und somit das Proxmox Image auf den USB-Stick installieren.
Sobald der USB-Stick mit dem Image installiert wurde, kann man diesen Stick in den Server einstecken. Dazu muss der Server noch eingeschaltet werden. Sobald man F11 (Oder eine andere Taste für Boot-Menu) drückt, sollte man die Option haben, den USB-Stick als «bootfähiges Medium» auszuwählen. Sobald dies durchgeführt wurde, erscheint ein Menü, ob man Proxmox installieren möchte. Wähle «Install Proxmox VE» aus, um Proxmox zu installieren.
Abbildung 2: Proxmox Installation auf dem Server
Um den Proxmox-Server zu konfigurieren, muss als erstes der EULA (End User License Agreement) zugestimmt werden. Im nächsten Schritt wird gefragt, welche Festplatte ausgewählt werden soll. Danach Standort, Datum und Uhrzeit. Als nächstes kommt das Einrichten eines Passworts und E-Mail-Adresse. Ein Passwort wird benötigt, damit man sich auf dem Server authentifizieren kann und eine E-Mail-Adresse wird benötigt, damit man wichtige Benachrichtigungen erhält wie kritische Fehlermeldungen oder Ausfall einer Festplatte, usw. Anschliessend muss dann nur noch die Netzwerkkonfiguration erstellt werden. Diese besteht aus dem Netzwerkadapter, Hostname FQDN (Fully Qualified Domain Name) IP-Adresse, Subnetzmaske, Gateway und DNS-Server. Danach wird das Betriebssystem mit diesen Konfigurationen installiert. Sobald die Installation fertig ist, kann man den Server neustarten und dann sieht man ein Proxmox Terminal.
Abbildung 3: Proxmox-Fenster für Passwort und E-Mail-Konfiguration
Die E-Mail-Adresse im Bild ist leider falsch. Diese wurde durch «lwi@qhs.ch» ausgetauscht worden.
Benutzername: root
Passwort: Test9876 (Dient nur als Test)
Abbildung 4: Proxmox-Fenster für Netzwerkkonfiguration
Die Einstellung in diesem Bild stimmen nicht mehr ganz. Die neue Konfiguration sieht so aus:
Im letzten Schritt wurden zwar Netzwerkkonfigurationen eingerichtet, doch sobald man einen Fehler in der Netzwerkkonfiguration findet und es umgehend ändern möchte, geht dies in einfachen Schritten.
Ein Server hat normalerweise 2 Ethernet-Ports (Oder sogar mehr bei manchen Modellen). Es ist wichtig zu merken, welchen Ethernet-Port ausgewählt werden soll. In meinem Fall habe ich den Ethernet-Port (eno1) ausgewählt.
Abbildung 5: Ethernet-Port 1 (eno1) wurde an Ethernet angeschlossen
Netzwerkkonfigurationsdatei finden, öffnen und bearbeiten:
Bevor man in Linux eine Konfigurationsdatei über das Terminal bearbeiten kann, muss man zuerst Admin-Rechte besitzen. Auf einem Ubuntu/Debian Rechner müsste es mit dem Befehl «sudo -s» klappen. Doch da Proxmox auch auf Linux basiert und die Befehle nicht alle gleich sind, wird der Befehl «su -» verwendet.
Um die vordefinierte Netzwerkkonfigurationsdatei zu finden, muss der Befehl «nano /etc/network/interfaces» eingegeben werden. In dieser Datei können dann die gewünschten Netzwerkeinstellungen wie IP-Adressen, Gateways und Netzwerk-Bridges für verschiedenen Netzwerkschnittstellen des Systems angepasst werden.
Abbildung 6: Netzwerkkonfiguration vorher Dieses Netzwerk war im Bereich 192.168.0.0
Abbildung 7: : Netzwerkkonfiguration nachher Dieses Netzwerk ist im Bereich 192.168.8.0
Die obigen Bilder zeigen, wie man diverse Funktionen am Server ändern kann. In diesen Bildern sieht man jedoch, dass die Netzwerkkonfiguration verändert wurden. Temporär wurde die neue «192.168.8.2». Dies hängt damit zusammen, dass während der Konfiguration des Servers ein Fehler beim Netzwerk auftauchte und deswegen die Konfigurationen verändert werden mussten. Dazu habe ich einen Router verwendet, der mit dem Internet verbunden war und so die Repositories auf dem Server installieren konnte. Danach wurden die Einstellungen fest auf «192.168.1.2» umgeändert.
Sobald die Datei fertig konfiguriert wurde, muss man nur noh «Ctrl + X» drücken, um den Editor zu beenden und dann die Taste «Y für Yes» und danach «Enter», um die Speicherung der Datei zu bestätigen.
Damit die neuen Netzwerkkonfigurationen aktualisiert werden können, wird der Befehl «systemctl networking restart» ausgeführt, um alle vorhandenen Netzwerkadapter des Servers neu zu starten. Dieser Befehl funktioniert in Ubuntu oder Debian basierte Linux Distros.
Abbildung 8: Veränderte Netzwerkkonfiguration des Servers
Somit wurden die neuen Netzwerkkonfigurationen gemacht.
Somit hat man bis jetzt einen Proxmox-Server und eine konfigurierte Netzwerkkonfiguration. Um restliche Änderungen vorzunehmen, muss man auf die Weboberfläche gelangen. Dies funktioniert mit der Adresse (in diesem Fall) http://(proxmox-server-ip):8006/. Sobald man diese IP-Adresse eingegeben hat, kommt man auf die Weboberfläche. Somit muss man nur noch einen Benutzername eingeben (normalerweise root) und dann ein Passwort, welches bei der Einrichtung bei der Installation von Proxmox erstellt wurde.
Abbildung 9: Proxmox Weboberfläche
Sobald man sich erfolgreich einloggen konnte, taucht eine Meldung auf, dass man «keine gültige Subskription» besitzt. Es gibt einen Weg, wie man diese Meldung umgehen kann.
Abbildung 10: Keine gültige Subskription Meldung
Dieser Schritt ist nur für Bildungszwecke gedacht.
Diese Meldung verhindert auch, dass der Proxmox Server auf die neusten Repositories und Updates gelangt.
nano /etc/apt/sources.list
nano /etc/apt/sources.list.d/pve-enterprise.list... Um die Fehlermeldung zu beheben und sicherzustellen, dass der Proxmox Server auf die neuesten Repositories und Updates zugreifen kann, müssen die Repository-Quellen aktualisiert werden. Dazu öffnet man die Dateien /etc/apt/sources.list und /etc/apt/sources.list.d/pve-enterprise.list mit dem Texteditor nano, mit dem Befehl: «nano /etc/apt/sources.list»
“nano /etc/apt/sources.list.d/pve-enterprise.list”
In diesen Dateien müssen Sie die Zeilen, die auf das veraltete Repository enterprise.proxmox.com verweisen, durch die neuen Adressen ersetzen:
“deb https://prx.aus.kamatera.com/proxmox/pve-no-subscription bullseye pve-no-subscription”
Speichern und schließen Sie die Dateien nach den Änderungen.
Repository aktualisieren und Pakete upgraden
Nachdem die Repository-Quellen aktualisiert wurden, müssen die Paketlisten mit dem Befehl «apt update» aktualisieren:
«apt update»
Anschließend können alle installierten Pakete auf die neuesten Versionen upgraden mit diesem Befehl:
«apt full-upgrade»
Bestätige die Aufforderung zur Installation der neuen Pakete. Nach Abschluss des Upgrades sollte die Fehlermeldung bezüglich des veralteten Repositorys nicht mehr angezeigt werden. Durch diese Schritte stellt man sicher, dass auf dem Proxmox Server auf die aktuellen Repositories und Updates zugreifen kann, um Sicherheitslücken zu schließen und neue Funktionen zu erhalten.
Der nächste Schritt und somit ein wichtiger Schritt wäre die Erstellung einer virtuellen Maschine. Eine virtuelle Maschine ist eine Software, die einen vollständigen Computer simuliert.
Bevor man eine virtuelle Maschine erstellt, muss man eine ISO-Datei besitzen, welches das Image für ein Betriebssystem enthält. Um dies zu erledigen, muss zuerst die ISO-Datei auf dem Rechner vorhanden sein und dann auf dem Proxmox Server hochgeladen werden.
Abbildung 11: Ort finden, wo ISO-Dateien auf dem Proxmox-Server hochgeladen werden
Um eine virtuelle Maschine in Proxmox zu erstellen, gehe oben auf den hellblauen Knopf mit der Aufschrift «Create VM» (oder auf Deutsch «VM erstellen»).
Abbildung 12: VM erstellen auf dem Proxmox Server
Um eine VM in Proxmox zu erstellen, müssen diese Elemente definiert werden:
Allgemeine Informationen:
Abbildung 13: Benennung der virtuellen Maschine
Betriebssystem:
Sytstem:
Disks:
CPU:
Memory:
Network:
Confirm:
Dieser Teil der Konfiguration wird als sehr wichtig betrachtet, weil es den Aufwand erspart, die virtuellen Maschinen einzeln aufzustarten. Dieser Schritt ist im Prinzip sehr einfach zu machen.
Als erstes geht man in die erstellte Virtuelle Maschine rein und unter Optionen, führe einen Doppelklick bei «Start at boot» und aktiviere den Haken. Drücke auf «OK», um die Änderungen zu speichern.
Abbildung 14: Automatisches booten der Ubuntu-VM mit dem Booten des Servers aktivieren
Sobald diese Schritte sorgfältig und erfolgreich durchgeführt worden sind, wird der Prozess automatisiert, sobald jedes Mal der Server eingeschaltet wird.
HINWEIS:
Abbildung 15: Datei der Konfiguration des DHCPs auf der Ubuntu-VM
Nach der Installation des DHCP-Dienstes muss der Server konfiguriert werden. Dies erfolgt durch Bearbeiten der Konfigurationsdatei mit dem Befehl «sudo nano /etc/dhcp/dhcpd.conf». Diese Datei enthält die Netzwerkinformationen für die Clients und ermöglicht die Konfiguration von Optionen wie IP-Adressbereichen, Lease-Zeiten und andren Netzwerkeinstellungen. In diesem Fall sieht meine Konfiguration so aus:
Abbildung 16: Konfiguration des DHCPs auf der Ubuntu-VM
Nachdem der DHCP-Dienst konfiguriert wurde, ist es dann an der Zeit, ob der Server funktioniert. Zuerst muss dabei der Dienst gestartet werden gefolgt von diesem Befehl: «sudo service isc-dhcp-server start». Um den DHCP-Status sehen zu können, muss man «sudo service isc-dhcp-server status» eingeben und dann kommt eine Passwortabfrage, falls man noch keine sudo-Rechte hat. Dann sollte das Fenster mit der Aktivitätsanzeige des DHCP-Dienstes so aussehen:
Wenn «Active: active (running)» steht, bedeutet es, dass der DHCP-Server funktioniert und aktiv ist. Wenn aber «Active: failed» stehen würde, funktioniert der DHCP-Dienst nicht. Ein «Active: failed» Status beim DHCP-Dienst kann aus verschiedenen Gründen auftreten.
Abbildung 17: DHCP-Dienst ist aktiv und funktioniert einwandfrei
Die Konfiguration eines eigenen DNS-Servers ist von Vorteil, weil dadurch mehr Kontrolle übernommen werden kann, bessere Sicherheit und mehr Anpassungsmöglichkeiten entstehen. Ein DNS-Server ermöglicht es Benutzern, sich Domainnamen anstelle von IP-Adressen zu merken. In diesem Dokument wird die Konfiguration von BIND9 behandelt, dem am häufigsten verwendeten Programm zur Verwaltung eines Nameservers unter Linux.
HINWEISE:
Öffne das Terminal und führe den Befehl «sudo apt install bind9» und danach «sudo apt install dnsutils» aus. Mit diesen Beiden Befehlen wird der DNS-Dienst installiert. Danach kann der DNS nun konfiguriert werden.
Die Standardkonfiguration fungiert als Caching-Server. Kommentiere einfach «/etc/bind/named.conf.options» aus und bearbeite sie, um die IP-Adressen der DNS-Server des ISPs festzulegen.
Abbildung 18: Konfiguration des Caching für den DNS-Server
Um die neue Konfiguration zu aktivieren, starte den DNS-Server neu. Führe an der Eingabeaufforderung Folgendes aus:
“sudo systemctl restart bind9.service”.
In diesem Abschnitt wird BIND9 als Primärserver für die Domain lwi.intra eingerichtet.
Forward—Lookup-Zonendatei bearbeiten. Um eine Forward-Lookup-Zone zu erstellen, muss man eine entsprechende Zonendatei erstellen. Diese Datei enthält die DNS-Einträge für die Domain. Hier ist ein Beispiel, wie eine Forward-Lookup-Zonendatei aussehen könnte:
“sudo nano /etc/bind/zones/db.lwi.intra”
Abbildung 19: Eintrag der Forward-Lookup-Zone in der globalen Konfiguration
Die Datei sieht dann wie folgt aus:
Abbildung 20: Konfiguration der Forward-Lookup-Zone
Erklärung der DNS-Einträge:
Reverse-Lookup-Zonendatei bearbeiten.
Um eine Reverse-Lookup-Zone zu erstellen, muss man eine entsprechende Zonendatei erstellen. Diese Datei ermöglicht die Zuordnung von IP-Adressen zu Hostnamen. Hier ist ein Beispiel, wie eine Reverse-Lookup-Zonendatei aussehen könnte:
Abbildung 21: Eintrag der Reverse-Lookup-Zone in die Globale Konfiguration
sudo cp /etc/bind/db.127 /etc/bind/db.192
Bearbeite dann die Datei «db.192»:
Abbildung 22: Konfiguration der Reverse-Lookup-Zone
Speichere diese Datei und starte dann anschliessend den DNS-Dienst neu mit dem Befehl:
sudo systemctl restart bind9.service
Somit wäre der Primärserver mit Bind9 schon konfiguriert.
Damit man aber ganz sicher sein kann, ob alles funktioniert, überprüfe ich mit dem Befehl sudo systemctl status bind9.service den Status des DNS-Dienstes Bind9:
Abbildung 23: Überprüfter Status des DNS-Dienstes (Bind9) und es funktioniert einwandfrei
Wenn eine Firewall aktiv ist, muss diese so konfiguriert werden, dass DNS-Anfragen zugelassen werden. Hier sind die Befehle, um die Firewall für BIND9 zu konfigurieren:
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
Diese Befehle öffnen die Ports 53 für TCP und UDP, die für DNS-Anfragen benötigt werden. Diese Methode ist hilfreich, falls die DNS-Verbindung noch nicht funktionieren sollte.
Nachdem der DNS nun konfiguriert wurde und dementsprechend funktioniert, ist es wichtig, den zu testen.
Mit dem Befehl named-checkzone lwi.intra /etc/bind/db.lwi.intra wird die Konfiguration einer DNS-Zone in BIND (Berkeley Internet Name Domain) überprüft. Diesen habe ich ausgeführt keinen Fehler erhalten.
Abbildung 24: Überprüfen, ob die DNS-Zone mit der Konfiguration übereinstimmt
Nachher habe ich den DNS-Dienst BIND9 neugestartet und dann mit nslookup den Test gemacht. Das Ergebnis ist in diesem Bild zu sehen:
Abbildung 25: DNS-Dienst neugestartet und nslookup ausgeführt
Mit diesen Schritten konnte der Primärserver für den DNS in der Ubuntu-VM konfiguriert werden. Dieser DNS wird für den Gebrauch eines internen Netzwerks benötigt.
Ein DNS dient dazu, dass man sich Namen statt IP-Adressen merken kann und die Kommunikation innerhalb eines Netzwerks vereinfacht wird. In diesem Abschnitt der Dokumentation wird erklärt, wie man einen Drucker zum DNS-Server hinzufügen kann, damit dann Benutzer innerhalb des Netzwerks einen Namen statt eine IP-Adresse eingeben können.
Um dann den Drucker im DNS zu integrieren, muss die Forwarding-Zone nochmals bearbeitet werden. Dort wird ein Eintrag gemacht, wo dann der Drucker eingetragen wird. Diese Datei wird mit dem Befehl sudo nano /etc/bind/db.lwi.intra geöffnet. Sobald man diese Datei öffnet, muss ganz unten der Drucker eingetragen werden. So würde die Forwarding-Zone aussehen, wenn man den Drucker hinzufügt:
Abbildung 26: Bearbeitete DNS-Datei mit dem Eintrag des Druckers mit der statischen IP-Adresse des Druckers
Nachdem dies dann gemacht wurde, muss de DNS-Dienst neugestartet werden mit dem Befehl sudo systemctl restart bind9.
Somit müsste dann der DNS-Eintrag des Druckers funktionieren.
Den Drucker habe ich im DNS als «Epson1» benannt. Um dann nun auf den Drucker drauf zu gelangen, muss dann der Name und die Domain eingegeben werden. Die Adresse des Druckers lautet somit «Epson1.lwi.intra». Diese Adresse gab ich in meinem Browser ein und das Ergebnis sieht man im untenstehenden Bild:
Abbildung 27: Zugriff auf den Drucker über die Domain des Druckers
Diese Funktion geht nicht nur im Browser, sondern funktioniert auch in den Einstellungen, wenn man einen Drucker hinzufügen möchte.
Abbildung 28: Hinzufügen eines Druckers in Windows via Domain
Nach der Eingabe erkennt es den Drucker sofort und kann somit mit dem nötigen Treiber und Namen hinzugefügt werden.
Ein Container ist Teil des Themas «Virtualisierung», ist aber komplett anders als eine virtuelle Maschine.
Ein Container ist eine Methode, um Computerprogramme zu isolieren. Im Gegensatz zu einer virtuellen Maschine, die ein komplettes Betriebssystem nachahmt, nutzt ein Container spezielle Funktionen des vorhandenen Betriebssystems. Dies ermöglicht es, mehrere Anwendungen auf einem Computer unabhängig voneinander laufen zu lassen, ohne dass sie sich gegenseitig stören.
Kurz gesagt: Container sind eine leichtgewichtige Art, Anwendungen zu trennen und effizient auf einem gemeinsamen System laufen zu lassen.
Bevor man einen Container erstellt, muss man sich eine Vorlage aus dem Internet herunterladen, worauf der Container dann basiert. Dies muss auf den Proxmox-Server importiert werden, damit dann draus ein Container erstellt werden kann.
Bei der Auswahl einer Datei kann man weitere Informationen angeben, doch die sind für dieses Projekt nicht relevant. Man kann die Einstellungen genau so lassen und weitermachen.
Abbildung 29: Eine Container-Vorlage auf dem Proxmox-Server hinzufügen
Danach muss man nur noch auf «Upload» drücken und die Vorlage wird auf dem Proxmox-Server hochgeladen.
Um in Proxmox einen Container zu erstellen, geht man auf die obere Rechte Ecke der Weboberfläche und drückt auf «Create CT», um einen Container zu erstellen. Hierbei wird ein Container für Pi-Hole erstellt. Ab da folgen dann diese Schritte:
Abbildung 30: Das Hinzufügen einer Container-Vorlage mit den Standard-Konfigurationen
Abbildung 31: 1. Container benennen und Passwort definieren
Abbildung 32: 2. Container-Vorlage auswählen
Abbildung 33: 3. Speichergrösse des Containers definieren
Abbildung 34: 4. CPU-Kerne wählen
Abbildung 35: 5. Arbeitsspeicher für Container gewählt
Abbildung 36: 6. Netzwerkkonfiguration angepasst für Container
Abbildung 37: 7. DNS-Adressen hinzufügen (Ist unnötig, da der DNS-Server schon in Proxmox vorhanden ist)
Abbildung 38: 8. Konfiguration für Container bestätigen
Nachdem diese Schritte durchgeführt wurden, ist der Container für PiHole nun erstellt.
Mir fiel auf, dass ich beim Container automatisch DHCP eingestellt habe. Ich möchte dies aber gerne umändern. In diesem Abschnitt der Doku wird gezeigt, wie man das bei einem Proxmox Container macht. Im Bild wird gezeigt, wie man diese konfiguriert.
Abbildung 39: Netzwerkkonfiguration eines Containers auf einem Proxmox Server
Mit diesem Schritt weisst du nun, wie man die Netzwerkschnittstelle eines Containers ändert.
Pi-hole ist eine Netzwerk-weite Werbeblocker-Software, die als DNS-Sinkhole und optional als DHCP-Server fungiert. Sie ist für den Einsatz auf eingebetteten Geräten mit Netzwerkfähigkeit konzipiert, wie dem Raspberry Pi, kann aber auf jedem Linux-System installiert werden.
Abbildung 40: Terminaldarstellung vom Pi-Hole-Logo
Um Pi-Hole zu installieren, muss man zuerst in den Container einsteigen. Dazu muss man in der Proxmox-Weboberfläche auf den Container klicken und dann auf «Console». Dort öffnet sich ein Terminal, in dem man die folgenden Befehle ausführen kann:
curl -sSL https://install.pi-hole.net | bash
Abbildung 41: Installation von PiHole auf dem Ubuntu-Container
Dieser Befehl lädt das Installationsskript herunter und führt es aus. Während der Installation werden verschiedene Fragen gestellt, die man beantworten muss.
Abbildung 42: Diese Meldung erscheint, sobald man Pi-Hole installiert. Diese Meldung ist ein Hinweis, dass das Programm einen Ad-Blocker im Netzwerk hinzufügt, welches Pi-Hole ist
Danach folgen weitere Schritte, die unternommen werden müssen:
Abbildung 43: Eine Meldung, dass eine statische IP-Adresse eingerichtet werden sollte, bevor man weiter macht
Abbildung 44: Statische IP für Pi-Hole konfigurieren
Abbildung 45: DNS-Provider konfigurieren
Abbildung 46: Ich habe den DNS-Server als 1 genommen und den Gateway als 2 für die Ausfallsicherheit genommen
Abbildung 47: Installation Weboberfläche und Web Server
Abbildung 48: Eine Darstellung, wie das in der Installation ungefähr aussehen könnte
Abbildung 49: Installation von Pi-Hole
Nach der Installation wird ein Passwort generiert, das man sich am Besten notieren sollte.
Nach der Installation kann man auf die Weboberfläche von Pi-Hole zugreifen. Dazu gibt man in einem Webbrowser die IP-Adresse des Containers ein, gefolgt von /admin. Also zum Beispiel: http://192.168.1.100/admin
Abbildung 50: Anmeldefenster von Pi-Hole
In der Weboberfläche kann man verschiedene Einstellungen vornehmen, wie zum Beispiel:
Abbildung 51: Pi-Hole Dashboard ohne Statistiken
Um Pi-Hole als DNS-Server zu verwenden, muss man in den Netzwerkeinstellungen der Clients die IP-Adresse des Pi-Hole-Containers als DNS-Server eintragen.
Abbildung 52: Adlist in einer neuen Version von Pi-Hole finden
Abbildung 53: Dieses Bild zeigt, wenn man die Gravitation aktualisiert
Abbildung 54: In den DNS-Einstellungen falsche Einstellungen gewählt, wo sich der Fehler ergeben hat
Um zu testen, ob Pi-Hole korrekt funktioniert, kann man versuchen, eine Webseite aufzurufen, die normalerweise Werbung enthält. Wenn Pi-Hole korrekt konfiguriert ist, sollte die Werbung blockiert werden.
Abbildung 55: Versucht auf eine Casino-Website zu gelangen, nur um zu sehen, dass es nicht funktioniert. Pi-Hole funktioniert somit
Um Pi-Hole auf dem neuesten Stand zu halten, sollte man regelmäßig Updates durchführen. Dies kann man über die Weboberfläche oder über die Kommandozeile mit folgendem Befehl tun:
pihole -up
Dieser Befehl aktualisiert Pi-Hole auf die neueste Version.
Pi-Hole ist ein leistungsfähiges Tool zur Blockierung von Werbung und Tracking auf Netzwerkebene. Es bietet eine einfache Möglichkeit, den Netzwerkverkehr zu kontrollieren und zu optimieren. Durch die Installation in einem Proxmox-Container kann Pi-Hole effizient und isoliert betrieben werden.
Dieser Schritt hat ebenfalls noch Relevanz, weil es darum geht, die Website auf den lokalen Webserver drauf zu laden. Somit können die Polygraphen, die ebenfalls an diesem Projekt dran beteiligt sind, einen Live-Überblick zu erhalten und somit ein Responsive Design für Smartphone und Tablet erstellen können. Somit hat jeder Stress und können früher fertig werden. In diesem Bereich wird einfach dokumentiert, wie ich meine Seite auf den Server deponiert habe. Wir in der LWI haben schon einen funktionierenden Server. Einen Proxmox-Server, um genau zu sein. Die Dokumentation befindet sich hier: LWI-Netz-Server (Doku).docx
Zuerst muss ich mir wieder Zugriff auf den Proxmox-Server verschaffen, damit ich Einstellungen vornehmen kann. Ich werde dann die Server-Version von Ubuntu draufladen, damit die virtuelle Maschine auf mehr Ressourcen auf rechnerische Leistung hat. Somit kann der Webserver dann besser funktionieren. Dabei würde ich dann ein entsprechendes ISO-Image der Ubuntu-Server-Version draufladen, um damit dann starten zu können.
Abbildung 66: Gehe auf "local (Servername)" und dann auf "ISO-Images", wo ISO-Files drauf sind. Gehe auf "Upload", um ein weiteres ISO hochzuladen
Sobald das schnell erledigt wurde, würde ich dann eine neue VM erstellen und dann wars das fürs erste. Wie man eine neue virtuelle Maschine in Proxmox erstellt, dokumentierte ich ebenfalls bei der Proxmox-Dokumentation. Wie man Ubuntu-Server einrichtet, findest du auf dieser Dokumentation: https://ubuntu.com/tutorials/install-ubuntu-server#1-overview. Ubuntu-Server ist im Prinzip anders als die Desktop Variante, da bei der Server-Version mehr mit der Kommandozeile (Bash) gearbeitet wird.
Abbildung 67: Somit wurde die neue virtuelle Maschine für Ubuntu-Server erstellt
Empfehlung: Verwendet SSH auf eurem Host-Rechner, um den ganzen Aufwand zu ersparen.
Damit ich von meinem Host-Laptop auf den Ubuntu-Server zugreifen kann, muss ich zuerst das Terminal auf meinem Computer öffnen. Falls du ein Mac oder Linux Rechner haben solltest, müsste eine vorhandene Applikation namens «Terminal» geben. Öffne dieses Programm. Dann melde dich über das Terminal mit SSH auf den Zielrechner. Bei mir wäre das in dem Fall «ssh lwi_webserver@192.168.1.5». Danach gib ich das Passwort der virtuellen Maschine ein und fange dann mit der spannenden Mission fort.
Abbildung 68: SSH-Anmelung über Powershell in Windows
Nun ist es an der Zeit einen echten Webserver zu installieren. Für «Linux-Ebene» entscheide ich mich fürs Programm «Apache».
sudo apt update
sudo apt install apache2 -y
Abbildung 69: Der Apache Webserver wird über das Terminal installiert
sudo systemctl start apache2
sudo systemctl enable apache2
Abbildung 70: Der Apache Webserver wurde nun für den Autostart konfiguriert, damit jedes Mal, wenn der Server neugestartet werden sollte, das Programm Apache automatisch neugestartet werden soll.
sudo mkdir -p /var/www/html/christoph-haas
Abbildung 71: Ordner für meine Website wurde für Apache erstellt
sudo chown -R www-data:www-data /var/www/html/christoph-haas
Abbildung 72: Die entsprechenden Berechtigungen wurde nun für den Ordner meiner Website gesetzt
Für den nächsten Schritt würde ich SCP verwenden, um den Ordner meiner Website nun auf den Linux-Server übertragen zu können. Ich erstelle dafür zuerst einen neune Ordner, wo die Dateien transferiert werden und danach zu diesem Verzeichnis kopiert werden: «/var/www/html/christoph-haas».
Abbildung 73: Zuerst lokalisiere ich den Ordner, den ich gerne übertragen möchte. In diesem Fall ist der im Downloads-Ordner gespeichert
Abbildung 74: Auf dem Linux-Server würde ich zum Verzeichnis «/home/lwi_webserver/» wechseln, da dort der aktuelle User angemeldet ist und das sein Verzeichnis ist.
Abbildung 75: Verwende diesen rotmarkierten Befehl, um eine Datei auf den entsprechenden Pfad zu kopieren. Dies habe ich mit dem Ordner meiner Website gemacht und es gäbe noch mehr Dateien, die alle erfolgreich übertragen wurden.
In Linux über das Terminal einen Ordner zu verschieben, sollte man kennen, wenn man sich die Grundlagen zu Linux anschaut. Dies macht man so:
Abbildung 76: Zuerst schaue ich mit "ls" nach, ob der Ordner auch wirklich im Verzeichnis "/home/lwi_webserver/" ist. Ja, ist es. Anschliessend übertrage ich den Ordner "Christophs Portfolio_V2" in den Ordner für meine Website, welches der Webserver Apache dann verwenden wird.
Ich konfiguriere anschliessend einen Virtual-Host und erstelle eine Text-Datei, indem ich den Befehl “sudo nano /etc/apache2/sites-available/Christoph-haas.conf” eingebe. So sieht dann der anschliessende Inhalt aus:
Abbildung 77: Ich erstelle somit eine Konfigurationsdatei für meine Seite und auf dem Bild sieht man, was alles drin stehen muss. Elemente wie Fehler-Log-Dateien und auch, wo man die Website finden kann.
Füge deinen Inhalt je nach Bedarf an, aber es sollte in die Richtung gehen, wie es in Abbildung 52 aussehen sollte. Speichere dann die Datei mit «Ctrl+X zum beenden, dann Y für Yes und Enter»
sudo a2ensite christoph-haas.conf
sudo a2dissite 000-default.conf
sudo systemctl restart apache2
Abbildung 78: Habe nun die restlichen Konfigurationen übernommen und somit den Apache-Dienst neugestartet
sudo ufw allow 80/tcp
Abbildung 79: Der Port 80 für HTTP-Verkehr konnte nun zugelassen werden
Nun können andere Personen im selben Netzwerk auf meine Webseite zugreifen, indem sie die IP-Adresse des Servers in ihrem Webbrowser eingeben. Diese wird dann mit einem Domainnamen (DNS) umkonfiguriert, damit wenig bis keine Komplikationen entstehen. Ich werde nun einen DNS-Eintrag erstellen.
Es stellte sich heraus, dass ich einen Fehler machte und es deswegen nicht ging. Hier liste ich Dinge auf, die ich tat, um mein Problem zu lösen:
Abbildung 80: Ich verschob meinen Website-Ordner in einen anderen Ordner und benannte den um, damit weniger Verwirrung entsteht.
sudo nano /etc/apache2/sites-available/Christophs-Portfolio.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName christophs-portfolio.local
DocumentRoot /var/www/html/christoph-haas
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo a2ensite Christophs-Portfolio.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl restart apache2
Um von einem externen Gerät aus zu testen:
192.168.1.5 christophs-portfolio.local
(Ersetze 192.168.1.5 durch die tatsächliche IP-Adresse deines Servers)
http://christophs-portfolio.local
Wenn alles korrekt konfiguriert ist, solltest du nun deine Website sehen.
Abbildung 81: In diesem Bild erkennt man, dass der neuste Eintrag erkannt wurde und kein Fehler aufzeigt
Abbildung 82: Aus der db.lwi.intra-Datei rausgegangen und "checkconf", sowie "checkzone" ausgeführt, ob alle mit der Datei in Ordnung ist, bevor man mit dem nächsten Schritt weiter macht
Abbildung 83: Der Bind9-Dienst (DNS-Dienst bei Linux) neugestartet. Scheint kein Problem zu haben
<VirtualHost *:80>
ServerName christoph-haas.net
ServerAlias www.christoph-haas.net
DocumentRoot /var/www/html/christoph-haas.net/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo mv "/var/www/html/Christophs_Portfolio_V2" "/var/www/html/christoph-haas.net"
cd /var/www/html/christoph-haas.net/
mkdir public_html
mv index.html public_html/
sudo chmod -R 755 /var/www/html/christoph-haas.net/assets
sudo chmod -R 755 /var/www/html/christoph-haas.net/projects
sudo chmod 644 /var/www/html/christoph-haas.net/public_html/index.html
Abbildung 84: DNS funktioniert zwar als Eintrag, aber ich muss beim Server noch ein paar Änderungen vornehmen, damit meine Website dann ganz angezeigt wird.
Öffne deine Website in einem Browser, um sicherzustellen, dass sie korrekt angezeigt wird.
Ein Samba-Dienst im Netzwerk ermöglicht es, einen Linux-File-Server zu erstellen, auf dem Benutzer Dateien speichern und abrufen können. Diese Anleitung erklärt, wie man in Linux ein Verzeichnis erstellt, Samba als File-Server konfiguriert und Benutzern Berechtigungen für Freigaben erteilt.
Falls Samba noch nicht installiert ist, kann es mit folgendem Befehl installiert werden:
sudo apt-get install samba samba-common smbclient cifs-utils
Der Status des Samba-Dienstes lässt sich mit diesem Befehl überprüfen:
sudo service smbd status
Abbildung 85: Installation des Samba-Dienstes über das Terminal
Ein Ordner für Lernende kann wie folgt erstellt werden:
sudo mkdir -p /srv/samba/lernende
sudo chown nobody:nogroup /srv/samba/lernende /
Abbildung 86: Die Befehle, die ausgeführt wurden, um den Ordner zu erstellen und so umzukonfigurieren, dass keine Gruppe Besitzer ist
Die Samba-Konfigurationsdatei kann mit folgendem Befehl bearbeitet werden:
sudo nano /etc/samba/smb.conf
Globale Konfiguration:
Abbildung 87: Die Konfiguration für die Global-Einstellungen
Am Ende der smb.conf-Datei kann folgende Konfiguration für die Lernenden-Freigabe hinzugefügt werden:
Abbildung 88: Konfiguration für die Freigabe des Lernenden-Ordners
Benutzer erstellen und zu Gruppen hinzufügen:
Abbildung 89: Erstellung von Gruppen und den schon vorhandenen Benutzer in diese Gruppe hinzugefügt
Benutzer zur Samba-Datenbank hinzufügen:
sudo smbpasswd -a (Benutzername)
Abbildung 90: Benutzer zu "smbpasswd", also zur Samba-Datenbank hinzugefügt
Besitzer für den freigegebenen Ordner ändern:
Abbildung 91: Rechte und Besitzer ändern für den Lernenden-Ordner
Samba-Dienst neustarten:
sudo systemctl restart smbd
Abbildung 92: Status von Samba überprüfen, ob alles einwandfrei funktioniert (Ja, tut es).
Auf einem Windows-Rechner:
Abbildung 93: Verbinden mit einem Netzlaufwerk im Windows-Explorer
Abbildung 94: Den Server über Windows finden, um auf die Lernende-Freigabe zuzugreifen
Abbildung 95: Dieses Fenster taucht auf, wenn man auf das Verzeichnis zugreift.
Abbildung 96: Schritte zum Verbinden mit dem Samba-Laufwerk unter Windows
Nach erfolgreicher Authentifizierung sollte die "Lernenden-Freigabe" sichtbar und zugänglich sein.
Abbildung 97: Überprüfung des Zugriffs und der Berechtigungen auf das Samba-Verzeichnis
Diese Konfiguration ermöglicht einen einfachen und direkten Zugriff auf die Samba-Freigabe von jedem Windows-Computer im selben Netzwerk aus.
Um Berechtigungen für Ordner zu setzen, wird oft die numerische Notation verwendet:
| Zahl | Bedeutung | Berechtigungen |
|---|---|---|
| 0 | Keine Rechte | --- |
| 1 | Nur Ausführen | --x |
| 2 | Nur Schreiben | -w- |
| 3 | Schreiben und Ausführen | -wx |
| 4 | Nur Lesen | r-- |
| 5 | Lesen und Ausführen | r-x |
| 6 | Lesen und Schreiben | rw- |
| 7 | Alle Rechte | rwx |
Beim Befehl sudo chmod -R 2770 /srv/samba/lernende bedeutet:
Diese Einstellungen gewährleisten, dass der Ordner für die Lernenden-Gruppe vollständig zugänglich ist.
Nun wird getestet, ob es möglich ist, Daten auf dieser Freigabe abzuspeichern.
Somit funktionieren die Berechtigungen für diese Freigabe für die Lernende Gruppe.
Ich war sehr froh, an diesem Projekt teilnehmen zu können. Das Serverprojekt hatte mir gezeigt, wie man einen Server in ein Netzwerk integriert, der alle notwendigen Dienste zur Verfügung stellt, die die Clients benötigen. Mit Proxmox lernte ich auch, wie man die ganzen Serverdienste wie DHCP, DNS, Ad-Blocker und Samba mit Linux-Befehlen einrichtet. Außerdem habe ich gelernt, wie man ein Synology NAS als SMB einbindet. Ich hoffe, dass dieses Handbuch für einen Nachfolger oder einen anderen Studenten, der genau dasselbe oder ein ähnliches Serverprojekt mit einer Linux-Umgebung machen muss, nützlich ist und alles verständlich erscheint.