docs: Mermaid-Architektur-Vergleich (klassisch vs. iroh-forward)
Ersetzt das ASCII-Diagramm durch zwei Mermaid-Diagramme: klassischer Nginx-Reverse-Proxy (Serving Host braucht geroutete IP/VPN + eingehenden Port) vs. iroh-forward (ausgehend per Public Key, kein eingehender Port, CGNAT ok). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,17 +6,45 @@ CGNAT / dynamischer IP), ohne VPN-Daemon und ohne Änderung an OPNsense/Nginx.
|
|||||||
|
|
||||||
Umsetzung von **Option B** aus `recherche-vpn-vs-p2p-netzwerk.md`.
|
Umsetzung von **Option B** aus `recherche-vpn-vs-p2p-netzwerk.md`.
|
||||||
|
|
||||||
|
## Architektur-Vergleich
|
||||||
|
|
||||||
|
### Klassischer Nginx-Reverse-Proxy
|
||||||
|
|
||||||
|
Nginx leitet per `proxy_pass` an eine **geroutete IP** des Serving Host weiter. Der Serving Host
|
||||||
|
muss dafür über das Netz erreichbar sein — also feste IP bzw. ein VPN-Tunnel und ein eingehender
|
||||||
|
Port. Standortwechsel, CGNAT oder dynamische IPs brechen das Setup.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
Client([Client]) -->|HTTPS| OPN[OPNsense]
|
||||||
|
OPN --> NGX[Nginx]
|
||||||
|
subgraph NH [Nginx-Host]
|
||||||
|
NGX
|
||||||
|
end
|
||||||
|
NGX -->|"proxy_pass<br/>http://10.0.0.5:3000<br/>(geroutetes Netz / VPN)"| APP
|
||||||
|
subgraph SH ["Serving Host — feste IP / VPN + eingehender Port nötig"]
|
||||||
|
APP[App :3000]
|
||||||
|
end
|
||||||
```
|
```
|
||||||
[Nginx] proxy_pass http://127.0.0.1:9080
|
|
||||||
│ (lokales TCP)
|
### Mit iroh-forward
|
||||||
▼
|
|
||||||
iroh-forward client --listen 127.0.0.1:9080 --peer <SERVER_ENDPOINT_ID>
|
Nginx zeigt auf einen **lokalen** Port; der `iroh-forward client` baut die Verbindung über das
|
||||||
│ QUIC / Iroh (TLS 1.3, n0-Relay oder Hole-Punch); 1 QUIC-Stream pro TCP-Verbindung
|
Iroh-Netz (QUIC, adressiert per Public Key) zum `iroh-forward server` auf. Beide Seiten verbinden
|
||||||
▼
|
sich **ausgehend** (über n0-Relay oder direktes Hole-Punching) — der Serving Host braucht **keinen
|
||||||
iroh-forward server --to 127.0.0.1:3000
|
eingehenden Port** und darf hinter CGNAT / mit dynamischer IP an beliebigem Standort laufen.
|
||||||
│
|
|
||||||
▼
|
```mermaid
|
||||||
[App :3000]
|
flowchart LR
|
||||||
|
Client([Client]) -->|HTTPS| OPN[OPNsense]
|
||||||
|
OPN --> NGX[Nginx]
|
||||||
|
subgraph NH [Nginx-Host]
|
||||||
|
NGX -->|"proxy_pass<br/>http://127.0.0.1:9080"| IFC[iroh-forward client]
|
||||||
|
end
|
||||||
|
IFC <-->|"QUIC / Iroh · TLS 1.3<br/>dial by Public Key<br/>n0-Relay oder Hole-Punch"| IFS
|
||||||
|
subgraph SH ["Serving Host — kein eingehender Port · CGNAT / dyn. IP ok"]
|
||||||
|
IFS[iroh-forward server] -->|"127.0.0.1:3000"| APP[App :3000]
|
||||||
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
QUIC multiplext beliebig viele Streams über **eine** Connection → parallele Requests skalieren
|
QUIC multiplext beliebig viele Streams über **eine** Connection → parallele Requests skalieren
|
||||||
|
|||||||
Reference in New Issue
Block a user