Status und Geräte

Vier Befehle zeigen dir, wie es um dein Netz steht. juist status zeigt dieses Gerät, juist health alles, worum du dich kümmern solltest, juist devices listet alle Geräte auf, und juist log zeigt jede Änderung und wer sie bestätigt hat.

Diese Befehle fragen den Daemon juistd, wie es steht, und lesen die Kopie des Mitgliederlogs auf dem Gerät. Scheint etwas nicht zu stimmen, fang mit juist health an. Der Befehl nennt jedes Problem, meist mit einer Zeile hint:, die es behebt.

juist status und juist health darf jeder lokale Benutzer ausführen, alle anderen Befehle nur root und der Operator des Geräts. Auf einem Gerät in mehreren Netzen zeigen die Befehle jedes Netz nacheinander; juist devices work zeigt nur eines.

Ein Gerät prüfen #

1auf laptop

Sieh nach, ob dieses Gerät verbunden ist:

juist status
$ juist status
home · connected
  This device   laptop  198.18.36.1  fd4c:8a21:e3f:5b1a:9d02:c4e7:31f8:a6b0
  Devices       3 others
  Relays        1 available, via vps
  Names         laptop.home.juist
  Multicast     on, copied: auto
  Freshness     vouched 12m ago, valid 48h
  Ports         udp/41643
  Schema        20
  Updated       just now

Die erste Zeile nennt das Netz und seinen Zustand, darunter folgen die Einzelheiten. Ist etwas zu tun, verweisen höchstens zwei Hinweise weiter:

hint: 1 change waits for your vote: juist approve
hint: 3 warnings: juist health

Ist das Gerät in mehreren Netzen, nennt der zweite Hinweis das Netz, etwa juist health work. juist status selbst meldet nur, was das Netz anhält: einen Fork- oder Rollback-Alarm oder ein Schema, das diese Version von juist nicht lesen kann.

In der ersten Zeile steht einer dieser Zustände:

ZustandBedeutung
connectedalles funktioniert
no networkdieses Gerät ist noch in keinem Netz; juist health sagt, wie du einem beitrittst oder eines gründest
not connectedjuistd hält das Netz, hat aber keine Tunnel aufgebaut, oder das Netz läuft auf diesem Host schon; juist health sagt, warum
waiting for peerses gibt andere Geräte, aber noch keines hat sich gemeldet
no tunnel upandere Geräte sind bekannt, aber durch keinen Tunnel zu ihnen fließt Verkehr
limitedder Stand dieses Geräts ist womöglich veraltet, deshalb hält es nur Tunnel zu Vouchern (siehe Freshness unten)
disableddas Netz wurde mit einem Break-glass-Geheimnis beendet; mit juist reset beginnst du von vorn
removeddieses Gerät gehört nicht mehr zum Netz
refuseddie anderen Geräte weisen dieses ab; vermutlich wurde es entfernt
behinddieses Gerät war so lange weg, dass die anderen den Teil des Logs, den es braucht, nicht mehr aufbewahren; tritt mit einem neuen Einladungslink wieder bei (Fehlersuche)
disconnecteddas Log hat sich gespalten oder ist zurückgesprungen, und alle Tunnel bleiben unten, bis ein Admin das auflöst (Fehlersuche)
joining a networkdieses Gerät tritt gerade einem Netz bei
not runningder Daemon läuft nicht, etwa juist0 · not running, oder juistd not running, wo kein juist-Paket installiert ist; juist health sagt, wie du ihn startest (siehe Fehlersuche)

