Reverse proxy clearnet zu Tor

Das sind 2 unterschiedliche Lösungswege.
@originalgof Clearnet-Domain → VPS-Proxy (Clearnet2Tor) → BTCPay (via Tor)
@Achse Clearnet-Domain → Reverse-Proxy (zu Hause) → BTCPay (via Clearnet)

Beide Lösungswege haben ihre Vor- und Nachteile, aber ich glaube config-seitig hilft leider das Eine dem Anderen nicht.

1 „Gefällt mir“

Danke fürs Erinnern! Mittlerweile hab ich das ganze deutlich komfortabler und einfacher mittels WireGuard aufgesetzt und wurde auch bereits von einem Community Mitglied auf Herz und Nieren geprüft. Muss ich mal aktualisieren.

Darüber hinaus hab ich auf dem VPS nginx als Reverse Proxy eingerichtet der dann über die VPN local IP der Node sämtliche Services erreicht.

Wenn ich Zeit hab! :see_no_evil:

2 „Gefällt mir“

Vielen Dank für die Antworten!
Bei meiner Clearnet2Tor-Lösung habe ich den Verdacht es liegt „nur“ noch an einer falschen Konfiguration. Gibt es vielleicht jemand der sich speziell mit nginx und scoat auskennt?

Die VPN-Lösung von @surenic währe für mich wohl am ehesten machbar. Was sieht das sicherheitstechnisch aus? Wenn ich einen BTCPay-Server darüber erreichbar mache, kann dann ja jeder alle anderen Services, wie z.B. RTL, erreichen oder? Bei @Achse s Lösung wäre nur der BTCPay-Server erreichbar, richtig?

So, gerne zum Ausprobieren und testen meine kürzlich angekündigte Anleitung zum Aufsetzen eines Wireguard VPN Servers auf einem kostenlosen Oracle Cloud VPS inklusive Verbindung zur Node und Hybrid Modus Einrichtung von CLN und LND

Bitte um Feedback und Rückmeldung, falls etwas unverständlich ist.

Das Tutorial für die Installation eines nginx Reverse Proxies mache ich dann separat, baut aber auf diesem bestehenden Server auf.

5 „Gefällt mir“

Zu deinen Fragen hier:

Die Node sitzt quasi einem VPN Tunnel verbunden zum VPS. Die Ports sind über eine Firewall und zuzüglich über die Oracle Security List solange dicht, bis du diese aktiv aufmachst.

Und selbst wenn der Port für RTL auf dem VPS offen wäre, leitet dieser den Traffic nicht einfach auf die Node.

Sprich: jeder Dienst ist erstmal unter deiner Kontrolle.

Nichtsdestotrotz würde ich in RTL die Zwei-Faktor-Authentifizierung aktivieren. Man weiß ja nie. Über Tor ist dein RTL ja schließlich direkt und ohne Firewall oder Weiterleitung erreichbar.

Nabend,

ich habe jetzt über die Feiertage auch endlich mal wieder ein bisschen mehr Zeit um mich mit meiner Node zu beschäftigen. Vor allem würde ich gern LNBits über meine Node zum Laufen (bzw erreichbar) kriegen, wäre das mit deinem Ansatz möglich? Eigl hatte ich vor das über IP2Tor zur lösen, allerdings scheint der Service dafür nicht mehr aktiv zu sein. Hier hatte ich vor ein paar Wochen schon mal nachgefragt, wie ich es lösen könnte

Außerdem finde ich aktuell noch ein bisschen nervig, dass die mobilen Wallets (zB Zeus) beim Öffnen der App ziemlich lange brauchen, um sich die Daten der Node zu holen. Ich vermute das liegt an Tor. Würde sich das mit dem Reverse Proxy auch verbessern?

Ich war schon drauf und dran einfach mal die Anleitung bei Github abzuarbeiten, aber jetzt frage ich doch lieber erstmal nach, ob meine Wünsche damit überhaupt erfüllt werden würden. Wäre auf jeden Fall cool, wenn ich das die kommenden Tage endlich mal hinbekomme und sollte es der Fall sein, würde ich auch gern mal deinen angegebenen LNURLp Link ausprobieren :slight_smile:

Ich bedanke mich schon mal für mögliche Rückmeldungen und wünsche allen frohe Feiertage!

Hey Lukker!

Ja, genau diese Problematik wäre Geschichte, da du Zeus schlichtweg nicht mehr via Tor verbinden würdest, sondern via Clearnet. Zeus verbindet bei mir in unter einer Sekunde.

