Roadwarrior bei OpenVPN anlegen

Das anlegen eines Roadwarrior bei OpenVPN kann auf der Kommandozeile mit wenigen Befehlen erfolgen. Man gibt dazu einfach die folgenden Befehle ein.

cd /etc/openvpn/easy-rsa/
./easyrsa gen-req MaxMustermann
cp pki/private/MaxMustermann.key /etc/openvpn/client-configs/keys/
./easyrsa sign-req client MaxMustermann
cp pki/issued/MaxMustermann.crt /etc/openvpn/client-configs/keys/
cd /etc/openvpn/client-configs/
./make-config.sh MaxMustermann

Danach befindet sich in dem Ordner /etc/openvpn/client-configs/files/ eine Datei mit dem Namen MaxMustermann.ovpn, welche das Zertifikat und und die Konfiguration für den Roadwarrior enthält.

Erstellung eines USB-Sticks für eine Windows 10 Installation unter MacOS 11

Um ein Windows 10 zu installieren benötigt man ein brootfähiges Installationsmedium. Üblicher Weise ist dies heute USB-Stick. Kürzlich stand ich für der Frage: Wie kann ich einen solchen bootfähigen USB-Stick mit dem von der Webseite von Microsoft runter geladenen ISO-Image erstellen, wenn ich nur einen MacBook mit MacOS 11 zu Hand habe?

Man vermutet, dass die Erstellung dieses USB-Sticks nicht weiter schwer ist und man alles notwendige dafür bei Microsoft runterladen kann. So einfach ist die Erstellung des USB-Sticks unter diesen Bedingungen aber leider nicht. Microsoft hat in dem ISO-Image von Windows 10 eine Datei, die größer als 4 GB ist. Das üblicher Weise auf USB-Sticks zum Einsatz kommende Dateisystem FAT32, kann jedoch nur mir Dateien bis maximal 4 GB umgehen. Somit können die Daten des ISO-Images nicht einfach auf einen bootfähigen USB-Stick kopiert werden. Bei Verwendung des Tool zum Erstellen des Windows 10 USB-Sticks von Microsoft, wird der USB-Stick automatisch mit dem moderneren NTFS Dateisystem formatiert. Dieses Tool läuft aber nur unter Windows und nicht unter MacOS. Zudem kann MacOS nicht mit NTFS umgehen.

Lösung:

Nach einigen Versuchen und nicht funktionierenden Ansätzen habe ich die folgende Lösung gefunden.

  • Installation einer virtuellen Windows 10 Installation auf dem Mac aus dem ISO-Image
  • Starten des virtuellen Windows 10
  • Einbinden des USB-Stick in das virtuelle Windows
  • Erstellung des USB-Stickt mit dem Tool zum eines Windows 10 USB-Sticks von Microsoft innerhalb der virtuellen Maschine

Für die virtuelle Windows 10 Maschine habe ich die Software VirtualBox verwendet. Damit man den USB-Stick in die Maschine einbinden kann, wird zusätzlich das Extensionpack von Virtualbox benötigt. Sofern man Homebrew installiert hat, kann man diese Software ganz einfach mit den folgenden Befehlen auf der Kommandozeile installieren.

brew install virtualbox
brew install virtualbox-extension-pack

Wer mag kann aber natürlich auch eine andere Software für die virtuelle Maschine verwenden. Mit Parallels oder VMware geht das ganze genau so gut.

Bau eines Gaming PC

Da meine PC’s alle eher für die Büroarbeit ausgelegt sind und einige Spiele wie Minecraft besser auf einem PC als auf einer Spielekonsole zu spielen sind, wünschte Simon sich schon länger einen Gaming PC. Ein Wunsch, mit dem er bei mir natürlich offene Türen einrannte. Ich kann mich schließlich noch gut an meine Jugend erinnern, in welcher ich selber PC’s für Spiele zusammengebaut habe. Vieles meines Wissens über Computer kommt noch aus dieser Zeit.

Wie bekommt Simon seinen Gaming PC?

Nach einiger Überlegung entstand der folgende Plan. Ich helfe Simon die richtigen Teile rauszusuchen und er baut diesen PC selber zusammen, um etwas über Computer zu lernen.

