OK, ich kann jetzt meine eigene Frage beantworten.
Ich habe die Hinweise von Tysons Kommentar verwendet, um mich anzufangen, aber es gab einiges mehr, was ich tun musste. Insbesondere, da ich das Unternehmensnetzwerk nicht erwähnen konnte, mit dem ich mich verband, wurde WPA2-Enterprise PEAP MSCHAPv2 authentifiziert (eduroam).
Ich habe ziemlich billige Hardware bekommen: einen TP-Link TL-WA801ND Access Point (Wireless N 300 MB Single-Band 2,4 GHz); und einen ASUS AC750-Router (Wireless AC Dual-Band).
Keines dieser Hardwareteile kann im Clientmodus mit einem Hostnetzwerk mit PEAP-Authentifizierung verbunden werden.
Ich entdeckte einen Open-Source-Firmware-Ersatz, OpenWrt, mit einigen Wiki-Artikeln und YouTube-Videos, die versprechen, den Client-Modus mit PEAP zu ermöglichen.
Ich habe viel über Probleme mit dem verfügbaren Speicherplatz auf dem Access Point WA801ND gelesen . Ich hatte jedoch Glück. Mir wurde ein WA801ND V5 ausgeliefert, der den doppelten Speicherplatz (8 MB) der vorherigen Versionen hat.
Es war jedoch nichts über die Installation von V5 in Wiki # 1 und die beängstigenden Build-Anweisungen in Wiki # 2 (warum gibt es zwei Wikis auf der OpenWrt-Site?).
Ich hatte jedoch doppelt Glück, weil ich trotz der Wikis eine git Commit-Detailunterstützung für den V5 gefunden habe und Anweisungen dazu habe, wie man flashen kann.
Durch das Durchlesen einiger Dokumentation zusammen mit den Anweisungen im git-Commit wurde OpenWrt schließlich auf dem Zugangspunkt WA801ND installiert.
Dadurch wird auf dem Gerät Bare-Bones-Terminal-Firmware erhalten, die die PEAP-Authentifizierung im Client-Modus nicht unterstützt.
Der erste Schritt ist also die Aktivierung der PEAP-Unterstützung.
OpenWrt wird mit einem eigenen Paketmanager geliefert, der WA801ND hatte jedoch keinen Internetzugang, daher musste ich Pakete manuell abrufen. Leider hat das Paket-Repository seine Struktur geändert, seit der Großteil der Online-Dokumentation geschrieben wurde. Daher war es schwierig, die Pakete zu finden.
Ich fand schließlich, dass es zwei Sub-Repositorys gibt, eines für das "Ziel" (Gerät) und eines für den Bogen (CPU).
Also, wenn ich heruntergeladen hatte und scp'd das wpad_2018-05-21-62566bc2-4_mipsel_24kc.ipk
Paket /tmp
auf dem Gerät, könnte ich opkg remove wpad-mini
dann opkg install /tmp/wpad_2018-05-21-62566bc2-4_mipsel_24kc.ipk
, so dass wpa_supplicant PEAP - Unterstützung.
Ich habe mich beim Konfigurieren des WA801ND durch die Konfigurationsdateien versucht, aber das ist ein ganz großes Projekt an sich. Ich wollte wirklich eine Web-GUI-Schnittstelle. Der Standard in OpenWrt ist Luci, der eine Reihe von Abhängigkeiten hat, die heruntergeladen und auf das Gerät übertragen werden müssen.
Glücklicherweise fand ich eine Wiki-Seite mit einem Skript (am unteren Rand), um es zu automatisieren. Unglücklicherweise war das Skript alt, es fehlten ein oder zwei Abhängigkeiten und die falsche Paket-URL. Ich habe es repariert und voila, Luci installiert!
Von dort aus war es einfach, über die Luci-Webschnittstelle des Access Points WA801ND eine Client-Modus-Verbindung zum PEAP-Netzwerk herzustellen und den Access Point Ethernet an den WAN-Port des AC750-Routers anzuschließen. Ich musste das Subnetz des Routers von 192.168.1.x auf 192.168.2.x ändern, damit es keinen Konflikt mit dem Zugriffspunkt gab. Dann hat "alles" funktioniert (endlich!).
Das festgelegte Skript wird unten als Referenz angehängt:
#!/bin/sh #assumes the user has egrep, wget, ssh, and scp # Change this to match your router architecture="mipsel_24kc" target="ramips/mt76x8" # These should be fine unless you've changed something user="root" ip_address="192.168.1.1" url="https://downloads.openwrt.org/snapshots/packages/$/" target_url="http://downloads.openwrt.org/snapshots/targets/$/packages/" tmpdir="/tmp/luci-offline" packages_base="liblua lua libuci-lua libubus libubus-lua uhttpd rpcd" packages_luci="luci-base luci-lib-ip luci-lib-nixio luci-theme-bootstrap luci-mod-admin-full luci-lib-jsonc liblucihttp liblucihttp-lua" packages_target="libiwinfo-lua" mkdir "$tmpdir" cd "$tmpdir" echo "Downloading base packages" wget --quiet -N "$base/Packages" || echo "Failed to get base Packages" for pkg in $packages_base; do pkgfile="$(egrep -oe " $_.+" Packages | tail -c +2)" pkgurl="$base/$" wget --quiet -N "$pkgurl" || echo "Failed to fetch $pkg" done echo "Downloading Luci packages" wget --quiet -N "$luci/Packages" || echo "Failed to get luci Packages" for pkg in $packages_luci; do pkgfile="$(egrep -oe " $_.+" Packages | tail -c +2)" pkgurl="$luci/$" wget --quiet -N "$pkgurl" || echo "Failed to fetch $pkg" done echo "Downloading target-specific packages" wget --quiet -N "$/Packages" || echo "Failed to get target Packages" for pkg in $packages_target; do pkgfile="$(egrep -oe " $_.+" Packages | tail -c +2)" pkgurl="$/$" echo "Downloading $pkgurl" wget --quiet -N "$pkgurl" || echo "Failed to fetch $pkg" done echo "Copying packages to device" ssh "$@$" mkdir -p /tmp/luci-offline-packages scp *.ipk "$@$":/tmp/luci-offline-packages echo "Installing pacakges" ssh "$@$" opkg install /tmp/luci-offline-packages/*.ipk echo "Deleting packages from device" ssh "$@$" rm -rf /tmp/luci-offline-packages/ echo "Starting HTTP server and enabling on boot" ssh "$@$" /etc/init.d/uhttpd start ssh "$@$" /etc/init.d/uhttpd enable echo "Deleting packages from PC" cd rm -rf "$tmpdir"