Home » Bitcoin » Raspiblitz Lightning LND via clearnet im Hybrid Mode

Raspiblitz Lightning LND via clearnet im Hybrid Mode

Der LND Hybrid Mode ist der Betriebszustand, in dem eure Lightning Node gleichzeitig über Tor und über das Clearnet erreichbar ist. Er schaltet Tor also nicht ab, sondern hört auf, jede einzelne Verbindung durch das Tor-Netz zu schleifen: Gegenstellen mit einer .onion-Adresse laufen weiter über Tor, Gegenstellen mit einer öffentlichen IP-Adresse spricht die Node direkt an. Auf dem RaspiBlitz braucht es dafür genau einen Eintrag in der lnd.conf — und eine Entscheidung, die euch niemand abnimmt.

Titelbild: der Schriftzug raspiblitz mit der Zeile "Eine Node, zwei Wege ins Netz". Zwei Pfeile führen zu den Feldern Clearnet mit der Konfigurationszeile listen=0.0.0.0:9735 und Tor mit der Zeile tor.v3=true. Im Hybridmodus ist dieselbe Lightning Node über beide Wege erreichbar.

Denn der Gewinn ist real, und der Preis auch. Wer viele Kanäle betreibt, kennt das Problem: Tor-Verbindungen brauchen länger, brechen häufiger ab, und bei zeitkritischen HTLC-Weiterleitungen entscheidet das darüber, ob eine Zahlung über euch läuft oder über jemand anderen. Wer dagegen in Ruhe ein paar Kanäle für den Eigenbedarf hält, hat von Clearnet wenig und verschenkt dafür den Standort seines Anschlusses. Dieser Artikel zeigt, wie ihr den Hybridmodus einrichtet — und woran ihr vorher erkennt, ob ihr ihn überhaupt wollt.

Was der LND Hybrid Mode macht — und was nicht

Eingeführt wurde die Betriebsart mit LND 0.14.0-beta. In den Release Notes steht dazu wörtlich: „A new flag has been added to enable a hybrid tor connectivity mode, where tor is only used for onion address connections, and clearnet for everything else." Dieses Flag heisst tor.skip-proxy-for-clearnet-targets, und mehr ist es im Kern nicht.

Wichtig ist der Unterschied zwischen ausgehend und eingehend. Ausgehend entscheidet LND ab sofort je Gegenstelle, welchen Weg es nimmt. Eingehend ändert sich erst dann etwas, wenn ihr der Node zusätzlich eine öffentliche Adresse mitgebt und der Port von aussen erreichbar ist. Die Onion-Adresse bleibt in beiden Fällen bestehen — ihr verliert sie nicht, ihr bekommt eine zweite Adresse dazu.

Gegenüberstellung zweier Zustände einer LND-Node. Links „Nur Tor“, die Vorgabe auf dem RaspiBlitz: jede Verbindung läuft über den Tor-Proxy, erreichbar allein über die .onion-Adresse, lncli getinfo zeigt eine einzige URI, Latenz und Störungen des Tor-Netzes wirken auf jeden Kanal, der Standort bleibt verborgen. Rechts „Hybridmodus“ mit dem Eintrag tor.skip-proxy-for-clearnet-targets=true: Gegenstellen mit .onion-Adresse weiterhin über Tor, Gegenstellen mit öffentlicher IP direkt über das Clearnet, erreichbar über beide Adressen mit zwei URIs, Voraussetzung ist der weitergeleitete Port 9735 und eine feste lokale IP-Adresse, und die eigene IP-Adresse steht im Netzwerkgraphen.

Achtung: Clearnet und die Privatsphäre

Eine Node hinter Tor zu betreiben hat gute Gründe, und für kleinere Nodes ist es weiterhin die naheliegende Wahl. Sobald ihr eine öffentliche Adresse ankündigt, steht sie im Netzwerkgraphen des Lightning-Netzes, und jeder, der den Graphen liest, kann sie einer groben geografischen Lage zuordnen. Das ist keine Randnotiz, sondern die eigentliche Entscheidung dieses Artikels.