Was die Zeilen bedeuten #

  • This device: Name und Adressen dieses Geräts im Netz, erst IPv4, dann IPv6.
  • Devices: wie viele andere Geräte es gibt und zu wie vielen bei der letzten Prüfung kein Tunnel Verkehr trug; juist devices sagt, warum.
  • Relays: wie viele Geräte weiterleiten dürfen und welches davon dieses Gerät nutzt.
  • HTTPS: auf einem Gerät, das nur HTTPS sendet, die Relays auf Port 443, über die es läuft, und sein Proxy. Siehe Nur HTTPS.
  • Relay name: der öffentliche Name, den das Relay dieses Geräts auf Port 443 bedient. root und der Operator sehen außerdem, ob es ihn schon bedient.
  • Exit node: über welches Gerät der Internetverkehr dieses Geräts läuft, falls überhaupt. Siehe Exit-Nodes.
  • Names: die eigenen Namen dieses Geräts, etwa laptop.home.juist; juist names listet die des Netzes, und warum sie nicht aufgelöst werden, sagt juist health. Siehe Namen.
  • Multicast: ob dieses Gerät Multicast und UDP-Broadcast zu den Mitgliedern überträgt, und die Gruppen, die es ins Netz kopiert. copied: auto ist der Linux-Standard: alle eigenen IPv4-UDP-Gruppen, soweit Discovery erlaubt ist. Mit Policy bleibt es off, bis eine passende Regel pass multicast Discovery erlaubt; --multicast=false hat Vorrang. Siehe Multicast.
  • Freshness: wann ein Voucher den Stand dieses Geräts zuletzt bestätigt hat und wie lange das gilt. Nach 48 Stunden ohne Bestätigung steht dort expired; vouchers only, und juist health warnt einen Tag vorher. Ohne Voucher steht dort unchecked: no voucher.
  • Published: die veröffentlichten Namen, die dieses Gerät bedient, oder warum es sie nicht bedient. Siehe Dienste veröffentlichen.
  • Ingress: auf einem Ingress, ob er läuft, welche Namen er bedient, welche Ports er per TCP weiterreicht und welche Ports ein anderes Programm belegt.
  • Sharing: wie viele Freigaben dieses Gerät hat (juist share listet sie auf), oder warum niemand sie erreicht.
  • Ports: die Ports, auf denen juistd lauscht. udp/41643 ist der für die Tunnel.
  • Schema: die Version des Formats, in dem das Log des Netzes steht. Kennt diese Version von juist eine neuere, folgt sie gelb in Klammern, etwa 19 (20); auf einem Gerät mit Admin-Schlüssel sagt juist health dann, wie du es anhebst (siehe juist aktualisieren).
  • Updated: wann juistd zuletzt einen neuen Stand des Netzes übernommen hat.

Zeilen wie Subnets, Published oder Renumbering erscheinen nur, wenn die jeweilige Funktion genutzt wird.

Was zu tun ist #

juist health sagt, worum du dich auf diesem Gerät kümmern solltest, jede Warnung mit einem hint:, der sie behebt, und welche Geräte es nicht erreicht:

$ juist health
warning: log sync to vps fails in the tunnel: tcp/41644 does not answer there
hint: where it runs Linux: sudo ufw allow in on juist0, or add juist0 to firewalld's trusted zone
no answer from phone: offline, or udp/41643 blocked

Eine schlichte Zeile wie no answer from phone verlangt nichts, solange das Gerät aus ist. Nach den Warnungen folgen die Änderungen, die auf deine Stimme warten (siehe Admins), und auf einem Gerät mit Admin-Schlüssel, wie du das Schema des Netzes anhebst. Ist nichts zu tun, sagt der Befehl das:

$ juist health
nothing needs attention

Ist das Gerät in mehreren Netzen, gibt juist health jedes Netz unter seinem Namen aus.

Die Geräte auflisten #

juist devices listet alle Geräte in einer Tabelle auf:

$ juist devices
NAME                  IPV4         REACHED  SCHEMA  ROLES
laptop (this device)  198.18.36.1  -        20      -
nas                   198.18.36.2  direct   20      voucher, names, publishes
vps                   198.18.36.3  direct   20      voucher, relay
phone                 198.18.36.4  relayed  20      -

ROLES zeigt für jedes Gerät:

  • die Rollen, die das Netz ihm gegeben hat, etwa voucher, relay oder exit;
  • seine Subnetze;
  • names, wenn öffentliche Namen auf das Gerät zeigen (juist names listet sie auf);
  • publishes, wenn es Namen veröffentlicht (juist publish listet sie auf);
  • -, wenn nichts davon zutrifft.

