Archlinux via PXE von Netboot Image starten

Archlinux mit Hilfe von PXE von einem Netboot Image aus dem Internet starten

Heute hatte ich nach einer BIOS-, bzw. UEFI-Aktualisierung meines Mainboards ein unerwartetes Problem; alle meine EFI-Booteinträge wurden zurückgesetzt. Selbstverständlich hatte ich kein (freies) Medium zur Hand, von dem ich entweder eine Live-Linux Umgebung oder eine EFI-Shell hätte booten können. Glücklicherweise bringen die meisten UEFIs heutzutage eine gute Unterstützung für PXE (Preboot eXecution Environment), bzw. iPXE mit. Hierfür muss dann im BIOS oder UEFI lediglich der Netzwerkstack aktiviert und der richtige Booteintrag ausgewählt werden.

PXE-Server

Mit Pixiecore gibt es eine all-in-one Lösung, um schnell einen PXE-Server bereitzustellen. Für die Installation unter Archlinux steht ein AUR-Paket bereit.

Wichtig: Damit PXE, DHCP und TFTP funktionieren, müssen die unten genannten Ports in der Firewall freigegeben werden!
ProtokollPortBenötigt?
DHCPUDP/67:68Ja
TFTPUDP/69Ja
PXEUDP/4011Ja
HTTPTCP/80Nein

In dem entsprechenden Artikel im Archlinux Wiki steht beschrieben, wie man den quick Parameter verwenden, um direkt den Archlinux Kernel zu laden:

Dienste mit TOR und Onioncat über das Internet freigeben

Mit Hilfe von TOR und Onioncat interne Dienste über das Internet unter Umgehung von NAT verfügbar machen

In einem recht restriktivem Netzwerk benötigte ich eine Möglichkeit, um auf diverse interne Dienste über das Internet zugreifen zu können. Diesen Anlass nahm ich als Gelegenheit um etwas mit TOR und Onioncat herumzuspielen. Mein primäres Ziel war es, sicheren Zugriff auf den internen Mailserver zu gewähren, sodass ich E-Mails abrufen kann ohne direkt mit dem LAN verbunden zu sein.

TOR dient hier lediglich als Transportebene, so ist keine Portweiterleitung im Router notwendig. Onioncat wird als hidden-service bereitgestellt und erzeugt ein Overlay-Netzwerk, welches IPv6 als Protokoll auf Layer 3 verwendet. Die Dienste sind dann später über eine statische IPv6 Adresse via TOR/Onioncat erreichbar.

Von der Shell an einem WLAN Captive Portal von Aruba Networks einloggen

Von der Shell aus an einem Aruba Networks Access Point (captive portal) anmelden um eine Verbindung ins Internet herzustellen

Ab und an komme ich in die Verlegenheit, mich an einem WLAN-AP “Captive-Portal” anmelden zu müssen, bevor ich das Internet nutzen kann. Häufig sind diese Geräte von Aruba Networks . Bislang fehlte mir eine einfache Methode, um mich dort von der Shell aus anmelden zu können und so habe ich mir das Ganze etwas näher angesehen.

Selbstverständlich muss ich das nachfolgende Bash Script für jedes Portal maßschneidern, aber generell sollte mir damit die Anmeldung gelingen:

 1#!/usr/bin/env bash
 2
 3captive_portal="captive-portal.domain.tld"
 4user_agent="Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0;  rv:11.0) like Gecko"
 5
 6i=1
 7while true; do
 8  curl -k "https://${captive_portal}/swarm.cgi" --compressed \
 9    -H "Host: ${captive_portal}" \
10    -H "User-Agent: ${user_agent}" \
11    -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
12    -H 'Accept-Language: de,en;q=0.5' \
13    -H 'Content-Type: application/x-www-form-urlencoded' \
14    -H "Referer: https://${captive_portal}/swarm.cgi?opcode=cp_generate&orig_url=687474703a2f2f68656973652e64652f" \
15    -H 'DNT: 1' \
16    -H 'Connection: keep-alive' \
17    -H 'Upgrade-Insecure-Requests: 1' --data 'orig_url=687474703a2f2f68656973652e64652f&opcode=cp_auth&user=guest&password=guest' >/dev/null 2>&1
18  if [[ $(ping -c1 google.de 2>/dev/null) ]]; then
19    echo "Yay! Got an internet connection, after interation: ${i}"
20    break
21  fi
22  ((i++))
23done

Theoretisch muss ich so nur noch mein WLAN-Interface manuell konfigurieren und das Script ausführen. Aber es geht noch einfacher: Unter Arch Linux nutze ich netctl für die Netzwerkkonfiguration und so kann ich - wie gewohnt - ein neues, statisches Profil und einen netctl Hook für das WLAN-Netzwerk in /etc/netctl anlegen.