ROAMSWITCH FÜR LINUX · OPERATIONSREFERENZ
CLI-/Headless-Betriebshandbuch
So bedienen Sie RoamSwitch für Linux ohne GUI – auf Cloud-VPS-Instanzen, über SSH, von Cron, Überwachungsskripten und programmatischen KI-Agenten (MCP).
- Client Edition (
roamswitch): Entwickelt für Laptops, mobile Workstations und Entwicklergeräte. Wechselt automatisch die nftables-Firewall-Profile basierend auf der Vertrauensstufe des verbundenen Netzwerks. Dieses Handbuch konzentriert sich hauptsächlich auf die Headless-/CLI-Verwaltung der Client Edition. - Server Edition (
roamswitch-server): Entwickelt für Cloud-VPS-Instanzen (AWS, GCP, DigitalOcean, Linode usw.) und lokale Server, die direkt mit dem Internet verbunden sind. Bietet eingehende Standard-Drop-Filterung, SSH-Sperrschutz, Critical-Path File Integrity Monitoring (FIM), eBPF/Falco-Laufzeitintegration und sofortige Benachrichtigungen (Telegram/LINE/Webhooks). Vollständige Installations- und Verwaltungsanweisungen finden Sie im RoamSwitch Server Edition-Betriebshandbuch und im Server Security Whitepaper.
1. Komponenten
| Komponente | Läuft als | Rolle |
|---|---|---|
roamswitch-daemon (Kunde) |
root (systemd Type=notify) |
Alle privilegierten Client-Vorgänge: nftables-Steuerung, Netzwerkerkennung, Ransomware-/Malware-Überwachung, Fanotify, ARP/NDP-Pinning, DNS-Durchsetzung. Öffnet keinen TCP/UDP-Listening-Socket. |
roamswitch-server-daemon (Server) |
root (systemd Type=notify) |
Alle serverprivilegierten Vorgänge: eingehender Standard-Drop, SSH- und Admin-Bastion-Erhaltung, FIM (über 150 kritische Binär-Hashes), Falco eBPF UNIX-Socket-Listener mit autonomem SIGSTOP-Einfrieren, Alarmverteilung. |
roamswitch (CLI) |
Login-Benutzer (einige Aktionen erfordern Sudo) | Thin Client liest Daemon-Status. Verwendet /run/roamswitch/roamswitch.sock IPC in der Client Edition oder stellt die Unterbefehle --server, server, fim und emergency-restore in der Server Edition bereit. |
roamswitch-mcp |
von KI-Clients hervorgebracht | Schreibgeschützter MCP-Server (stdio / JSON-RPC) für den programmgesteuerten Statusabruf durch KI-Agenten. Siehe MCP-Setup |
roamswitch-app |
Login-Benutzer | GTK-GUI (nur Client Edition). In Headless-Umgebungen nicht erforderlich. |
Eine Headless-Bereitstellung läuft auf dem Daemon + roamswitch CLI (plus roamswitch-mcp, falls gewünscht). Alle autonomen Abwehrmechanismen funktionieren ohne GUI.
roamswitch) und Server Edition (roamswitch-server) sind sich gegenseitig ausschließende Pakete (Conflicts). Stellen Sie roamswitch-server in Serverumgebungen bereit.2. Daemon (Systemd-Dienste)
Client-Edition
sudo systemctl status roamswitch.service # Status
sudo systemctl enable roamswitch.service # Autostart beim Booten (bei Installation aktiviert)
sudo systemctl restart roamswitch.service # Neustart
journalctl -u roamswitch.service -f # Logs verfolgen
journalctl -u roamswitch.service --since "1h ago"
Was der Client-Daemon beim Start und in jedem Zyklus (3 s) autonom macht:
- Identifiziert den verbundenen Gateway-MAC und wendet nftables-Profile (
open/balanced/lockdown) auftrusted_networksan. - Verhaltensbasierte Ransomware-Erkennung (Fanotify + Shannon-Entropie + Kanarienvögel)
- On-Access-Malware-Scanning (Fanotify, optional ClamAV)
- ARP-Spoof-Überwachung und präventives Gateway-ARP/NDP-Pinning in nicht vertrauenswürdigen Netzwerken
- Kernel-Härtung (sysctl / Yama / core dumps /
/tmpnoexec) pro Profil - Bedrohungsschutz-DNS-Durchsetzung (
dns_enabled+dns_scope) - Link Guard (NFQUEUE) zum Abfangen von Phishing
- Ausgabe des Laufzeitstatus an
/run/roamswitch/state.json
Server-Edition
sudo systemctl status roamswitch-server.service # Status
sudo systemctl restart roamswitch-server.service # Neustart
sudo systemctl reload roamswitch-server.service # Konfigurationsdatei neu laden
journalctl -u roamswitch-server.service -f # Logs verfolgen
3. CLI-Befehlsreferenz
Grundlegende Syntax: roamswitch <command> [options]. Bei der Ausführung ohne Argumente wird standardmäßig status verwendet. Die Ausgabesprache folgt automatisch dem Betriebssystemgebietsschema (LC_ALL / LC_MESSAGES / LANG).
| Befehl | Berechtigungen | Beschreibung |
|---|---|---|
status [--server] (alias report / server-status) |
Benutzer | Bewertung des Sicherheitszustands (24 Überprüfungen beim Client, 30 Überprüfungen bei --server), 0–100 Punkte, Note und Empfehlungen pro Element |
server [config|setup|test-notify|restart|ebpf] |
Benutzer/root | Konfigurationsverwaltung der Server Edition, interaktiver Einrichtungsassistent und Testbenachrichtigungen. ebpf (Alias incidents) zeigt den aktuellen Eindämmungsstatus des eBPF-Runtime-Guards und die erkannte Vorfallshistorie |
fim [verify|update] |
Benutzer/root | Überprüfung der Dateiintegritätsüberwachung kritischer Pfade (verify) und Aktualisierung der Baseline-Hash-Datenbank (update) |
emergency-restore |
Wurzel | Heben Sie alle Notfall-eBPF-/Firewall-Isolationen auf und stellen Sie die Netzwerk-Baseline wieder her |
ports [-a|--all] |
Benutzer | Überwachungsports auf 0.0.0.0, nicht authentifizierten Datenbanken und Entwicklungsservern. -a umfasst reine Loopback-Ports |
guards |
Benutzer | Status der automatischen Verteidigungswächter (Portanomalie, ARP, USB-Speicher, Download, DNS-Bedrohung, Canary, Dev-Server-Isolator, Bluetooth) |
wifi |
Benutzer | WLAN-Verschlüsselungsstärke (Offen / WEP / WPA / kabelgebunden) und SSID |
sharing [status|on|off] |
Benutzer | Automatisches Stoppen/Wiederherstellen von SSH/Samba/RDP in nicht vertrauenswürdigen Netzwerken (on trennt aktives SSH, wenn es nicht vertrauenswürdig ist) |
audit-url <URL> |
Benutzer | Untersuchen Sie das URL-Phishing- und Bedrohungsrisiko mithilfe lokaler Feeds und Heuristiken (ruft niemals das Ziel ab) |
audit-secrets <text|path|directory> |
Benutzer | API-Schlüssel, private Schlüssel und Token in Text, einer Datei oder einem Verzeichnis erkennen (rekursiv; überspringt .git/node_modules usw.) — überträgt niemals Daten |
audit-logs [hours] |
Benutzer | Aggregiert und klassifiziert Systemjournal-/Authentifizierungsprotokolle der letzten N Stunden (Standard: 24). API-Schlüssel und Token werden automatisch maskiert. Zeigt zudem Ergebnisse der Protokollmuster-Anomalieerkennung (neue Muster und statistische Häufigkeitsspitzen). |
canary |
Benutzer | Status und Integrität der Ransomware Canary Decoy-Datei sowie erkannte Vorfallshistorie (bis zu den letzten 50) |
port-anomaly (Alias port-guard) |
Allgemein | Baseline-Status des Port-Anomaly-Guards, aktuell automatisch isolierte Ports und erkannte Vorfallshistorie (bis zu den letzten 50) |
quarantine [list] |
Benutzer | Inhalt des Malware-Quarantäne-Tresors (Beispiel, ursprünglicher Pfad, Bedrohungsname, Datum) |
knowledge [query] (alias faq) |
Benutzer | Durchsuchen Sie die Offline-Wissensdatenbank |
airgap [enable|disable] |
Benutzer/root | Notfall-Air-Gap-Isolierung auslösen oder aufheben (enable lässt den gesamten externen Datenverkehr fallen) |
help (--help / -h) |
Benutzer | Hilfe anzeigen (roamswitch <command> --help für Unterbefehlshilfe) |
scan-packages [ORDNER...] |
Allgemein | Gleicht installierte OS-Pakete (erkennt automatisch dpkg/pacman/dnf/zypper) mit der lokalen bekannten CVE-Zuordnung ab. Bei Angabe von Ordnerargumenten werden zusätzlich die Abhängigkeits-Lockfiles dieses Projekts (npm/PyPI/crates.io und 4 weitere Ökosysteme) geprüft. Es findet überhaupt keine Netzwerkaktivität statt |
scan-vulns [--confirm] |
Allgemein | Läuft nur bei active_vuln_scan_enabled: true (standardmäßig aus): ausschließlich auf 127.0.0.1 beschränkte Erreichbarkeitsprüfungen ohne Authentifizierung für Redis/Memcached/MongoDB/dockerd, CORS-Fehlkonfiguration/Path-Traversal/Open-Redirect-Prüfungen für erkannte Dev-Server, SMTP-Open-Relay-Diagnose sowie beweisbasierte Expositionsprüfungen für Telnet/FTP/SSH. Ohne --confirm ein Trockenlauf |
notifications (alias notification-history) |
Benutzer | Verlauf der von RoamSwitch gesendeten Benachrichtigungen (Log-Audit-Auffälligkeiten, ClickFix-Erkennungen u. a.) — letzte 7 Tage, neueste zuerst |
frozen [list|resume <PID>|resume all] |
Benutzer / root | Listet die Prozesse auf, die die Guards (Ransomware-Burst-Erkennung, Canary-Manipulation, Kernel-Exploit-Erkennung) derzeit per SIGSTOP anhalten, und gibt einen Fehlalarm wieder frei (SIGCONT). Ein Freeze ist kein Kill — ein freigegebener Prozess läuft exakt dort weiter, wo er angehalten wurde. resume all gibt alle frei. Für root-eigene Prozesse ist sudo nötig |
resource-guard (Alias leak-guard) |
Benutzer | Erkennungshistorie des Ressourcen- und Prozessanomalie-Schutzes (nur Server Edition): anhaltendes, nicht rückläufiges RSS-Wachstum (Speicherleck / DoS) oder Crash-Loops in netzexponierten Diensten, jeweils mit Konfidenzstufe |
timeline (Alias incident-timeline) |
Benutzer | Fasst die Erkennungen von Link-Guard (ARP-Spoofing), Ransomware-Canary, eBPF-Runtime-Guard und Ressourcen-Guard zu einer chronologischen Ansicht zusammen — mit Prozessabstammung und MITRE-ATT&CK-Tags (experimentell) |
xdp-gate [status|enable|disable] |
Benutzer / root | Zeigt oder schaltet das XDP-Boot-Gate (experimentell). status meldet, ob roamswitch-xdp-gate.service aktiviert ist, und den aktuellen Programmzustand. Standardmäßig deaktiviert |
sensor [key|list|pair|unpair|request-audit|results] |
Benutzer/root | Pairing mit gegenseitigem Vertrauen per Pairing-Code mit RoamSwitch Sensor, einem Netzwerksensor aus einem separaten Repository, den Sie auf handelsüblicher Hardware installieren. pair --addr <ip> --code <code> löst einen von Sensor ausgestellten Code ein, um zu pairen (Sensor wird als unter einer festen IP laufend vorausgesetzt), key zeigt den eigenen Public Key/Adresse dieses Endpunkts, unpair entfernt das Pairing, und request-audit bittet Sensor um ein aktives Schwachstellen-Audit (Ergebnis mit results abrufen). Erfordert sensor_pairing_enabled: true (standardmäßig aus). Details siehe Sensor-Betriebshandbuch |
port-scan (alias portscan) |
Benutzer | Zeigt den Erkennungsverlauf der Eingangsportscan-Erkennung (Quell-IP, ob automatisch blockiert und Blockierdauer). Eine andere Funktion als port-anomaly, das neu „exponierte“ unbekannte Ports erkennt |
Beispiele
sudo roamswitch status # Vollständige Client-Diagnose (24 Punkte)
sudo roamswitch status --server # Vollständige Diagnose der Server Edition (30 Punkte)
sudo roamswitch ports -a # Alle lauschenden Ports
roamswitch guards # Guard-Status
roamswitch audit-url https://examp1e-login.com
roamswitch audit-secrets ./deploy.env
roamswitch audit-secrets . # Aktuelles Verzeichnis rekursiv scannen
roamswitch audit-logs 72 # Logs der letzten 72 Stunden analysieren
sudo roamswitch sharing on # SSH/Samba/RDP in nicht vertrauenswürdigen Netzwerken automatisch stoppen
sudo roamswitch fim verify # FIM-Dateiintegritätsprüfung
sudo roamswitch fim update # FIM-Baseline aktualisieren
sudo roamswitch emergency-restore # Notabschaltung vollständig aufheben und wiederherstellen
sudo roamswitch airgap enable # Notabschaltung
sudo roamswitch airgap disable # Aufheben
sudo roamswitch server ack # Sicherheitstimer bestätigen (automatische Wiederherstellung stoppen)
roamswitch canary # Canary-Vorfallshistorie
roamswitch port-anomaly # Vorfallshistorie des Port-Anomaly-Guards
roamswitch server ebpf # Eindämmungsstatus und Vorfallshistorie des eBPF-Guards
roamswitch notifications # Benachrichtigungsverlauf der letzten 7 Tage
roamswitch frozen # Eingefrorene Prozesse auflisten
sudo roamswitch frozen resume 12345 # Fehlalarm wieder freigeben
sudo roamswitch sensor pair --addr 192.168.1.50 --code AB3DFGH2 # Paart sich per Pairing-Code mit Sensor
sudo roamswitch sensor key # Zeigt den eigenen Public Key/Adresse dieses Endpunkts
roamswitch port-scan # Portscan-Erkennungsverlauf
Der Server-Edition-Daemon läuft als root, daher liefern Befehle, die das nftables-Regelwerk lesen oder den Prozessbesitzer ermitteln müssen (status / status --server / ports -a), ohne sudo ungenaue Ergebnisse (eine fälschliche „inaktiv“-Bewertung oder fehlende Prozessinformationen). Befehle, die die Konfiguration ändern (sharing / fim update / airgap / emergency-restore usw.), benötigen ebenfalls sudo. Alle anderen, reinen Lesebefehle funktionieren auch ohne sudo korrekt.
- Unterbefehlsspezifische Hilfe wird über
roamswitch <command> --help. unterstützt.
- Maschinenlesbarer Status sollte über MCP (§6) oder
/run/roamswitch/state.json(§5) abgefragt werden. - In der Client Edition gibt es keinen direkten Befehl zum Erzwingen eines Firewall-Profils; Der Daemon verwaltet dies autonom auf Basis der Netzwerkvertrauensstellung. Um eine Ebene zu erzwingen, konfigurieren Sie
manual_overrideinconfig.jsonoder rufen Sie denset_security_levelIPC direkt auf (§5). statusgibt unabhängig von der Punktzahl den Exit-Code 0 zurück. Analysieren Sie für die automatisierte Überwachung die Bewertungszeile (siehe §7).
4. Konfigurationsdateien
Client-Edition (~/.config/roamswitch/config.json)
Der Daemon wird als Root ausgeführt und scannt /home/*/.config/roamswitch/config.json, wobei er die erste gültige Datei verwendet, die er findet (oder /root/.config/roamswitch/config.json in Nur-Root-Umgebungen).
| Schlüssel | Typ/Standard | Beschreibung |
|---|---|---|
language | Zeichenfolge / Betriebssystemgebietsschema | UI- und CLI-Sprache (ja / en / ko / zh-Hans / zh-Hant / de / fr / es / it / pt-PT) |
trusted_networks | [{name, mac, level}] | Vertrauenswürdige Netzwerke; mac ist Gateway-MAC, level ist open / balanced / lockdown |
away_protection_level | Zeichenfolge / lockdown | Standardprofil in unbekannten Netzwerken |
manual_override | string / null | Force open / balanced / lockdown (null für automatisch) |
dns_enabled | bool / true | DNS-Durchsetzung zum Schutz vor Bedrohungen |
dns_provider | Zeichenfolge / quad9 | quad9 / cloudflare / adguard / cleanBrowsing |
dns_scope | Zeichenfolge / untrusted_only | untrusted_only / always_on |
arp_spoof_guard_enabled | bool / true | ARP-Spoof-Überwachung |
gateway_arp_lock_enabled | bool / true | Präventive Gateway-ARP/NDP-Sperre für nicht vertrauenswürdige Netzwerke |
port_anomaly_guard_enabled | bool / true | Neue Abhörports automatisch blockieren |
system_wide_fanotify_enabled | bool / true | Systemweiter Fanotify-Malware-Schutz |
pre_exec_blocking_enabled | bool / true | Blockierung vor der Ausführung (FAN_DENY) |
entropy_freeze_enabled | bool / true | Ransomware Fast-Freeze (SIGSTOP) |
mount_hardening_enabled | bool / true | noexec auf /tmp und /dev/shm (auf nicht offene Profile angewendet) |
yama_memory_protect_enabled | bool / true | Yama-Ptrace-Einschränkungen |
usb_storage_guard_enabled / usb_keyboard_guard_enabled | bool / false | USB-Speicher/BadUSB-Tastaturschutz (standardmäßig deaktiviert) |
usb_zero_trust_enabled | bool / false | USB-Bus autorisierter_Standard=0 |
bluetooth_guard_enabled | bool / false | Deaktivieren Sie Bluetooth-Funk in nicht vertrauenswürdigen Netzwerken |
sharing_service_control_enabled | bool / true | Automatisches Stoppen/Wiederherstellen von SSH/Samba/RDP |
scan_exclusions | [string] | Absolute Pfade, die vom Scannen ausgeschlossen sind |
link_guard | Objekt | {enabled, mode: "off"|"warn"|"block", allowlist, blocklist_extra, use_threat_dns} |
vpn_on_untrusted_enabled | bool / false | Automatischer Start des VPN-Tunnels in nicht vertrauenswürdigen Netzwerken |
vpn_backend | Zeichenfolge / wireguard | wireguard / tailscale |
active_vuln_scan_enabled | bool / false | Erlaubt die Ausführung von scan-vulns (standardmäßig aus). Erfordert explizites Opt-in, da nur auf 127.0.0.1 beschränkte Erreichbarkeitsproben gesendet werden |
pkgcve_watched_folders | [string] | Projektordner (absolute Pfade), die der Abhängigkeits-Scan der GUI prüft. Der CLI-Befehl scan-packages ignoriert diese Einstellung und verwendet nur über Kommandozeilenargumente übergebene Ordner |
sensor_pairing_enabled | bool / false | Erlaubt Pairing mit gegenseitigem Vertrauen per Pairing-Code mit RoamSwitch Sensor (standardmäßig aus). Erforderlich für die Nutzung des Befehls sensor |
port_scan_detect_enabled | bool / true | Eingangsportscan-Erkennung |
port_scan_detect_min_distinct_ports | int / 15 | Eine Quelle, die innerhalb des Erkennungsfensters mindestens so viele verschiedene Ports kontaktiert, wird als Scan gewertet |
port_scan_detect_window_secs | int / 300 | Aggregationsfenster für die Scan-Erkennung (Sekunden) |
port_scan_block_enabled | bool / true | Blockiert die erkannte Scan-Quell-IP automatisch |
port_scan_block_duration_secs | int / 600 | Dauer der automatischen Blockierung (Sekunden) |
sharing_service_control_enabled: true werden durch die Verbindung zu einem nicht vertrauenswürdigen Netzwerk aktive SSH-Sitzungen getrennt. Lassen Sie es auf Headless-Servern deaktiviert.Server-Edition (/etc/roamswitch/server.conf)
Server Edition verwendet eine Konfigurationsdatei im INI-Format mit strengen Berechtigungen (0600, nur Root). Siehe Server Edition-Bedienungshandbuch
5. Protokolle und Laufzeitstatusdateien
| Pfad | Ziel | Beschreibung |
|---|---|---|
journalctl -u roamswitch.service | Kunde | Client-Daemon-Protokolle (Profilwechsel, Erkennungen, Fehler) |
journalctl -u roamswitch-server.service | Server | Server-Daemon-Protokolle (FIM-Ereignisse, Falco-Erkennungen, Isolierungen) |
/run/roamswitch/roamswitch.sock | Kunde | Client-Daemon-IPC-Unix-Domänen-Socket |
/run/roamswitch/events.sock | Server | Falco/Tetragon eBPF-Integrationssocket (root:root, Modus 0660; Falco wird standardmäßig als Root ausgeführt und ermöglicht direkte Socket-Schreibvorgänge ohne Konfiguration) |
/run/roamswitch/state.json | Kunde | Zyklusstatus: {active_level, network_trusted, fanotify_ready} |
/run/roamswitch/alerts.json | Kunde | Aktuelle Benachrichtigungswarteschlange |
/run/roamswitch/approvals.json | Kunde | Ausstehende Genehmigungswarteschlange |
/run/roamswitch/fanotify.ready | Kunde | Flag-Datei, die anzeigt, dass Fanotify Guard ausgeführt wird |
/var/lib/roamswitch/fim_baseline.db | Server | FIM SHA-256 Baseline-Hash-Datenbank |
~/.local/share/roamswitch/quarantine/ | Beides | Quarantäne-Tresor (0700, Proben 0400) + .metadata.json |
IPC direkt aufrufen (Erweitert)
Der Daemon akzeptiert durch Zeilenumbrüche getrenntes JSON auf /run/roamswitch/roamswitch.sock:
# Profil erzwungen wechseln (Client Edition)
printf '{"id":1,"method":"set_security_level","params":{"level":"lockdown"}}\n' \
| sudo socat - UNIX-CONNECT:/run/roamswitch/roamswitch.sock
# Gateway-ARP-Sperre jetzt abgleichen
printf '{"id":1,"method":"reconcile_gateway_lock","params":null}\n' \
| sudo socat - UNIX-CONNECT:/run/roamswitch/roamswitch.sock
6. Programmatischer Status (MCP)
roamswitch-mcp macht schreibgeschützte Tools über JSON-RPC auf stdio verfügbar (get_security_report / get_exposed_ports / get_guard_status / audit_url_safety / audit_secrets / audit_security_logs / get_app_help / get_quarantine_status / get_file_scan_guard_status / verify_fim / get_port_anomaly_incidents / get_ebpf_incidents / get_resource_guard_incidents / get_canary_status / get_notification_history / get_incident_timeline / run_active_vuln_scan / run_package_cve_scan / run_package_cve_scan_languages).
Es verwendet keine externe Netzwerkkommunikation, sondern stellt eine lokale Verbindung zum Daemon-Socket her oder ruft roamswitch-core auf. Siehe MCP-Einrichtungshandbuch
7. Automatisierungsrezepte
Täglicher Cron-Gesundheitscheck → E-Mail senden, wenn der Score unter den Schwellenwert fällt
#!/usr/bin/env bash
# /etc/cron.daily/roamswitch-health
out=$(runuser -u "$SUDO_USER" -- roamswitch status 2>&1)
score=$(printf '%s\n' "$out" | grep -oE '[0-9]+/100' | head -1 | cut -d/ -f1)
if [ -n "$score" ] && [ "$score" -lt 80 ]; then
printf '%s\n' "$out" | mail -s "RoamSwitch health: ${score}/100" root
fi
Warteschlange für Überwachungswarnungen (Poll Alerts.json)
#!/usr/bin/env bash
last=0
while :; do
ts=$(jq -r 'max_by(.timestamp).timestamp // 0' /run/roamswitch/alerts.json 2>/dev/null || echo 0)
if [ "$ts" -gt "$last" ]; then
jq -c ".[] | select(.timestamp > $last)" /run/roamswitch/alerts.json | logger -t roamswitch-alert
last=$ts
fi
sleep 10
done
Überprüfen Sie den Zustand des Fanotify Guard (state.json).
jq -e '.fanotify_ready == true' /run/roamswitch/state.json >/dev/null \
|| echo "WARNING: fanotify guard is not running" >&2
8. Fehlerbehebung
| Symptom | Auflösung |
|---|---|
roamswitch wird mit „Überprüfen Sie, ob roamswitch-mcp installiert ist“ beendet. |
Daemon läuft nicht → sudo systemctl start roamswitch.service (oder roamswitch-server.service). Überprüfen Sie, ob der Socket vorhanden ist |
roamswitch status zeigt fanotify 🔴 „Wache blieb stehen“ |
Vorübergehende fs.fanotify.max_user_groups Erschöpfung. Starten Sie mit sudo systemctl restart roamswitch.service neu und überprüfen Sie es im Journal |
Profil bleibt in balanced und erreicht nie open |
Überprüfen Sie, ob die Gateway-MAC in trusted_networks mit level: open registriert ist. |
| SSH wird unerwartet getrennt | Die Client-Edition hat sharing_service_control_enabled: true in einem nicht vertrauenswürdigen Netzwerk. Deaktivieren über roamswitch sharing off |
| Konfigurationsänderungen werden nicht wirksam | The client daemon reads the first of /home/*/.config/…; apply with systemctl restart roamswitch.service. For the server edition, edit /etc/roamswitch/server.conf then run sudo roamswitch server restart (no reload). |
| Die Serverkommunikation wurde versehentlich blockiert | Greifen Sie auf die Cloud-Konsole (VNC/seriell) zu und führen Sie sudo roamswitch emergency-restore aus. |