LND selbst formuliert das in der Beispielkonfiguration unmissverständlich: „WARNING: This option will reveal the source IP address of the node, and should be used only if privacy is not a concern." Dazu kommt, dass ihr mindestens einen Port (Vorgabe: 9735) von aussen erreichbar machen müsst und damit für die Absicherung des darunterliegenden Systems selbst verantwortlich seid.

Setzt den Hybridmodus also dann ein, wenn Erreichbarkeit, Stabilität und Latenz für euch schwerer wiegen als die Anonymität des Standorts. Wenn ihr das umgekehrt seht, aber trotzdem Clearnet-Vorteile wollt, springt weiter unten zum Abschnitt über Tunnelsats. Und wer sich zuerst grundsätzlich sortieren möchte, findet im Ratgeber zum Schutz der Privatsphäre die Abwägung in allgemeiner Form.

Voraussetzungen: Port, feste IP-Adresse — und kein DS-Lite

Damit eure Node von aussen angesprochen werden kann, müssen drei Dinge stimmen.

  1. Zugriff auf den Router. Ihr braucht Zugang zu den Einstellungen, um eine Portweiterleitung anzulegen. Für die NAT-Variante weiter unten muss der Router zusätzlich UPnP beherrschen.
  2. Offener Port. Der Standardport für Lightning ist 9735. Er muss auf die lokale IP-Adresse eures RaspiBlitz weitergeleitet sein.
  3. Feste lokale IP-Adresse. Bekommt der RaspiBlitz beim nächsten Neustart eine andere Adresse aus dem DHCP-Bereich, zeigt die Weiterleitung ins Leere.

Wie ihr eine Portweiterleitung einrichtet, steht in der Anleitung zur Port-Weiterleitung für Dienste.

Feste IP-Adresse für den RaspiBlitz vergeben

  • Netzwerkeinstellungen öffnen. Sucht im Menü eures Routers nach den Netzwerk- oder DHCP-Einstellungen. Die Bezeichnung unterscheidet sich je nach Modell.
  • DHCP-Reservierung anlegen. Je nach Hersteller heisst die Funktion „DHCP-Reservierung", „Statische IP" oder „IP-Adressen-Zuweisung".
  • Gerät auswählen. Der RaspiBlitz wird meist über seine MAC-Adresse identifiziert. Auslesen könnt ihr sie auf der Node selbst.
  • Adresse festlegen und neu starten. Die Adresse muss im Subnetz eures Routers liegen. Danach den RaspiBlitz neu starten, damit er sie auch bezieht.
ip addr
sudo systemctl reboot

Wenn euer Anschluss hinter DS-Lite hängt

Dieser Punkt fehlte in der ursprünglichen Fassung dieses Artikels und ist der häufigste Grund, warum der Hybridmodus am Ende trotzdem nicht funktioniert: Bei einem DS-Lite-Anschluss teilt ihr euch die öffentliche IPv4-Adresse mit anderen Kunden desselben Anbieters. Eine Portweiterleitung auf IPv4 ist dann schlicht nicht möglich, egal was im Routermenü steht. Prüft das, bevor ihr anfangt — welche Wege es in diesem Fall gibt, steht in der Anleitung zu Diensten hinter DS-Lite.

Wo die lnd.conf auf dem RaspiBlitz wirklich liegt

Korrektur gegenüber der früheren Fassung: Dort stand /mnt/hdd/lnd/ als Ablageort der lnd.conf. Das stimmt heute nicht mehr. Das Installationsskript des Projekts legt die Datei unter /mnt/hdd/app-data/lnd/ ab und startet den Dienst mit --configfile=/mnt/hdd/app-data/lnd/lnd.conf.

Ihr müsst euch den Pfad aber gar nicht merken. Dasselbe Skript legt eine Abkürzung an, die immer auf die richtige Datei zeigt — auch dann, wenn ihr Testnet oder Signet parallel betreibt:

lndconf

Das öffnet die Konfiguration im Editor nano. Legt vorher eine Kopie an, dann habt ihr einen Rückweg:

sudo cp /mnt/hdd/app-data/lnd/lnd.conf /mnt/hdd/app-data/lnd/lnd.conf.bak

Der eine Eintrag, auf den es ankommt

In den Abschnitt [tor] der lnd.conf gehört diese Zeile:

