Erzeugen eines Containers mit Boardmitteln

Ein neuer Container wird erzeugt und dem LAN zugeordnet. Der Container kann wie ein selbständiger Rechner mit eigener IP-Adresse betrachtet werden. Der Container soll betreten und darin die Verbindung zum WAN getestet werden.

Container erste Schritte

Kurzanleitung für das Webinterface

Es wird vorausgesetzt, dass der konfigurierende PC via Konfigurationsnetzwerk die Netze LAN und WAN bereits auf dem Router schon eingerichtet hat und anschließend umkonfiguriert wurde, so dass er sich nun selber im LAN befindet.

  1. Webinterface des Routers mit einem Browser aufrufen:
  2. Im Menü "Administration -> Container" einen neuen Container erzeugen (Zauberstab-Symbol)
  3. Im Menü " Administration-> Container" Konfiguration des neu erstellten Containers aufrufen (Stift-Symbol)
  4. Bei "Bridge zu IP-Net" das LAN-Netzwerk auswählen und die IPv4-Adresse 192.168.2.3/24 im LAN-Netzwerk vergeben.
  5. Profil aktivieren durch Klick auf das blinkende Zahnrad in der Titelleiste
  6. Einloggen im Container, Das Kennwort lautet "root":
    $ ssh root@192.168.2.3
  7. Die IP-Adresse 192.168.2.1 als Default-Gateways im Skript anpassen:
    $ vi /bin/start_net.sh
  8. Mit dem Kommando wird die IP-Konfiguration getestet:
    $ ping 192.168.3.1
  9. Den Router als DNS-Server eintragen:
    $ echo "nameserver 192.168.2.1" > /etc/resolv.conf

Hinweise zur Kurzanleitung

  1. Vorausgesetzt wird, dass der Router über den Konfigurationsport 1 eingerichtet und die LAN- und WAN-Interface konfiguriert wurde. Der Router hat die LAN-IPv4-Adresse 192.168.2.1/24. Der PC, mit dem konfiguriert wurde, hat die IPv4-Adresse 192.168.2.2/24 aus dem Bereich des LANs erhalten und ist nun am Ethernet-Port Port 2 des LANs angesteckt.

  2. Mit dem Anlegen eines neuen Containers passieren zwei Dinge:
    • Ein neues Wurzelverzeichnis wird mit nützlichen Dateien und Verzeichnissen gefüllt. Das neue Wurzelverzeichnis wird mit seinem Bezeichner identifiziert.
    • Im Profil wird eine neue Instanz einer Containerkonfiguration mit einem Containernamen angelegt und mit dem neuen Wurzelverzeichnis verknüpft.
    Die Verknüpfung zwischen dem Bezeichner des Containers (z.B. container_234c7f1) und des Containernamens (z.B. container1) im Profil stellt sicher, dass der Container mit dem Wurzelverzeichnis der zugehörigen Konfiguration gestartet wird.

  3. Jeder Container braucht im Profil einen Eintrag mit der Konfiguration um gestartet werden zu können.

  4. Ein Container kann wie ein eigener Rechner mit einem eigenen Ethernet-Interface betrachtet werden. Dieses Interface muss zu einem der bestehenden Netzwerke gebridged werden. Um TCP/IP-Verbindungen wie z.B. eine SSH- oder eine Telenet-Session zu dem Container aufbauen zu können, benötigt das Ethernet-Interface im Container noch eine IPv4- und/oder eine IPv6-Adresse.

  5. Erst wenn das Profil aktiviert wurde, kann ein Container gestartet werden. Eine Instanz eines Containers benötigt weder BIOS, Bootloader noch Betriebssystem-Kernel, sondern "bootet" sofort das init-System namens "finit". Der Start eines Containers dauert daher nur wenige Sekunden.

  6. Der neu erstellte und nun gestartete Container enthält einen SSH-Server, der beim Containerstart automatisch gestartet wird. Es wurde ein Benutzer "root" angelegt. Mit einem beliebigen SSH-Client wie z.B. openssh oder putty kann eine Session aufgebaut werden. Das Kennwort lautet ebenfalls "root".

    Es wird dringend empfohlen, sofort das Kennwort zu ändern! Es sollte niemals ein ungesicherter Rechner in einem Netzwerk betrieben werden, selbst wenn keine WAN-Verbindung besteht. Im Container darf der Benutzer root uneingeschränkt Prozesse starten, solange die Resourcen des Router es hergeben. Ein ungesicherter Login mit Standardbenutzername und -Kennwort ist geradezu eine Einladung an Betreiber von Botnetzen.

    Mit dem Kommando "passwd" kann ein neues Passwort vergeben werden.

    Es ist ebenfalls sehr empfehlenswert, eine neue Benutzergruppe und einen neuen Benutzer "user" anzulegen, der nicht mehr alle Berechtigungen besitzt. Wenn möglich sollten Prozesse als "user" gestartet werden.

    Das Kommando "addgroup user" gefolgt von einem "adduser -G user" erzeugt die Gruppe und den Benutzer.

  7. Der Router soll als Default-Gateway für den Container fungieren, also muss dessen IPv4-Adresse als Default-Gateway nach dem Start des Containers als Route angelegt werden. Das Skript "/bin/start_net.sh" ist im Konifigurationsfile /etc/finit.conf eingetragen und wird deshalb nach dem Start des Containers aufgerufen. Es installiert die Default-Route. Mit dem minimalistischen Editor "vi" kann das Skript editiert werden: "vi /bin/start_net.sh". Mit der Taste "i" wird der Einfüge-Modus des Editors vi betreten. Nach dem Ändern der IP-Adresse zu 192.168.2.1 wird mit "<ESC> :" wieder in den Kommando-Modus zurückgewechselt. Die Taste "x" aktiviert das Kommando zum Speichern der Datei und beendet den Editor.

  8. Abgesehen von ping stehen noch weitere Werkzeuge zum Prüfen der Verbindung zur Verfügung wie z.B. "ping6", "nslookup", "traceroute" oder "traceroute6".

  9. Der Router kann als DNS-Relay arbeiten, wenn dessen IP-Adresse in "/etc/resolv.conf" eingetragen ist. Alternativ können statische IP-Adresenin der Datei "/etc/hosts" konifguriert werden.