Es gibt im Internet diverse Anleitungen für den Bau von Gaming PC und auch diverse Videos darüber sind zu finden. Somit ist es für einen ITler wie mich nicht sonderlich schwierig, die richtigen Teile zusammen zu suchen und zu bestellen. Bei der Auswahl der Teile waren mir folgenden Punkte wichtig:

  • Möglichst günstige Anschaffungskosten
  • Geringe Lautstärke
  • Aktuelle Spiele sollen in bei einer FullHD Auflösung mit allen Details laufen
  • Geringer Stromverbrauch für die Leistung
  • USB-C Anschluss, damit er für die zukünftigen Endgeräte gerüstet eist.

Welche Bauteile?

Meine Wahl viel auf ein Mainboard mit AMD Ryzen CPU und B550 Chipsatz. Mainboards mit diesen neuen Mittelklasse Chipsatz sind wesentlich günstiger, als die Highend Mainboards mit dem X570 Chipsatz. Im Gegensatz zu den älteren Chipsätzen B450 und X470, beherrscht der B550 Chipsatz PCIe 4.0 Lanes. Diese ermöglicht den besonders schnellen Betrieb von M2 SSDs und USB 3.2 Gen2 Ports. Als Grafikkarte habe ich mich für eine Sapphire Pulse Radeon RX 5500XT 8GB GDDR6 entschieden. Der neue bereits in 7-nm-Fertigung hergestellt Chip dieser Grafikkarte ermöglicht die Darstellung aller Details bei FullHD in aktuellen Spielen und verbraucht vergleichsweise wenig Strom.

Liste der Bauteile

ArtModellbezeichnung und Amazon-LinkPreis im November 2020
MainboardGigabyte B550M AORUS PRO-P 110,59- €
GrafikkarteSapphire Pulse Radeon RX 5500XT 8GB GDDR6205,40- €
CPUAMD Ryzen 3 3100, 4x 3.60GHz, boxed 102,99- €
CPU KühlerAlpenföhn Ben Nevis Advanced 25,99- €
GehäuseAerocool AEROONEMINI, Micro ATX PC-Gehäuse48,57- €
HauptspeicherCrucial Ballistix DDR4-3200 16GB K2 RT 69,11- €
SSDKingston A2000 M.2 2280 1TB104,90- €
Netzteilbe quiet! System Power 9 400W ATX 2.4 39,90- €
Summe:707,45- €

Der Gaming PC wird zusammengebaut

Nachdem die Teile geliefert wurden, haben Simon und ich uns ein Wochenende Zeit genommen, um den PC zusammenzubauen. Wie dies funktioniert hat, habe ich in dem folgenden Video festgehalten.

Fazit

Es war ein spannendes Vater-Sohn-Projekt, bei welchem ich mich wieder in meine Kindheit zurückversetzt fühlte. Wir hatten einen riesigen Spaß. Zudem war es interessant zu sehen, was diese günstigen Gaming PC’s in der heutigen Zeit alles leisten können. Da hat sich in letzter Zeit sehr viel getan.

Was bedeutet die Kennzeichnung A1 und A2 auf SD-Karten?

Beim tausch von microSD Karten habe ich entdeckt, dass die neueren Karten anstelle der Kannzeichnung A1 jetzt die Kennzeichnung A2 tragen, obwohl die UHS-Klasse U3 und somit die selbe ist. Die UHS Klasse U3 steht für mindestens 30 MB pro Sekunde und war mir bekannt, aber für was steht A1 und A2?

Eine Recherche im Internet zeigte mir, dass A1 und A2 ein Kennzeichen für die App Performance Klasse ist. Diese kennzeichnet die IOPS, die eine SD Karte schafft. IOPS steht für Input/Output operations Per Second und meint somit die zufälligen Lese- bzw. Schreiboperationen pro Sekunde, welche die SD Karte durchführen kann. Konkret müssen die Katen für A1 und A2 die folgenden IOPS können:

App Performance ClassMinimum bei zufälligem LesenMinimum bei zufälligem Schreiben
A11500 IOPS500 IOPS
A24000 IOPS2000 IOPS

