Ipv4 auf ipv6 Tunneln

  • Hallo Leute ich habe ein kleines Problem, ich habe einen
    Homeserver, dieser Homeserver ist nur ipv6 fähig.



    Ich möchte aber, dass ich auch über einen Client, welcher
    nur ipv4 fähig ist drauf zugreifen kann.



    Jetzt habe ich bei netcup eine Domain und einen vServer,
    welcher ipv4 und ipv6 fähig ist.



    Jetzt meine frage: Was kann ich machen um diesen vServer als
    Vermittler zwischen ipv6 und ipv4 Netzwerk arbeiten zu lassen.



    Und zwar hatte ich mir überlegt, dass ich gerne bestimmte
    subdomains auf dem vServer behalten möchte und alles andere soll auf meinen
    Home-Server laufen.



    Jetzt habe ich schon ein bisschen im Interne gesucht und bin
    zum ersten auf cname-dns-records gestoßen, aber dazu muss der client ipv6
    können, wenn es auf ipv6 laufen soll, also das bringt mir nichts.



    Und ich habe mich ein bisschen mit reverse Proxies
    beschäftigt, aber läuft ein reverse proxy nicht ausschließlich auf dem http Protokoll?
    Ich hätte gerne etwas was ich auch für RDP, FTP, TeamSpeak, etc. nutzen kann.

  • Das müsste mit einem @reboot-Cronjob und socat sehr einfach gehen. Einfach mal im Internet nach "socat ipv4 ipv6" suchen ;)



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Socat ist das richtige Stichwort. Sowas in dieser Art hier verwende ich um das Selbe zu erreichen:
    socat TCP-LISTEN:8088,fork,bind=<ipv4-addr-des-servers> TCP:<ipv6-addr-des-ziels>:8088


    Ich habe auch mal in ein paar freien Minuten ein kleines Webinterface (PHP) gebastelt, mit dem sich komfortabel solche Weiterleitungen einrichten lassen und verwaltet werden können, es findet sich hier:
    [PHP] <!DOCTYPE html> <html> <head><title>Router</title></head> <body> <?php co - Pastebin.com


    Das Script einfach in ein Verzeichnis auf dem Web-root werfen und chmod +rwx setzen. Die Einstellungen werden in eine Datei rules.txt im selben Verzeichnis gespeichert.
    Außerdem wird eine Datei pids.txt geschrieben, in der die Prozess-IDs der socat Prozesse stehen, um diese zu verwalten.


    Achtung: Die Tunnel existieren damit natürlich nur bis zum nächsten Server-reboot. Durch erneuten Klick auf den Submit-Button im Interface werden sie dann wieder gestartet.

  • Vielen Dank euch beiden!


    jetzt gibt es noch 2 Dinge..
    1. Ich musste feststellen, dass die ipv6 keine Feste ip ist.. dies habe ich aber mit einem openVPN Server gelöst(hoffe ich, ich muss noch testen ob der Client auch als service läuft)
    2. gibt es noch die möglichkeit bei socat zu sagen, dass ich bestimmte domains auf bestimmte addressen leiten kann?
    z.b. intern.domain.de:80 > localhost:80
    *.domain.de:80 > externeIp:80


  • Nein, die Domain kann nur der Webserver erkennen. Wenn du Port 80 sowohl auf dem Server als auch zu Hause nutzen willst, empfiehlt sich ein reverse proxy.


    Aber wie machen das jetzt größere Anbieter von email-Servern die haben doch auch z.b. smtp.anbieter.de, pop3.anbieter.de oder/und imap.anbieter.de

  • Die machen das über DNS Einträge.


    Wenn du auf die DNS Verwaltung deiner Domain Zugriff hast, kannst du dies dort konfigurieren.
    Nur kannst du so keine Weiterleitungen von IPv6 auf IPv4 einrichten.

  • Die machen das über DNS Einträge.


    Wenn du auf die DNS Verwaltung deiner Domain Zugriff hast, kannst du dies dort konfigurieren.
    Nur kannst du so keine Weiterleitungen von IPv6 auf IPv4 einrichten.

    Ok, ich verstehe, Danke.
    Nagut, aber stimmt für http reicht ein reverse proxy, danke :)

  • Ich habe irgendwie ein kleines Problem mit dem script. Das script läuft auf einem nginx-Server, exec liefert mir eine pid zurück, aber wenn ich mit ps pid oder ps aux | grep socat schaue läuft kein Prozess...

  • Hallo,
    Leider kenne ich mit mit Nginx nicht wirklich aus. Bei mir läuft das Script unter apache und funktioniert.
    Steht ggf. in deinem Webserver-Logfile eine Fehlerausgabe von PHP, die Aufklärung schaffen könnte? Sind die permissions korrekt gesetzt, so, dass das Script die entsprechenden Dateien auch schreiben kann? Gibt es eine rules.txt und pids.txt, die entsprechende Infos enthalten?


    Möglicherweise ist aber Nginx per default auch einfach restriktiver als apache. Kann ich leider nicht sagen. Da hilft dann vermutlich google weiter.

  • Hallo, ich denke das ist das Problem, ich habe die ausgabe mal nicht nach /dev/null sondern in eine Debug-Datei umgeleitet und darin steht:
    2014/06/11 10:24:44 socat[21526] E bind(3, {AF=2 ***.***.***.***:81}, 16): Permission denied


    muss ich mal schauen ob und wie ich dem Benutzer www-data rechte geben kann.

  • Hallo, ich denke das ist das Problem, ich habe die ausgabe mal nicht nach /dev/null sondern in eine Debug-Datei umgeleitet und darin steht:
    2014/06/11 10:24:44 socat[21526] E bind(3, {AF=2 ***.***.***.***:81}, 16): Permission denied


    muss ich mal schauen ob und wie ich dem Benutzer www-data rechte geben kann.

    Ah, das wird wohl daran liegen, dass du versuchst einen Port < 1024 zu forwarden. Unter Unix-Systemen ist dies generell nur root erlaubt. Andere nutzer dürfen nur Dienste, die auf Ports >1024 lauschen, verwenden.
    Sowas lässt sich wohl auf verschiedene Arten lösen. Vermutlich ist es am einfachsten/sichersten, wenn man socat einfach das binden sämtlicher Ports erlaubt:
    networking - Linux: allowing an user to listen to a port below 1024 - Unix & Linux Stack Exchange
    setcap 'cap_net_bind_service=+ep' /usr/bin/socat