SXAccessSXAccessDoku
Dashboard öffnen

Umgebungsvariablen

Variablen, die CLI und Agent lesen - für die unbeaufsichtigte Registrierung, zum Verlagern der Dateien des Agenten und zum Nachstellen von Fehlern.

Jede Variable beginnt mit SX_. Es gibt zwei Arten, die von verschiedenen Prozessen gelesen werden, und welcher Prozess eine Variable liest, entscheidet, wo Sie sie setzen müssen - genau dort liegt der häufigste Irrtum. Einzelheiten stehen im Hinweis zur Rangfolge am Ende dieser Seite.

  • Optionsvariablen enthalten den Wert einer Kommandozeilenoption: SX_ und der Optionsname in Großbuchstaben, mit Unterstrichen statt Bindestrichen; aus --enrollment-key wird so SX_ENROLLMENT_KEY. Der Befehl, den Sie ausführen, liest sie; setzen Sie sie also für diesen Befehl.
  • Agentenvariablen ändern das Verhalten des Agenten selbst. Nur der Agent liest sie; sie müssen also in der Umgebung seines Systemdienstes stehen.

Optionsvariablen

VariableGelesen vonZweck
SX_ENROLLMENT_KEYstart, enrollDer Registrierungsschlüssel, wie --enrollment-key. Anders als die Option erscheint er nicht in der Prozessliste
SX_ENROLLMENT_KEY_FILEstart, enrollEine Datei mit dem Schlüssel, wie --enrollment-key-file
SX_HOSTNAMEstart, enrollDer Name, unter dem das Gerät erscheint, wie --hostname
SX_LOG_LEVELdie meisten Befehle und der AgentDie Protokollstufe, wie --log-level. In der Umgebung des Dienstes legt sie die Protokollstufe des Agenten fest
SX_ und jede Option von startnur startZum Beispiel SX_DISABLE_DNS=true. Wie die Optionen wirken sie nur, wenn start auf einem getrennten Gerät läuft: Auf einem verbundenen Gerät ändert start nichts. Um dort eine Einstellung zu ändern, verwenden Sie sxaccess stop && SX_DISABLE_DNS=true sxaccess start. Führen Sie es als eine Zeile aus: Eine Verbindung über SXAccess, etwa eine SSH-Sitzung zu dieser Maschine, bricht ab, bis start fertig ist. In einer Sitzung über sxaccess shell klappt das nicht: Beim Stoppen schließt der Agent diese Sitzung und beendet den Befehl. Nutzen Sie dafür die Konsole oder eine OpenSSH-Sitzung. SX_PROFILE ist eine Ausnahme: Wie bei --profile verbindet start das Gerät dann mit dieser Identität neu, auch wenn es bereits verbunden ist. SX_TENANT=<Organisations-ID> wirkt nur bei der Registrierung des Geräts. enroll liest keine davon; SX_NO_BROWSER, SX_PROFILE und SX_TENANT bewirken dort also nichts
SX_MANAGEMENT_URLstart, enrollDer Management-Dienst. Seine Adresse ist eingebaut: Setzen Sie diese Variable nur, wenn der Support Sie darum bittet

Agentenvariablen

Nur der Agent liest diese Variablen. Eine solche Variable in Ihrer Shell oder vor einem sxaccess-Befehl bewirkt also nichts: Setzen Sie sie wie unten gezeigt in der Umgebung des Dienstes. Die meisten dienen dazu, einen Fehler nachzustellen oder einen ungewöhnlichen Host zu betreiben, und sind nicht für die dauerhafte Konfiguration gedacht.