Und ja, auch LNbits kannst du damit freigeben. Mein hier gepostetes Tutorial bildet grundlegend ab, wie du die entsprechenden Ports freigibst und dann im Web via https://VPN_IP:PORT die Dienste aufrufst.

Eleganter geht das, wenn du zusätzlich einen nginx web server auf dem VPS aufsetzt und entsprechend umleitest. So kannst du dann mit eigener domain oder duckdns (dyndns service) auch ohne Port auf die Dienste umleiten (z.B. lnbits.domainname.de). Hierzu hab ich auch ein Tutorial geschrieben, siehe hier.

Aber ersteres reicht auch erstmal raus, um sich auch mit der Materie auseinander zu setzen. Mehr geht später auch noch :wink:

Schöne Weihnachten euch allen!

2 „Gefällt mir“

Ich hab auch die Erfahrung gemacht das über Clearnet die ganzen Apps auch deutlich besser funktionieren (Bluewallet, Zeus). Deshalb ReverseProxy (Traefik), LNbits und das in die Apps eingebunden funktioniert super schnell und zuverlässig.

2 „Gefällt mir“

Ja sehr cool, ein besseres Weihnachtsgeschenk hätte man mir dieses Jahr kaum machen können! Ich hoffe das klappt dann am Ende auch alles so wie erhofft. Ich warte jetzt noch darauf, dass mein Account bei Oracle alle Berechtigungen bekommt und dann kanns losgehen :slight_smile: Vielen vielen Dank schon mal!

1 „Gefällt mir“

Hm, es wäre auch zu schön gewesen, wenn es einfach so klappt. Ich komme direkt am Anfang, beim Erstellen einer neuen Instanz in Oracle, schon nicht weiter, weil ich kein Image auswählen kann.

Gestern hatte ich zunächst angenommen, dass es daran liegt, dass mein Account neu ist und ich erst Berechtigungen dafür brauche. Laut Support hängt es wohl aber damit zusammen, dass zu viele Nutzer den Free Tier Account nutzen und dadurch manche Funktionen eingeschränkt sind. Ich werde mal noch ein paar Tage warten, evtl löst sich die Sache ja von selbst mit der Zeit…

Uff, das wäre mir neu und würde die ganze Grundlage meines Tutorials zerschießen. Man kann einen VPS natürlich auch kostenpflichtig aufziehen aber hmm, das war ja nicht Sinn der Sache :sweat_smile:

Gib mal Bescheid, ob sich was bei dir tut. Ich kann das leider nicht testen, da man keinen Zweitaccount erstellen kann

Dann versuche ich es auch mal. Bei mir sehe ich sofort, dass mein Account noch nicht fertig erstellt wurde:

Somit warte ich erst noch einmal ab.

Ok, bei mir kam der selbe Fehler, lag aber nur am Browser.

Du musst vorher allen Cookies zustimmen, dann klappt es!

1 „Gefällt mir“

Tatsächlich, mit nem anderen Browser funktioniert es. Dann setze ich mich da heute mal dran, vielen Dank!

Trotzdessen, dass ich ein absoluter Noob bin, konnte ich dem Tutorial gut folgen und bin relativ einfach durch die Schritte gekommen. Jetzt am Ende jedoch, bei „der Stunde der Wahrheit“ bekomme ich einen Fehler, weil eine Zeile nicht akzeptiert, wie sie im Tutorial vorgegeben ist. Ich schließe natürlich nicht aus, dass meine Unfähigkeit das Problem ist :slight_smile:

Ich habe im Terminal meiner Node meine Daten eingegeben wie hier beschrieben:

[Interface]
PrivateKey = ***base64_encoded_peer_private_key_goes_here***
Address = 10.8.0.2/24

[Peer]
PublicKey = ***base64_encoded_peer_public_key_goes_here***
AllowedIPs = 0.0.0.0/0
Endpoint = PUBLIC_IP:51820
PersistentKeepalive = 25
PostUp = ip rule add table 200 from LOCAL_NODE_IP
PostUp = ip route add table 200 default via LOCAL_ROUTER_IP
PreDown = ip rule delete table 200 from LOCAL_NODE_IP
PreDown = ip route delete table 200 default via LOCAL_ROUTER_IP

DNS = DNS-ADRESSE-DES-VPS