Troubleshooting

  • Der Login in den Container schlägt fehl.
    Das kann daran liegen, dass der Container nicht gestartet werden kann. Im Menü " Status -> System Details -> Container" werden alle installierten Container und deren Zustand dargestellt.

  • Es wird mitprotokolliert, wann ein Container gestartet/gestoppt wird und ob der Vorgang gelingt. Das Log findet sich im Menü "Status -> Log-Ansicht Container"

  • Die ersten Console-Ausgaben eines startenden Containers werden nur dann in einem eigenen Log Menü "Status -> Log-Ansicht Container-Console" mitgeschrieben, wenn die entsprechende Checkbox bei einem Container aktiv ist. Dieses Log enthält keine Zeitstempel oder Containernamen, denn es schreibt die originalen Ausgaben des init-Systems des Containers mit. Es ist daher empfehlenswert, die Checkbox immer nur bei einem Container zu aktivieren, ansonsten ist eine Zuordnung zu einem bestimmten Container nicht einfach erkennbar.

  • Der Ping zu einem Ziel in funktioniert nicht.
    Das kann an den Netzwerkfiltereinstellungen des Routers liegen. Der Datenverkehr aus und zum Container wird genauso behandelt, als wenn der Container ein tatsächlich physisch vorhandenes Gerät wäre, das an einem Ethernet-Port angeschlossen ist. Bei aktivierten Netzfiltern muss also auch eine Ausnahmeregeln definiert werden.
    Es kann ebenfalls notwendig sein, die aus dem Container kommenden Pakete mit NAT-Filterregeln zu belegen (masquerade). Das kann der Fall sein, wenn Applikationen im Container mit Netzwerkgeräten in einem anderen LAN kommunizieren wollen, die keine Route für das Netzwerk besitzen, in dem der Container betrieben wird.

  • Die DNS-Auflösung im Container funktioniert nicht.
    Wenn der Router als DNS-Server im Container konfiguriert wurde, muss dieser auch als DNS-Relay arbeiten und selber Zugang zu einem echten DNS-Server haben. Das wird eingestellt im Menü "Dienste -> DNS".

Konfiguration herunterladen