Jump to content

Reverse SSH Tunnel von V-Server zu Unraid


Go to solution Solved by Cramp4600,

Recommended Posts

Moin,

 

Ich möchte einen Docker Container über einen Reverse-Proxy von meinem V-Server aus erreichbar machen.

 

Der DNS-Eintrag soll auf den V-Server verweisen und die Anfragen auf IP V4 und IP V6 annehmen und die dann über einen SSH-Tunnel zu meinem Unraid weiterleiten. Grund dafür ist, dass ich keine IP V6 von meinem ISP bekomme und das ich die IP-Adresse von mir zu Hause verstecken möchte.

 

Aktuell habe ich den V-Server und Unraid über Tailscale miteinander verbunden; ich habe damit aber seit einiger Zeit massive Verbindungsabbrüche und langsame Übertragungsgeschwindigkeiten. Deswegen möchte ich das Ganze über SSH-Tunnel mit TCP organisieren.

Ich hätte gerne Cloudflare Tunnel genutzt, aber da ich Daten über 100 MB damit übertrage, lässt das Cloudflare nicht zu.

 

Jetzt bin ich mir nicht ganz sicher, wie ich diese Verbindung realisieren soll. Ich habe keine Anleitung gefunden, die mir bei meinem speziellen Fall geholfen hat.

Ich hoffe, ihr könnt mir da weiter helfen.

 

V-Server:

Debian

Webserver: Caddy

 

Unraid:

Webserver: Nginx Proxy Manager

Link to comment
  • 2 weeks later...
  • Solution
On 6/19/2024 at 6:36 PM, alturismo said:

Die Anleitung ist schon etwas veraltet gewesen, aber im Groben hat sie funktioniert.

Bis auf, dass ich autossh nicht installieren konnte und das Ganze über ein Script automatisiert habe.

Eins, was beim Start von Unraid anläuft und eins was jede Stunde läuft.

Link to comment
25 minutes ago, Cramp4600 said:

Ganze über ein Script automatisiert habe.

#!/bin/bash

# SSH Tunnel Start Befehl
SSH_COMMAND="ssh -N -R PORT:LOCALE-IP:PORT root@RELAY IP"

# Funktion zum Überprüfen, ob der Tunnel bereits existiert
function check_tunnel {
    # Prüfen, ob der spezifische SSH-Tunnel-Prozess läuft
    ps aux | grep "$SSH_COMMAND" | grep -v grep > /dev/null
    return $?
}

# Funktion zum Hinzufügen eines Zeitstempels zu den Rückmeldungen
function log {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"
}

# Hauptlogik
log "Script gestartet"

# Überprüfen, ob der Tunnel existiert
check_tunnel
if [ $? -ne 0 ]; then
    log "Tunnel existiert nicht, starte Tunnel..."
    $SSH_COMMAND &
    log "Tunnel wurde gestartet"
else
    log "Tunnel existiert bereits"
fi

log "Script beendet"


 

  • Like 1
Link to comment
  • 2 weeks later...
Posted (edited)
On 6/29/2024 at 12:06 PM, Cramp4600 said:
#!/bin/bash

# SSH Tunnel Start Befehl
SSH_COMMAND="ssh -N -R PORT:LOCALE-IP:PORT root@RELAY IP"

# Funktion zum Überprüfen, ob der Tunnel bereits existiert
function check_tunnel {
    # Prüfen, ob der spezifische SSH-Tunnel-Prozess läuft
    ps aux | grep "$SSH_COMMAND" | grep -v grep > /dev/null
    return $?
}

# Funktion zum Hinzufügen eines Zeitstempels zu den Rückmeldungen
function log {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"
}

# Hauptlogik
log "Script gestartet"

# Überprüfen, ob der Tunnel existiert
check_tunnel
if [ $? -ne 0 ]; then
    log "Tunnel existiert nicht, starte Tunnel..."
    $SSH_COMMAND &
    log "Tunnel wurde gestartet"
else
    log "Tunnel existiert bereits"
fi

log "Script beendet"


 

 

Ich habe das Script nochmal überarbeitet, dass er den Tunnel jedes Mal beendet, weil ich teilweise Probleme hatte beim täglichen IP Wechsel durch den ISP.

 

#!/bin/bash

# SSH Tunnel Start Befehl
SSH_COMMAND="ssh -N -R PORT:LOCALE-IP:PORT root@RELAY IP"

# Funktion zum Überprüfen, ob der Tunnel bereits existiert
function check_tunnel {
    ps aux | grep "$SSH_COMMAND" | grep -v grep > /dev/null
    return $?
}

# Funktion zum Beenden des bestehenden Tunnels
function kill_tunnel {
    pkill -f "$SSH_COMMAND"
}

# Funktion zum Hinzufügen eines Zeitstempels zu den Rückmeldungen
function log {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"
}

# Hauptlogik
log "Script gestartet"

# Überprüfen, ob der Tunnel existiert
check_tunnel
if [ $? -eq 0 ]; then
    log "Tunnel existiert, beende Tunnel..."
    kill_tunnel
    log "Tunnel wurde beendet"
else
    log "Tunnel existiert nicht"
fi

log "Starte Tunnel neu..."
$SSH_COMMAND &
log "Tunnel wurde neu gestartet"

log "Script beendet"

 

Edited by Cramp4600
  • Like 2
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...