Und dann wird, wenn ich über die Node den wg-client mit dem Server verbinden will (mit „sudo wg-quick up wg0“) folgendes ausgeworfen:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
Line unrecognized: `PostUp=ipruleaddtable200fromXXX.XXX.XXX.XXX’
Configuration parsing error
[#] ip link delete dev wg0

(EDIT: Ich bin sicher, dass ich die IP meiner Node richtig eingegeben habe)

Sieht jemand wo mein Fehler liegt? Ich würde jetzt erstmal zum Sport gehen und heute Abend nochmal ein bisschen rumprobieren :slight_smile: Danke schon mal für die Hilfe!

Super Anleitung habe es damit und mit ein bissl abstraktion hinbekommen den VPS über Azure zum laufen zu bekommen. jetzt funktioniert alles super und das Routing verhalten hat sich mit dem wechsel zu Clearnet auch massiv verbessert. Das einzige was ich nicht hinbekomme ist das eine LNURLp über Clearnet in LNBITS eingerichtet funktioniert ich bekommen in der BlueWallet über die ich testen will beim senden immer eine Fehlermeldung „Bad response from Server“. Wenn ich in LNBITS eine LNURL erstelle die mit TOR erzeugt wurde, funktioniert es zwar meist aber das ist so langsam und unzuverlässig das ich gerne auch die LNURL über Clearnet ansprechen würde. Eine Normale LN Rechnung wird offensichtlich direkt über Clearnet bezahlt das merkt man an der Geschwindigkeit.

Ich habe es mit der wireguard Anleitung versucht, doch leider stimmt die Konfiguration auf der Node nicht. Sobald die Verbindung über wireguard aufgebaut wird, bekomme ich z.B. zu GitHub keinen Verbindungsaufbau mehr hin.

Bei mir hat es jetzt auch endlich geklappt. Das Tutorial hat mir extrem dabei geholfen, vielen Dank dafür @surenic! :slight_smile:

Ein kleiner Nachtrag noch für Leute die den Raspibltz ab Version 1.8.0 mit LND benutzen: Man muss in der lnd.conf einiges ändern und vor allem das mit der LND-Backup File war ein bisschen kniffelig. Da hat mir das von Surenic eingangs im Tutorial erwähnte Tutorial von TrezorHannes dann weitergholfen. Evtl hilft dieser Hinweis ja noch jemandem der in Zukunft das Setup übernehmen möchte :slight_smile:

LND.conf adjustments, open with sudo nano /mnt/hdd/lnd/lnd.conf

[Application Options]

Command Description
externalip=207.154.241.101:9735 # to add your VPS Public-IP
nat=false # deactivate NAT

[tor]

Command Description
tor.active=true # ensure Tor is active
tor.v3=true # with the latest version. v2 is going to be deprecated this summer
tor.streamisolation=false # this needs to be false, otherwise hybrid mode doesn’t work
tor.skip-proxy-for-clearnet-targets=true # activate hybrid mode

CTRL-X => Yes => Enter to save

RASPIBLITZ LND-checkup FILE sudo nano /home/admin/config.scripts/lnd.check.sh since Raspiblitz has some LND pre-check scripts which otherwise overwrite your settings. Go to line 184 or search for enforce PublicIP if (if not running Tor). Uncomment those 5 lines indicated here:

#  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

CTRL-X => Yes => Enter to save

LND Systemd Startup adjustment

Command Description
sudo systemctl restart lnd.service apply changes and restart your lnd.service. It will ask you to reload the systemd services, copy the command, and run it with sudo. This can take a while, depends how long your last restart was. Be patient.
sudo tail -n 30 -f /mnt/hdd/lnd/logs/bitcoin/mainnet/lnd.log to check whether LND is restarting properly
lncli getinfo to validate that your node is now online with two uris, your pub-id@VPS-IP and pub-id@Tor-onion
"03502e39bb6ebfacf4457da9ef84cf727fbfa37efc7cd255b088de426aa7ccb004@207.154.241.101:9736",
     "03502e39bb6ebfacf4457da9ef84cf727fbfa37efc7cd255b088de426aa7ccb004@vsryyejeizfx4vylexg3qvbtwlecbbtdgh6c

Auch von mir vielen Dank an @surenic für die ausführliche Beschreibung. Ich habe allerdings ein paar Fragen und würde mich freuen, wenn mir jemand helfen kann :slight_smile:

  1. Wieso wird resolvconf auf dem Pi installiert?
    Im Tutorial von TrezorHannes wird gesagt, dass das benötigt wird, um DNS requests durch den VPN zu tunneln. Mich würde interessieren, was hier genau passiert und was resolvconf hier tut? Es wird ja einfach nur installiert und nicht in irgendeiner Form angepasst/konfiguriert. Wireguard wird der VPS DNS ja in der wg0.conf mitgeteilt, wieso reicht das nicht?
  2. Wieso ist in deiner Beschreibung @surenic der Teil mit der LND-checkup FILE weg? (im Tutorial von TrezorHannes zu finden unter „Click here to expand Raspiblitz 1.8.x settings“ relativ weit unten)
  3. Auf dem VPS in der wg0.conf wird der forward proxy eingerichtet. Unter anderem wird das gemacht:
    PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
    Besser ist folgendes (sofern man eine statische public IP hat, wovon auszugehen ist):
    PostUp = iptables -t nat -I POSTROUTING -o eth0 -j SNAT --to-source VPS-PUBLIC-IP
    Grund: SNAT ist etwas schneller (mit MASQUERADE wird jedes mal geprüft, welche IP das Interface hat) und SNAT funktioniert auch dann weiter, wenn zwischendurch das Interface mal kurz down war (auch wenn das unwahrscheinlich ist, wieso den Vorteil nicht mitnehmen?), siehe hier: iptables - Difference between SNAT and Masquerade - Unix & Linux Stack Exchange
  4. Wenn ich dieser Beschreibung strikt folge, wie verhält sich der Pi nun genau?
    Sofern VPS und VPN-Tunnel laufen, wird sämtlicher ausgehender Traffic über den VPS geroutet, richtig? Tor auch?
    Sofern der VPS oder VPN-Tunnel ausfällt, geht dann
    a) gar nichts mehr oder
    b) funktioniert nur noch Tor über die Route Heimrouter->Internet oder
    c) weiterhin clearnet und Tor, aber beides jetzt über die Route Heimrouter->Internet?

a) wäre suboptimal, weil man dann keinen Fallback auf Tor hätte.
b) wäre exakt so, wie ich es gerne hätte.
c) wäre schlecht, weil man dann seine Home public IP preisgibt.

Moin mxm,

danke für deine Rückmeldung! Ich versuch deine Fragen mal so gut ich kann zu beantworten. Vorab: Ich bin noch nicht lang im Spiel, wahrlich noch kein Linux-Experte und noch am Lernen. Die Intention meines Tutorials war im Grunde, TrezorHannes’ Guide zum Einen auf deutsch zu übersetzen und vor allem den kostenlosen VPS von Oracle aufzusetzen. Daher gleicht sich ganz einfach vieles im Tutorial, ohne dass dir da genauere Auskunft geben kann.

Kann ich direkt nicht beantworten, ich hielt es für notwendig und hab es einfach gemacht. Freu mich, dass du das so hinterfragst. Dann hab ich nämlich jetzt den Ansporn, mir das mal generell genauer anzuschauen.

Der Teil fehlt, weil das seit 1.8 neu ist, weil sich im LND Install Skript etwas getan hat. Ich benutze kein LND, sondern ausschließlich CLN und kann das alles nicht testen. Daher ist das Tutorial outdatet und ich muss das entweder von TrezorHannes kopieren oder darauf hinweisen.

Danke für den Input! Am Lernen und verstehen von iptables bin ich gerade dran. Auch hier hab ich stupide copy paste betrieben und blicke da langsam erst durch.

Das kann ich dir leider auch tatsächlich nicht beantworten. Der Oracle Server lief/läuft monatelang ausfallfrei rund und ich habe keines der Szenarien testen können. Da du in der LND und CLN conf ja die Server IP angibst und diese ans Netzwerk gesandt wird, würde ich vermuten, dass deine Heim-IP beim Ausfall des Wireguards aber nicht preisgegeben wird. Ist aber nur eine Vermutung.

Ich persönlich hab die Node-Verbindung zu Tor komplett deaktiviert und fungiere als Clearnet-Only, da Tor einfach zu langsam ist und teilweise weiterhin als präferierte Verbindung zu den Peers genutzt wird. Zahlungen dauern dann trotzdem gefühlt länger, was mich gestört hat.

Ich hoffe, dass noch weitere Antworten kommen, die technisch auch für mich noch mehr Licht ins Dunkle bringen können!

1 „Gefällt mir“