REACHED gibt an, wie juistd das Gerät bei der letzten Prüfung erreicht hat:

REACHEDBedeutung
directein direkter Tunnel funktioniert
relayedder Tunnel läuft über ein Relay
outdatedauf dem Gerät läuft ein älteres juist, und bis es aktualisiert ist, ist es nicht erreichbar
no answerdas Gerät hat nicht geantwortet, weil es offline ist oder eine Firewall es blockiert
offline, offline, heard 3h agodas Gerät ist wahrscheinlich offline und hat sich seitdem nicht gemeldet
not heard fromdas Gerät hat noch nicht mitgeteilt, wo es erreichbar ist
not checked yetjuistd hat noch nicht nachgesehen
not connecteddas Gerät hat sich gemeldet, aber es gibt keinen Tunnel, etwa weil der Stand dieses Geräts veraltet ist
-dieses Gerät selbst

SCHEMA ist das neueste Schema, das das juist eines Geräts kennt, so wie das Gerät es ankündigt. Es ist gelb, wo es älter ist als das dieses Geräts, und -, wo dieses Gerät noch keine Ankündigung von ihm gehört hat. Läuft juistd nicht oder hat es keine gehört, fehlt die Spalte.

Gelten Zugriffsregeln, zeigt juist devices nur dieses Gerät und die Mitglieder, zu denen es einen Tunnel hat, und endet mit hint: 2 more devices the access policy keeps apart from this one: juist devices --all.

juist devices -6 zeigt zusätzlich die IPv6-Adresse jedes Geräts, juist devices --keys seinen Identitätsschlüssel. Auch juist remove akzeptiert diesen Schlüssel.

juist status -d (--devices) zeigt den Status und nach einer Leerzeile die Gerätetabelle, wie juist status und juist devices nacheinander.

juist status -v (--verbose) fügt unter Relays eine Zeile für jedes Gerät hinzu, das die letzte Prüfung über ein Relay erreicht hat, und nennt das Gerät, dessen Relay den Verkehr dorthin trägt:

  Relays        1 available, via vps
                phone via vps

Alle Änderungen ansehen #

$ juist log
   0  network creation                             K2JS2DNGYZWZ
      approved by alice
   1  device admission: nas                        EU7V5XCUUOSO
      approved by alice
   2  device admission: vps                        QH4T7MWD2LXA
      approved by alice
   3  change of a device's roles or subnets: vps   MMOPGHJRKJ7D
      approved by alice
4 changes

Jeder Eintrag ist eine Änderung, darunter stehen die Admins, die sie mit ihrem Schlüssel bestätigt haben.

juist log show zeigt, was eine einzelne Änderung bewirkt hat und welche Schlüssel sie signiert haben. Du gibst sie mit ihrer Nummer an, mit -N vom Ende her gezählt (-1 ist die neueste) oder mit dem Anfang ihres Hashes:

$ juist log show 3
   3  change of a device's roles or subnets: vps
      gives vps (nid:QH4T7MWD…) the role relay
      approved by alice, with nid:Kc3vR8dE…
      hash MMOPGHJRKJ7DTZ2QWLQ6N5LXGZ4VQ3RJ4M2B7ZPXS2YQFG6C5WDA

Jede Änderung wird gegenüber dem Netz beschrieben, wie es direkt davor war. Eine Änderung der Zugriffsregeln erscheint deshalb als Diff. Uhrzeiten enthält das Log nicht, denn keine Änderung trägt ein signiertes Datum. juist log verify prüft das gesamte Log noch einmal.

Das Log des Daemons #

journalctl -u juistd

Hier steht, was juistd selbst meldet; unter FreeBSD steht es in /var/log/juistd.log. Ein zweites Netz auf demselben Gerät hat einen eigenen Daemon, juistd@juist1, mit eigenem Log, unter FreeBSD /var/log/juistd.juist1.log.

Fehlersuche #

juist health gibt Warnungen aus, jeweils mit einer Zeile hint: darunter. Die häufigsten und was du dagegen tun kannst, stehen unter Fehlersuche.