[tor]
; Allow the node to connect to non-onion services directly via clearnet. This
; allows the node operator to use direct connections to peers not running behind
; Tor, thus allowing lower latency and better connection stability.
; WARNING: This option will reveal the source IP address of the node, and should
; be used only if privacy is not a concern.

tor.skip-proxy-for-clearnet-targets=true

Dazu gehört eine zweite Bedingung: Die Stream-Isolation muss aus sein. Sie gibt jeder Verbindung einen eigenen Tor-Kanal und verträgt sich mit dem Hybridmodus nicht. Im Leitfaden von blckbx, auf den sich die meisten Anleitungen zu diesem Thema stützen, steht dazu: „tor.streamisolation=false must be turned off/not present when using hybrid-mode".

Auf dem RaspiBlitz müsst ihr euch darum nicht selbst kümmern, und das ist der angenehmste Befund dieser Überarbeitung. Das Prüfskript lnd.check.sh, das vor jedem Start von LND läuft, erkennt euren Eintrag und zieht die passende Einstellung selbst nach:

if [ $(cat ${lndConfFile} | grep -c "^tor.skip-proxy-for-clearnet-targets=true") -gt 0 ] ||
   [ $(cat ${lndConfFile} | grep -c "^tor.skip-proxy-for-clearnet-targets=1") -gt 0 ]; then
  setting ${lndConfFile} ${insertLine} "tor.streamisolation" "false"
fi

Dasselbe Skript setzt auch tor.active, tor.v3 und den listen-Eintrag auf Port 9735. Einen eigenen Menüpunkt für den Hybridmodus hat der RaspiBlitz dagegen bis heute nicht — der Wunsch danach steht seit Jahren als offenes Issue 2787 im Projekt. Die Handarbeit an der lnd.conf bleibt euch also, das Skript nimmt sie euch nur nicht wieder weg.

Die externe Adresse: drei Wege, einer davon fällt weg

Damit eingehende Verbindungen möglich werden, muss LND wissen, unter welcher Adresse eure Node von aussen erreichbar ist. Dafür gibt es drei Möglichkeiten — und auf dem RaspiBlitz scheidet ausgerechnet die einfachste aus.

externalip: auf dem RaspiBlitz nicht haltbar

Bei einer festen öffentlichen IP-Adresse wäre externalip der direkte Weg. Auf dem RaspiBlitz hat dieser Eintrag jedoch keinen Bestand, sobald Tor aktiv ist — und aktiv ist Tor im Hybridmodus immer. Das erwähnte Prüfskript entfernt die Zeile bei jedem Start wieder:

# enforce PublicIP if (if not running Tor)
if [ "${runBehindTor}" != "on" ]; then
  setting ${lndConfFile} ${insertLine} "externalip" "${publicIP}:${lndPort}"
else
  # when running Tor a public ip can make startup problems - so remove
  sed -i '/^externalip=*/d' ${lndConfFile}
fi

Wer sich also wundert, warum die von Hand eingetragene IP-Adresse nach einem Neustart verschwunden ist: Das ist kein Fehler, sondern Absicht. Für nat und externalhosts enthält das Skript keine solche Regel, diese beiden Einträge bleiben stehen.

Variante 1: NAT über UPnP

Mit nat=true versucht LND, die externe Adresse selbst zu ermitteln und bei einem Wechsel nachzuziehen. Die Beispielkonfiguration von LND nennt dazu gleich die Einschränkungen: Beide Techniken „require proper hardware support", und wird sie nicht erkannt, beendet sich LND mit einem Fehler. Ausserdem: „This does not support devices behind multiple NATs."

[Application Options]
listen=0.0.0.0:9735
nat=true

[tor]
tor.active=true
tor.v3=true
tor.skip-proxy-for-clearnet-targets=true

externalip und nat werden dabei nie zusammen gesetzt; LND kommt mit der Kombination nicht zurecht. Der Leitfaden von blckbx geht noch weiter und rät nach Rückmeldungen aus der Praxis ganz davon ab: „Concluding from feedback on this, nat really doesn't work well and should be avoided!" Das ist eine Einschätzung dieses Leitfadens und keine Aussage des LND-Projekts — sie deckt sich aber mit den Einschränkungen, die LND selbst aufführt. Probiert diese Variante, wenn euer Router UPnP zuverlässig beherrscht, und wechselt auf die zweite, wenn es hakt.