Eine SD-Karte mit der App Performance Klasse A2 schafft somit im Minimum mehr als doppelt so viele Lese- und vier mal so viele Schreiboperationen bei einer durchschnittlichen Nutzung. Dies ist für Anwendungen die viel auf der Karte lesen und schreiben natürlich ein deutlicher Vorteil. Zudem kosten SD-Karten der App Performance Klasse A2 inzwischen kaum mehr. Ich werde zukünftig also immer darauf achten und möglichst welche mit A2 nehmen. Der Klassiker einer Micro SD-Karte mit A2 für 4k Videoaufnahmen mit Aktioncams, Drohnen usw. ist hier natürlich die SanDisk Extreme microSDXC UHS-I Speicherkarte. Den Amazon-Link mit den aktuellen Preisen von dieser und ihren kleinen Bruder der SanDisk Ultra mit A1 verlinke ich im folgenden mal. Aktuell ist der Preisunterschied gerade mal ein Euro, aber das kann sich ja immer schnell ändern.

Tausch einer defekten Festplatte in einer Synology NAS

Wie so häufig in letzter Zeit, saß ich diese Woche im Homeoffice und arbeitete vor mich hin. Plötzlich ertönte ein lauter Signalton. Ich war zunächst erschrocken und stellte dann fest, das dieser von meinem NAS (Network Attached Storage) kam. Mein NAS ist eine Disk Station DS416play von der Firma Synology, die ich vor drei Jahren gekauft habe. Dies ist ein NAS mit 4 Festplatten, dass genug Performance für das Abspielen eines 4k Videos bietet. Es gibt von Synology aber auch noch diverse andere Disk Stations, die sich alle ähnlich bedienen lassen. Hier mal ein Link zu einigen Modellen bei Amazon.

Ein Blick auf den DSM (DiskStation Manager) meiner Disk Station zeigte mir, dass eine der vier Festplatten des Gerätes ausgefallen ist.

Zum Glück habe ich auf der Disk Station ein SHR eingerichtet. SHR ist die Abkürzung für „Synology Hybrid RAID“ und ist ein spezielles, von der Firma Synology entwickeltes RAID (redundant array of independent disks). SHR speichert die Daten redundant. Bei dem Ausfall einer Platte kann diese somit ohne Datenverlust ersetzt werden. Zudem bietet SHR im Gegensatz zu herkömmlichen RAID-Systemen die Möglichkeit Platten mit unterschiedlicher Größe zu verbauen.

Da meine Disk Station schon recht voll ist, habe ich mir nicht nur eine neue, sondern auch gleich eine größere Festplatte gekauft. Diese habe ich dann während dem laufenden Betrieb einfach in die Disk Station eingebaut und hinterher im Speicher-Manager des DSM hinzugefügt. Da es bereits die zweite größere Platte in dem NAS war, wurde hinterher der verfügbare Speicher größer. Einer der Vorteile von SHR ist, dass man durch den nachträglichen Einbau von mindestens zwei größeren Platten automatisch den Speicherplatz erhöht (Da die Daten redundant gespeichert werden, müssen mindesten zwei Platten größer sein). Das ganze hat problemlos funktioniert und ich habe jetzt eine instand gesetzte und größere NAS. Mein Fazit: SHR von Synology funktioniert und ist eine super Sache!

Die einzelnen Schritte für die Einbindung der Platte habe ich auch ein einem YouTube Video festgehalten, welches ich hier auch mal verlinke.

Meinen Testbericht zu der DS416play findet ihr in diesem Blog-Artikel: Test einer Synology DS416play mit DSM 6.1

Installation einer neueren PHP-Version auf einem älteren Ubuntu

Es kommt gerade bei den LTS-Versionen von Ubuntu immer häufiger vor, dass eine Software zwingend eine neuere PHP-Version voraussetzt, als auf einem Server mit einem Ubuntu Betriebssystem gerade installiert ist. Wie kann ein solche Herausforderung lösen?

Eine Möglichkeit diese Anforderung zu erfüllen ist ein Upgrade des Ubuntu auf ein neues Release. Oft möchte man dies aber nicht, da es andere Abhängigkeiten gibt, oder weil man nicht jeden Releasewechsel mitmachen möchte. Auch kann es vorkommen, dass selbst das neuste LTS Release ein zu alte Version von PHP beinhaltet. Somit stellt sich die Frage, nach einer Alternative zu einem Releasewechsel.

Dank dem offiziellen Repository für PHP von Ondřej Surý auf Launchpad gibt es eine weitere Lösung. Wenn man dieses Repository einbindet, wird es auch auf eine älteren Release von Ubuntu möglich neuere PHP Versionen zu installieren. Man kann z.B. auch auf einem Ubuntu 16.04 oder 18.04 problemlos ein ganz aktuelles PHP 7.4 installieren.

Um das Repository für PHP von Ondřej Surý bei einem Ubuntu 16.04 einzubinden, gibt man den folgenden Befehl in der Kommandozeile ein.

sudo add-apt-repository ppa:ondrej/php

Danach kann man ein PHP 7.4 mit den folgenden Zeilen installieren.

sudo apt-get update
sudo apt-get install php7.4

Im Anschluss sollte man noch einige Komponenten von PHP 7.4 installieren, welche meistens benötigt werden.

sudo apt-get install php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache

Sobald das durch ist, kann man die Standard PHP-Version innerhalb des Betriebssystem mit den folgende Befehlen festlegen.

sudo update-alternatives --config php
sudo update-alternatives --config php-cgi

Und schon kann man auch Software installieren, die das aktuelle PHP 7.4 voraussetzt …

Ubiquiti Unifi: Releaseupgrade eines Ubuntu 16.04 auf 18.04 mit einer Mongodb

Mehrere Installationen der Software Unifi von Ubiquiti liefen bei mir noch auf einem Ubuntu 16.04 LTS. Da die kostenlosen Sicherheitsupdates für dieses Ubuntu nur noch ein halbes Jahr erscheinen, war es Zeit für ein Releaseupgrade auf Ubuntu 18.04. Gesagt, getan… Nach einem Backup eines der Controller führte ich kurzerhand ein Releaseupgrade durch.

Das eigentliche Releaseupgrade lief ohne Probleme durch. Überraschender Weise startete die Unifi Software aber nicht mehr. Ein Blick in das Logfile /var/log/unifi/server.log der Unifi Software offenbarte, dass die MongoDB nicht mehr erreichbar war.

[2020-08-12 17:40:59,094] <db-server> ERROR system - [exec] error, rc=100
[2020-08-12 17:40:59,095] <db-server> INFO db - DbServer stopped

Ein weiterer Blick in das Logfile /var/log/unifi/mongod.log der MongoDB zeigte, dass der Grund ein zu großer Versionssprung von der vorherigen Version 2.6 der MongoDB war.

2020-08-25T16:44:07.964-0400 F CONTROL  [initandlisten] ** IMPORTANT: UPGRADE PROBLEM: The data files need to be fully upgraded to version 3.4 before attempting an upgrade to 3.6; see http://dochub.mongodb.org/core/3.6-upgrade-fcv for more details.
2020-08-25T16:44:07.964-0400 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2020-08-25T16:44:07.964-0400 I NETWORK  [initandlisten] removing socket file: /usr/lib/unifi/run/mongodb-27117.sock
2020-08-25T16:44:07.964-0400 I REPL     [initandlisten] shutdown: removing all drop-pending collections...
2020-08-25T16:44:07.964-0400 I REPL     [initandlisten] shutdown: removing checkpointTimestamp collection...
2020-08-25T16:44:07.964-0400 I STORAGE  [initandlisten] shutdown: waiting for fs preallocator...
2020-08-25T16:44:07.964-0400 I STORAGE  [initandlisten] shutdown: final commit...
2020-08-25T16:44:07.964-0400 I JOURNAL  [initandlisten] journalCleanup...
2020-08-25T16:44:07.964-0400 I JOURNAL  [initandlisten] removeJournalFiles
2020-08-25T16:44:07.970-0400 I JOURNAL  [initandlisten] old journal file /usr/lib/unifi/data/db/journal/j._0 will be reused as /usr/lib/unifi/data/db/journal/prealloc.0
2020-08-25T16:44:07.976-0400 I JOURNAL  [initandlisten] Terminating durability thread ...
2020-08-25T16:44:08.067-0400 I JOURNAL  [journal writer] Journal writer thread stopped
2020-08-25T16:44:08.067-0400 I JOURNAL  [durability] Durability thread stopped
2020-08-25T16:44:08.067-0400 I STORAGE  [initandlisten] shutdown: closing all files...
2020-08-25T16:44:08.070-0400 I STORAGE  [initandlisten] closeAllFiles() finished
2020-08-25T16:44:08.070-0400 I STORAGE  [initandlisten] shutdown: removing fs lock...
2020-08-25T16:44:08.070-0400 I CONTROL  [initandlisten] now exiting
2020-08-25T16:44:08.070-0400 I CONTROL  [initandlisten] shutting down with code:62