VariableWirkung
SX_STATE_ROOTDer Ordner für Schlüssel, Identitäten und Zustand des Agenten, standardmäßig /var/lib/sxaccess. Die Schlüssel des Geräts liegen dort: Zeigt die Variable auf einen leeren Ordner, erzeugt der Agent neue, und die nächste Anmeldung legt ein neues Gerät an
SX_DNS_STATE_PATHEine feste Datei, gemeinsam für alle Identitäten, für die Aufzeichnung der Systemänderungen, die der Agent nach einem Absturz rückgängig macht: DNS, Routen, Firewall-Regeln und die Netzauswahl. Siehe Was der Agent gespeichert hat
SX_RESOLV_RECOVERY_PATHLinux. Wo der Agent eine Kopie von resolv.conf ablegt, um sie nach einem unsauberen Herunterfahren wiederherzustellen; standardmäßig resolv.conf im Zustandsordner
SX_RELAY_ONLYMit true bleibt jede Verbindung zu einem anderen Gerät auf dem Relay und wechselt nie auf einen direkten Pfad. Verwenden Sie die Variable, um einen Relay-Pfad gezielt nachzustellen
SX_USERSPACE_STACKMit true betreibt der Agent den Tunnel in seinem eigenen Netzwerkstack, ohne Tunnel-Schnittstelle, und lässt Routen und DNS des Systems unberührt. Programme auf der Maschine erreichen Ihr Netzwerk dann über den SOCKS5-Proxy des Agenten
SX_SOCKS_PORTDer Port dieses SOCKS5-Proxys, standardmäßig 1080. Er lauscht auf allen Schnittstellen der Maschine; SX_USERSPACE_NO_SOCKS=true schaltet den Proxy ab. Nur mit SX_USERSPACE_STACK=true
SX_LOG_LAYOUTjson oder syslog ändert das Format der Logzeilen des Agenten; alles andere ergibt einfachen Text
SX_LOG_FILE_MBDie Größe in MB, ab der der Agent eine neue Logdatei beginnt, standardmäßig 15. Er behält bis zu zehn ältere Dateien, komprimiert und höchstens 30 Tage lang
SX_DISABLE_PROFILESMit true sind Änderungen an Identitäten auf dieser Maschine abgeschaltet: Der Agent lehnt es ab, Identitäten anzulegen, zu entfernen oder zu wechseln und die Einstellungen zu speichern, die start übergibt
shell - Agentenvariablen: alle im selben Aufruf nennen
sudo sxaccess agent reconfigure --service-env SX_RELAY_ONLY=true,SX_LOG_FILE_MB=50
shell - alle zusätzlichen Variablen wieder entfernen
sudo sxaccess agent reconfigure
shell - Optionsvariablen gehören an den Befehl, der sie liest
SX_ENROLLMENT_KEY='A6160...' sxaccess start

Rangfolge und wo eine Variable gesetzt werden muss

Eine Umgebungsvariable überschreibt die Kommandozeilenoption, nicht umgekehrt. Ein Befehl liest seine Optionen und überschreibt sie danach mit jeder passenden SX_-Variablen - eine Variable, die noch in einer Shell-Startdatei oder Unit-Datei steht, hat also stillschweigend Vorrang vor der Option, die Sie gerade eingegeben haben.

Ebenso wichtig ist, welcher Prozess die Variable liest. start liest die Variablen der globalen Optionen und seiner eigenen Optionen. enroll, info, stop und die übrigen Befehle, die mit dem Agenten kommunizieren, lesen nur die der globalen Optionen, und die Befehle unter sxaccess tenant lesen gar keine. Der Agent liest die Variablen der globalen Optionen und die oben genannten Agentenvariablen, und zwar aus der Umgebung seines Systemdienstes, nicht aus der Ihrer Shell.

Um dem Agenten eine Umgebung zu geben, führen Sie sudo sxaccess agent reconfigure --service-env mit jeder Variablen aus, die er haben soll, wie oben gezeigt. Der Befehl registriert den Dienst neu und startet einen laufenden Agenten neu; danach müssen Sie nichts weiter neu starten. Jeder Aufruf ersetzt die ganze Umgebung: Ein späteres agent reconfigure ohne --service-env verwirft alle zuvor gesetzten Variablen. agent install akzeptiert dieselbe Option, funktioniert aber nur auf einer Maschine, auf der der Dienst noch nicht installiert ist.