Variante 2: DynDNS über externalhosts

Der stabilere Weg bei wechselnder IP-Adresse ist eine DynDNS-Domain. Ein Dienst aktualisiert dabei den DNS-Eintrag auf eure jeweils aktuelle Adresse, und LND löst den Namen regelmässig auf. Wie ihr eine solche Domain anlegt, steht in der Anleitung zum DynDNS-Eintrag bei dynamischer IP. Der gewählte Name spielt keine Rolle.

Die zuständige Option heisst externalhosts. LND beschreibt sie als „A list of domains for lnd to periodically resolve, and advertise the resolved IPs for the backing node".

[Application Options]
listen=0.0.0.0:9735
externalhosts=eure_dyndns_domain:9735

[tor]
tor.active=true
tor.v3=true
tor.skip-proxy-for-clearnet-targets=true

Eine Stolperfalle, die schnell zu einer verlorenen Stunde führt: Der RaspiBlitz hat unter SETTINGS einen eigenen Menüpunkt DynamicDNS. Der ist nützlich, macht aber etwas anderes. Er hinterlegt Domain und Aktualisierungsadresse in der raspiblitz.conf und trägt die Domain in das TLS-Zertifikat von LND ein — damit ihr eure Node unter diesem Namen fernsteuern könnt. In die lnd.conf schreibt er nichts. Den Eintrag externalhosts setzt ihr weiterhin selbst.

Nach jeder Änderung startet ihr LND neu:

sudo systemctl restart lnd.service

Funktionstest: zwei URIs statt einer

Ob die Umstellung gegriffen hat, beantwortet ein einziger Befehl:

lncli getinfo

Im Feld uris müssen jetzt zwei Einträge stehen, einer davon mit eurer öffentlichen Adresse. Die IP-Adresse im folgenden Beispiel ist ein Platzhalter:

"uris": [
    "<euer_pubkey>@203.0.113.17:9735",
    "<euer_pubkey>@<eure_adresse>.onion:9735"
]

Steht dort nur die Onion-Adresse, hat die Ankündigung nicht funktioniert. Die drei häufigsten Ursachen: Die Portweiterleitung zeigt auf die falsche lokale Adresse, der Anschluss liegt hinter DS-Lite, oder es wurde externalip gesetzt und beim Start wieder entfernt. Eine Gegenprobe von aussen liefert eine Gegenstelle, die euch direkt anspricht:

lncli connect <euer_pubkey>@<eure_adresse>:9735

Wer noch keine Gegenstellen hat, die das übernehmen könnten, findet im Beitrag zu Channel Peers finden und Lightning Kanäle eröffnen den Weg dorthin.

Betreibt ihr LNDg, taucht die Clearnet-Adresse dort ebenfalls auf:

Adressanzeige in LNDg: Die Node führt zwei Adressen, eine Clearnet-Adresse mit Port 9735 und daneben die .onion-Adresse. Bildschirmfoto von Juni 2024.

Tunnelsats: Clearnet, ohne die eigene Adresse zu zeigen

Tunnelsats ist ein VPN-Dienst, der eigens für Lightning-Nodes gebaut wurde. Statt eurer eigenen IP-Adresse kündigt die Node die Adresse des Tunnelendpunkts an. Ihr bekommt damit eine gleichbleibende öffentliche Adresse und die Latenzvorteile des Clearnets, ohne den eigenen Anschluss offenzulegen — und ohne eine Portweiterleitung im Router, was den Weg auch für DS-Lite-Anschlüsse öffnet.

Bezahlt wird über Lightning im Abonnement; der Monatspreis lag beim Abruf am 13.09.2026 bei rund 3900 Sat, für ein Jahr gibt es einen Rabatt. Die Einrichtung ist aufwendiger als der eine Eintrag oben, aber entlang der Projektanleitung machbar. Der Haken bleibt derselbe wie bei jedem VPN: Ihr tauscht das Wissen eures Internetanbieters gegen das Wissen des Tunnelanbieters.