Um das Releaseupgrade erfolgreich durchzuführen, muss man also erst die MongoDB auf Version 3.4 aktualisieren und danach das Releaseupgrade starten. Ein Upgrade der MongoDB macht man am besten mit den Softwarepaketen von MongoDB.org und das geht wie folgt:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
sudo echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl unmask mongodb
sudo systemctl restart mongodb

Jetzt sollte die MongoDB auf Version 3.4 aktualisiert sein und man kann gefahrlos das Releaseupgrade auf Ubuntu 18.04 starten. Ein Backup sollte man natürlich dennoch vorsichtshalber machen.

Nach dem Upgrade auf Ubuntu 18.04 ist noch zu empfehlen die MongoDB ein weiteres mal auf die Version 3.6 zu aktualisieren, da es für die Version 3.4 nur bis Januar 2020 Support und Sicherheitsupdates gab. Für die Version 3.6 gibt es selbiges bis April 2021 und diese wird seit der Unifi Version 5.13.10 unterstützt. Das Upgrade geschieht mit den folgenden Befehlen.

wget -qO - https://www.mongodb.org/static/pgp/server-3.6.asc | sudo apt-key add -
echo "deb https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
apt update
apt upgrade
systemctl restart mongodb

Dell OpenNetwork Switches mit OS10

Dell hat im Jahre 2011 die Firma Force10 Networks übernommen. Seit dieser Zeit sind im Portfolio von Dell auch Enterprise Switches zu finden. Seit 2016 laufen einige dieser Switches mit dem auf Debian Linux basierenden OS10.

Das OS10 verwendet einen Standard-Linux-Kernel und bietet Zugriff auf die Netzwerkhardware über das Switch Abstraction Interface (SAI) des Open Compute Project. Ein Projekt das neben Dell von Microsoft, Facebook, Broadcom, Intel und Mellanox unterstützt und verwendet wird. Damit müssen sich Entwickler nicht mehr um die tatsächlich verwendete Switching-Hardware kümmern und können auf offene Standards aufsetzen.

Das OS10 System ist inzwischen sehr ausgereift und bietet nahezu den gleichen Funktionsumfang wie das vorherige OS9. Grund genug für mich mir die OS10 Switches in den letzten Monaten näher anzusehen und bei ersten Projekten einzusetzen. Zumal diese Geräte preislich sehr attraktiv sind.

Meine Erfahrungen in der Praxis mit den Switches sind sehr positiv und ich kann sie durchweg empfehlen. Allerdings sind die Dokumentationen und Updates bei Dell etwas schwierig zu finden. Deshalb schreibe ich mir hier einige wichtige Informationen und Links mal zusammen, um diese immer griffbereit zu haben.

Downloads der Updates für OS10 und Firmware

Über die Dell Webseite sind die Updates und die Firmware nur schwer zu finden. Leichter findet man die Updates in dem sogenannten Dell Digital Locker. Wenn man sich dort mit seinem Benutzer anmeldet, finden man dort die Updates von OS10, sofern man Produkte mit einem laufenden Wartungsvertrag hat, auf denen OS10 läuft.

Eine aktuellere Firmware oder ein aktuelleres BIOS findet man wiederum am einfachsten in der Rubrik Treiber und Downloads auf der Dell Webseite über den Service-Tag oder die genaue Modellbezeichnung des Switches.

Zugriff auf die Konsole

Die Standardeinstellungen bei dem Zugriff auf die Konsole sind wie folgt:

  • 115200 baud rate
  • No parity
  • 8 data bits
  • 1 stop bit
  • No flow control

Sichern der Konfiguration des Switches

Die Konfiguration des Switches kann mit copy über diverse Protokolle gesichert werden. Ich bevorzuge scp. Wichtig ist, dass der Pfad absolut angegeben wird. Bei einem Mac mit der IP-Adresse 192.168.140.157, dem User kristian und dem Passwort test muss man dann den folgenden Befehl eingeben.

copy running-configuration scp://kristian:test@192.168.140.157/Users/kristian/switch-maschen-23

Update des OS10

Ein Update des OS10 kann mit dem Befehl „image download“ durchgeführt werden. Wenn das Update von dem zuvor beschriebenen MacBook aus geladen werden soll und das Image des OS10 den Namen „PKGS_OS10-Enterprise-10.5.0.1P1.433stretch-installer-x86_64.bin“ hat, benötigt man den folgenden Befehl.

image download scp://kristian:test@192.168.140.157/Users/kristian/Downloads/PKGS_OS10-Enterprise-10.5.0.1P1.433stretch-installer-x86_64.bin

Um den Downloadstatus anzuzeigen, folgenden Befehl ausführen.

show image status

Um die heruntergeladene Images anzuzeigen, folgenden Befehl ausführen.

dir image

Zur Installation des heruntergeladenen Images, den folgenden Befehl benutzen.

image install image://PKGS_OS10-Enterprise-10.5.0.1P1.433stretch-installer-x86_64.bin

Der Fortschritt der Installation kann wieder mit folgendem Befehl „show image status“ kontrolliert werden. Nach erfolgreicher Installation muss die Boot Partition geändert werden.

boot system standby

Der Status des Bootimages kann mit folgendem Befehl abgefragt werden.

show boot detail

Sobald das Update erfolgreich ausgeführt wurde, muss der Switch zum Schluss noch einem neu gestartet werden. Dies geschieht mit dem Befehl „reload“. Nach dem Neustart sollte dann die neue OS10 Version gebootet sein. Dies kann mit dem Befehl „show version“ überprüft werden.

Einrichtung einer vlt Domain

Um eine vlt Domain 2 auf einem Switch mit der IP-Adresse „192.168.140.83 einzurichten, der über das Interface „ethernet1/1/1“ und „ethernet1/1/2 mit einem Switch mit der IP-Adresse „192.168.140.84“ verbunden ist, benötigt man die folgenden Konfigurationszeilen.

vlt-domain 2
 backup destination 192.168.140.84
 discovery-interface ethernet1/1/1-1/1/2

Um ein vlt mit dem vlt-port-channel 3 für einen Trunk einzurichten gibt man den folgenden Befehle ein.

interface port-channel3
 description "Name des vlt"
 no shutdown
 switchport mode trunk
 switchport access vlan 3002
 mtu 9216
 vlt-port-channel 3

Um z.B. das Interface „ethernet1/1/3“ diesem vlt hinzuzufügen benötigt man die folgenden Befehle.

interface ethernet1/1/3
 no shutdown
 channel-group 3 mode active
 no switchport
 flowcontrol receive off

Auf dem zweiten Switch muss im Anschluss natürlich die gleiche Konfiguration gemacht werden, wobei die IP-Adresse in der vlt Domain entsprechend angepasst werden muss.

Um im Anschluss die eingerichtete vlt 2 Domain anzuzeigen und den Erfolg zu kontrollieren gibt man den folgenden Befehl ein.

show vlt 2 vlt-port-detail

Mit macOS 10.15 Geräte von Cisco konfigurieren oder aktualisieren

Um von einem Rechner mit macOS 10.15 über die Konsole Cisco Geräte (wie ASA Firewall, Router, Switch, usw.) zu konfigurieren oder die Firmware zu aktualisieren sind ein paar Kniffe notwendig. Ich habe mir hier mal die beiden wichtigsten aufgeschrieben. Vielleicht nützen diese ja noch mal jemand anderem.

Kopieren von Firmware oder Software von einem Rechner mit macOS 10.15 auf ein Cisco Gerät

Auf die meisten Geräten von Cisco wird eine neue Firmware mit dem Befehl „copy“ übertragen. Um eine Datei aus dem Downloadordner des Users kristian von einem Mac Rechner mit der IP-Adresse 172.30.25.201 zu kopieren, würde man den folgen copy Befehl eingeben:

copy scp://kristian@172.30.25.201:Downloads/asdm-openjre-7131.bin disk0:

Damit das Gerät von Cisco die Datei von dem Rechner mit macOS runterladen kann, muss die „Dateifreigabe“ und die „Entfernte Anmeldung“ aktiviert sein. Diese findet man in den Systemeinstellungen und Freigaben.

Konfiguration des Cisco Gerätes über die Konsole

Man kann die meisten Geräte von Cisco über die Konsole konfigurieren. Diese funktioniert über ein mitgeliefertes USB-Kabel auch dann, wenn die Netzwerkkonfiguration nicht funktioniert oder nicht vorhanden ist.

Da ein man auf einem aktuellen Mac keinen USB-Anschluss mehr hat, benötigt man einen Adapter. Wenn man das USB-Kabel an diesem Adapter anschließt, taucht das Cisco Gerät als USB-Gerät im Ordner /dev auf. Mit dem folgenden Befehl kann man den Namen der USB-Gerätes identifizieren:

ls /dev/*usb*

Bei mir heißt das USB-Gerät z.B. “ /dev/cu.usbmodem142101″. Um mit dem Terminal auf diese Konsole zu kommen, muss ich dann nur den folgenden Befehl eingeben:

screen /dev/cu.usbmodem142101 -f 9600,cs8,-parenb,-cstopb,-hupcl

Installation von Ansible auf einem Windows System

Was ist Ansible? Dies war die Frage, die mir meine Windows-Administratoren stellten, als ich mit der Idee einer Automatisierung von Windows mit Ansible um die Ecke kam. Eine durchaus berechtigte Frage, zumal die Automatisierung und Provisionierung von Windows durch Scripts aktuell noch nicht sehr verbreitet ist. Vielmehr gibt es hier eher grafisch gesteuerte Software wie den System Center Configuration Manager oder Windows Server Update Services.

Ansible ist ein Open-Source Automatisierungs-Werkzeug zur Orchestrierung und allgemeinen Konfiguration und Administration von Computern. Mit der Hilfe von Ansible kann man wiederkehrende Aufgaben bequem simultan auf mehreren System ausführen, ohne dass auf dem jeweiligen System eine zusätzliche Software verwendet wird. Dazu logt sich Ansible via SSH oder RPC auf dem zu administrierenden System ein und führt  vorher definierte Aufgaben aus. Diese Aufgaben werden in sog. Playbooks gespeichert. Playbooks werden im YAML-Format erstellt, erkennbar durch die Endung .yaml. Weitere Infos zur Syntax und Notation von YAML sind in der Ansible-Dokumentation zu finden.

Verwendung von Ansible unter Windows

Ansible basiert auf Python. Dabei erfolgt der eigentliche Zugriff auf das Windows Zielsystem dann ausschließlich über RPC. Ein Zugriff auf UNIX oder Linux erfolgt ausschließlich über SSH. Somit muss auf einem Windows, Linux oder Unix Zielsystem keinerlei zusätzliche Software installiert werden.

Für das Ausführen der Ansible-Skripte auf dem Quellsystem wird logischer Weise Python benötigt. Unter Linux wird ein Python eigentlich immer mitgeliefert. Deshalb kann dort Ansible einfach installiert und gestartet werden. Bei einem Windows System muss zunächst Python installiert werden, bevor man Ansible installiert. Ansonsten läßt sich Ansible nicht starten.

Da ich meinen Windows-Administratoren nicht zumuten wollte mit Linux zu arbeiten, habe ich mich dafür entschieden eine Administrations-Maschine mit Windows aufzusetzen, auf der man die Ansible Skripte direkt starten kann. Hier folgt die Anleitung für die Installation.

Anleitung für die Installation von Ansible unter Windows

Für die Installation der benötigten Software öffnet man unter Windows als Administrator die PowerShell. Hierfür drückt man einfach die Windowstaste, gibt „PowerShell“ ein und wählt nach einem Rechtsklick auf „Windows PowerShell“ den Menüpunkt „Als Adminsitrator ausführen“ aus. Anschließend gibt man in dem Fester mit der PowerShell den folgenden Befehl ein:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Nach der Eingabe möchte der Rechner neu starten. Nach einem Neustart kann man sich bei Windows 10 im Store ein Linux Distribution aussuchen und diese installieren. Dazu öffnen man den Windows Store (dazu wieder einfach die Windows Taste drücken und „Store“ eingeben). Anschließend kann man im Windows Store entweder nach Linux, oder direkt nach der gewünschten Distro suchen und diese installieren.

Bei Windows 2019 Server gibt es leider keinen Store. Hier muss die Linux Distribution von Hand bei Microsoft runtergeladen und installiert werden. Eine Anleitung für die Installationen und eine Liste der Linux Distributionen findet man bei Microsoft auf der Seite https://docs.microsoft.com/en-us/windows/wsl/install-manual. Um die Debian Distribution per PowerShell runterladen und entpacken zu lassen, kann man z.B. die folgenden drei Befehl in einer als „Administrator“ gestarteten PowerShell eingeben:

Invoke-WebRequest -Uri https://aka.ms/wsl-debian-gnulinux -OutFile C:/Debian.appx -UseBasicParsing
Rename-Item C:/Debian.appx C:/Debian.zip
Expand-Archive C:/Debian.zip C:/Debian

Wenn die Befehle ausgeführt wurden, befinden sich die Installationsdaten von Debian Linux in dem Verzeichnis c:\Debian. Die eigentliche Installation startet man dann durch das ausführen der Datei Debian.exe in diesem Verzeichnis als Administrator. Es öffnet sich ein Fenster, in welchem die Installation durchläuft. Nach Abschluss der Installation wird man aufgefordert einen Benutzernamen für den Standardbenutzer und ein dazugehöriges Passwort einzugeben. Danach ist man in einer BASH Shell und kann das Debian Linux Benutzen.

Damit Linux von überall aufrufbar ist, sollte die Umgebungsvariable PATH noch entsprechend erweitert werden. Dies kann man mit den folgenden beiden PowerShell Befehlen machen:

$userenv = [System.Environment]::GetEnvironmentVariable("Path", "User")
[System.Environment]::SetEnvironmentVariable("PATH", $userenv + "C:\Debian;", "User")

Danach kann man sich in einer Kommandozeile die als Administrator gestaltet wurde jeder Zeit durch die Eingabe von „debian.exe“ eine Linux Bash starten.

Als erstes sollte man das installierte Debian auf den aktuellen Stand bringen. Dazu gibt man den Befehl „sudo -s“ ein und man wird um eine erneute eingäbe des Benutzerpasswortes gebeten. Nach der Eingabe erhält man eine root-shell. Wenn man in diese den folgenden eingibt, wird das Debian aktualisiert:

sudo apt update && sudo apt upgrade

Danach wird Python benötigt, da es die Grundlage von Ansible ist. Um Python zu installieren muss der folgende Befehle in eine root-Shell des Linux eigegeben werden:

apt-get -y install python-pip python-dev libffi-dev libssl-dev

Zum Schluss kommt dann die Installation von Ansible. Um immer die neuste Version von Ansible zu installieren, empfehle ich diese über das Python Paketverwaltungsprogramm (kurz Pip) zu machen. Dies geschieht durch die eingäbe des folgenden Befehlt in einer root-shell den Linux:

pip install ansible

Nachdem die Installation durchgelaufen ist, sollte Ansible funktionieren. Für alle weiteren Informationen empfiehlt sich ein Blick in die Ansible Dokumentation.