ubuntuusers.de

PHP (Wordpress) Anwendung für sftp zwingen IPv4 zu verwenden

Status: Gelöst | Ubuntu-Version: Ubuntu 24.04 (Noble Numbat)
Antworten |

atoenne

Anmeldungsdatum:
25. Oktober 2024

Beiträge: Zähle...

Hallo zusammen, erstmal zu mir: 25 Jahre Unix Erfahrung, aber Null Kenntnisse IPv6 😎

Ubuntu V-Server bei Strato mit DynDns Domain die über FritzBox auf Synology NAS zeigt

Ziel: Aus einem Wordpress Plugin heraus über sftp auf die NAS zugreifen

Problem: Da IPv6 Routing auf das NAS (noch) nicht funktioniert (anderes Thema), muss sftp über IPv4 laufen. DynDNS liefert für die FritzBox sowohl IPv4 und IPv6 Adressen. Leider verwendet Apache2/Workpress in den Pluginscripten bei sftp automatisch die IPv6 Adresse und das läuft in einen Timeout.

Was funktioniert? ssh/sftp aus der Shell funktioniert sowohl mit -4 als auch mit AdressFamily inet in .ssh/config

Was habe ich probiert? Dem wordpress User ebenfalls eine .ssh/config zu verpassen. Nach su wordpress funktioniert sftp auch ohne -4 Argument in der Shell. Leider kratzt sich Apache/Wordpress (auch nach Restart von Apache) nicht um diese Einstellung.

Die Frage lautet daher: wie erreiche ich, dass die PHP Prozesse von Wordpress für ssh/sftp nur IPv4 verwenden? Ich dachte eigentlich, dass die Plugins unter dem wordpress User laufen. Aber vermutlich nicht .ssh/config anziehen? Bin da etwas lost.

Was ich vermeiden möchte ist, IPv6 komplett abzuklemmen.

Ideen?

Andreas

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

Schau in den Quellcode - wenn da z.B. curl verwendet wird, kann man IPv4 erzwingen: https://stackoverflow.com/questions/49143623/force-php-script-connections-use-ipv4-instead-of-ipv6

atoenne

(Themenstarter)

Anmeldungsdatum:
25. Oktober 2024

Beiträge: 7

Guter Versuch ☺

Es geht um WPvivid Backup. Abgesehen davon, ein fremdes Plugin zu modifizieren.... Es verwendet ftp_connect und darin steckt schon die Hostauflösung drin.

Das Problem ist halt, der Hostname löst auf eine IPv6 Adresse auf und Timeout.

Also muss ich wohl doch tiefer runter in den Netzwerk Maschinenraum. Denn das Problem besteht überall wo der Hostname meiner FritzBox aufgelöst wird. Nur ist es beim ssh/sftp Client über eine Konfiguration zu umgehen.

tscha. 😐

atoenne

(Themenstarter)

Anmeldungsdatum:
25. Oktober 2024

Beiträge: 7

So weisse Flagge in Bettuchgröße 😳 was das Ubuntu betrifft. Kein Meter weiter.

Habe mir das IPv6 Portfreigabeproblem der Fritz angeschaut. Mal Spasseshalber ein Macbook als SFTP Port 22 Ziel im Fritz eingetragen. Korrekte IPv4 und IPv6 Adressen werden in der Fritz Freigabe angezeigt.

Extern vom Server: ping6 auf die Fritz IP über DynDns tut

sftp -4 auf die Fritz gibt denied. Das Macbook mag nicht. ☺

sftp -6 auf die Fritz läuft in Timeout.

Fazit: es liegt in der Fritz, wenn zwei sehr unterschiedliche Geräte im Heimnetz nicht über die Portweiterleitung angesprochen werden. Fritz Anleitungen penibelst studiert. Eigentlich sollte alles passen, nur dass es nicht tut. Ob der IPv6 Zahlenwust fehlerhaft ist, kann ich nicht beurteilen.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

etwas grob aber https://weblog.lkiesow.de/20220311-make-linux-prefer-ipv4.html

kannst du auch nur für "deinen" IP Bereich machen

sonst über VPN / Wireguard [wenn man das irgendwie aufs NAS bekommt]

atoenne

(Themenstarter)

Anmeldungsdatum:
25. Oktober 2024

Beiträge: 7

Ja schubiduuu 😎 ☺ das ist eine keine schlechte Lösung. Macht nix kaputt, denn Sites mit ip4 oder ip6 only werden weiterhin erreicht.

Vielen Dank ♥

atoenne

(Themenstarter)

Anmeldungsdatum:
25. Oktober 2024

Beiträge: 7

So das hat funktioniert.

Wie?

in /etc/gai.conf die Precedence-Zeilen auskommentieren und für IP4 (ffff) die höchste Prio geben:

precedence ::1/128 50

precedence ::/0 40

precedence 2002::/16 30

precedence ::/96 20

precedence ::ffff:0:0/96 90

Dann Server rebooten. Nun wird bei DNS Auflösung über libc/getaddrinfo IP4 als erstes probiert.

Wichtig: ALLE Precedence-Zeilen auskommentieren, da der Default bei auch nur einer Zeile wegfällt und damit IP6 garnicht mehr gesehen wird.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Ja. Du kannst wie gesagt noch eins weiter gehen. Also wenn du weisst, aus welchem Subnetz/Pool dein DynDNS kommen würde (die Subnetze deines ISPs). Dann könntest du nur diesem IPv4 Subnetz die höhere Priorität geben. Dann würden alle andern Server weiterhin "normal" behandelt.

Man kann dort eben keine Hostnamen einbringen. Bzw. falls es so eine Möglichkeit gibt ist sie mir nicht bekannt. Unter /etc/hosts kann man statische Einträge für Hostnamen machen aber das passt dann wieder nicht, wenn es ein DynDNS Name ist der jeden Tag eine andere IP braucht. Es sei denn du machst dir ein eigenes Script das immer /etc/hosts aktualisiert für jede neue IP...

Vielleicht noch ein lokaler DNS Server...

Aber da ist dann eins auch komplizierter als das andere.

micneu

Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 811

Wohnort: Hamburg

Warum wurde der Ansatz VPN nicht weiterverfolgt? So würde ich es machen, deinen Web Server als VPN Client für dein Homenetzwwerk Und dann kannst du als ziel deine Lokale IPv4 nehmen, alles ganz einfach

atoenne

(Themenstarter)

Anmeldungsdatum:
25. Oktober 2024

Beiträge: 7

Werde dazu sicherlich noch mal einen Anlauf machen. Ein erster schneller Versuch mit Wireguard ist darin geendet, dass der Vserver und sein Routing hoffnungslos verheddert waren. Muss mir mehr Zeit nehmen es richtig zu machen 😁 So habe ich erstmal eine Lösung mit der ich weiterkomme.

Antworten |