Wer diesen Tausch nicht eingehen will, kann denselben Aufbau mit einem eigenen kleinen Server nachbauen — die Grundlagen dazu stehen im Beitrag Schnell und einfach einen Wireguard VPN betreiben. Der Aufwand ist deutlich höher, die Kontrolle dafür vollständig.

Worauf ihr achten solltet

  • Zuerst DS-Lite prüfen, dann alles andere. Ohne eigene öffentliche IPv4-Adresse führt keine Portweiterleitung zum Ziel, und der ganze Rest ist verlorene Zeit.
  • Die Adresse bleibt im Netz, auch nach dem Rückbau. LND kündigt zuvor gesetzte Adressen weiter an, wenn ihr den Eintrag einfach löscht. Sie müssen ausdrücklich zurückgenommen werden — die LND-Beispielkonfiguration nennt dafür lncli peers updatenodeannouncement --address_remove=.
  • Legt vor der Änderung eine Kopie der lnd.conf an. Ein Tippfehler im Abschnittsnamen reicht, damit LND nicht mehr startet.
  • Erwartet keine neuen Kanäle über Nacht. Der Hybridmodus verbessert Erreichbarkeit und Latenz. Ob jemand einen Kanal zu euch öffnet, entscheiden Gebührenpolitik und Liquidität, nicht die Transportschicht.
  • Die Sicherung der Kanäle bleibt Pflicht. Eine besser erreichbare Node ist keine sicherere Node. Wie ihr die channel.backup aus dem Haus bekommt, steht im Backup- und Restore-Leitfaden für Lightning Fullnodes und im Beitrag zum SCB-Backup auf einer Nextcloud.
  • Haltet die Node aktuell. Die Angaben hier beziehen sich auf RaspiBlitz 1.12.1; wie ihr aktualisiert, steht in der Anleitung zum Aktualisieren des RaspiBlitz.

Fazit: Der Hybridmodus ist ein Tausch, kein Upgrade

Technisch ist der LND Hybrid Mode eine der unaufwendigsten Verbesserungen, die eine Lightning Node erfahren kann: eine Zeile in der lnd.conf, eine Adresse für eingehende Verbindungen, ein Neustart. Die Wirkung ist messbar — direkte Verbindungen statt Tor-Umwege bedeuten kürzere Laufzeiten und weniger Abbrüche, und wer viele Kanäle führt, merkt das an der Zahl der Weiterleitungen.

Gratis ist das aber nicht. Bezahlt wird nicht in Sat, sondern mit der Preisgabe des eigenen Anschlusses: Die Adresse steht im öffentlichen Netzwerkgraphen, dauerhaft, und lässt sich grob verorten. Wer eine Node aus Neugier oder für den eigenen Zahlungsverkehr betreibt, hat davon wenig und verliert etwas — für den bleibt Tor die richtige Wahl. Wer Routing betreibt und an Verfügbarkeit gemessen wird, kommt an dieser Zeile kaum vorbei. Und wer beides will, findet in Tunnelsats oder einem eigenen Tunnelserver den Mittelweg, der monatlich etwas kostet statt einmalig die Anonymität.

Die einzige falsche Antwort ist, den Schalter umzulegen, ohne die Frage gestellt zu haben.

Quellen und weiterführende Links

Ähnliche Beiträge

  • Was ist das Bitcoin Lightning Netzwerk

    Im heutigen Artikel geht es um das Bitcoin Lightning Netzwerk, wie es funktioniert, welche Vorteile es hat und welche Apps wichtig sind. Das Bitcoin Lightning Network ist eine Second-Layer-Lösung, die...

  • Was ist der Bitcoin Mempool

    Der Bitcoin Mempool ist ein faszinierendes und zentrales Element im Ökosystem von Bitcoin, welches sowohl für Anfänger als auch für erfahrene Nutzer von Interesse ist. Mit dem Mempool habt ihr...

  • Charge-lnd auf Umbrel installieren

    In heutigem System möchte ich euch zeigen, wie ihr charge-lnd auf eurem Umbrel System installieren könnt. Charge-lnd ist ein einfacher, regelbasierter Gebührenmanager für LND. Mit diesem Tool könnt ihr Gebühren...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert