Wieso extra link-local Adresse in pg_hba.conf unter Windows?

Moin,
ich habe PG15 unter Windows Server 2019 und unter Debian am laufen. Beide Instanzen verfügen über die “gleiche” Konfiguration ggf. mit OS spezifischen Unterschieden.
Beide Instanzen hosten die gleiche Datenbank mit exakt gleichem Inhalt.

Heißt also ich kann von meinem Windows Client auf beide zugreifen und es funktioniert so weit alles.
Jetzt bin ich aber auf ein Problem gestoßen für den ich nicht so recht eine Erklärung habe.
Wenn ich ein bestimmten Punkt in der Anwendung die Daten in der DB hält auswähle, bekomme ich folgende Fehlermeldung:

2023-11-08 17:41:46.022 CET [1656] FATAL:  kein pg_hba.conf-Eintrag für Host »fe80::f766:1574:6e69:c9b7%11«, Benutzer »idimager_main«, Datenbank »photosupreme_thumbs«, keine Verschlüsselung
2023-11-08 17:41:46.023 CET [6940] FEHLER:  could not establish connection
2023-11-08 17:41:46.023 CET [6940] DETAIL:  Verbindung zum Server auf »xenpsql002.rjap.de« (fe80::f766:1574:6e69:c9b7), Port 5432 fehlgeschlagen: FATAL:  kein pg_hba.conf-Eintrag für Host »fe80::f766:1574:6e69:c9b7%11«, Benutzer »idimager_main«, Datenbank »photosupreme_thumbs«, keine Verschlüsselung

Die pg_hba.conf hat folgenden Inhalt:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

# IPv4 network connections:
host    all             all             192.168.14.0/24         password
host    all             all             192.168.4.0/24          password
host    all             all             192.168.100.0/24        password

# IPv6 network connections:
host    all             all             IPv6 Netz1::/64  password
host    all             all             IPv& Netz2::/64  password

Wieso muss ich unter Windows die lokal-link Adresse eintragen?

Wir kennen die tatsächlichen pg_hba.conf-Einträge nicht, und wir wissen nicht, welcher Rechner fe80::f766:1574:6e69:c9b7%11 ist. Was sollen wir also antworten?

Die Antwort verstehe ich nicht. die pg_hba steht doch da. Nur dass ich die 2 IPv6 Netze rausgenommen habe
OK die Adresse fe80::f766:1574:6e69:c9b7%11 ist die Lokal-Link Adresse auf dem Server.

Genau das ist ja das Problem, daß die IPv6-Einträge in der pg_hba.conf herausgenommen wurden. Um die geht es ja.

Nein das ist mit Sicherheit nichts “das” Problem.
Die rausgenommene Netze sind öffentliche IPV6 Netze, sonst hätte ich die drin gelassen. Und die haben mit lokal-link Bereich 0.0 was zu tun und eg geht eben um lokal-link (einige sprechen von link-lokal) Bereich nichts anderes.

Trotz der Unwilligkeit, die relevanten Informationen zur Verfügung zu stellen, rate ich eine Antwort. Wenn die verschwiegenen IPv6-Netmasks nichts mit der monierten Adresse zu tun haben, dann ist es auch kein Wunder, daß die Verbindung abgelehnt wird. Es fehlt wohl ein Eintrag wie

host   all   all   FE80::/10   scram-sha-256

Übrigens sollte man niemals, unter keinen Umständen, die Authentisierungsmethode password verwenden. Die ist im höchsten Maße unsicher, weil dabei das Paßwort im Klartext über die Leitung geht.

Na ja - das wirst Du und auch andere akzeptieren müssen, dass ich nicht unbedingt scharf darauf bin, dass “jeder” der über das Forum “fliegt” gleich meine Firewall prüft.

Na ja das bringt mich zu der Frage - wieso fehlt das nicht unter Linux? Die Linux Maschine hat zu 100% die gleiche EInträge in der pg_hba.conf. OK ein Unterschied gibt es da - überall wo hier “scram-sha-256” steht, steht unter Linux “md5”

OK, das wusste ich nicht. Vielen Dank für die Info. Ich werde mal gucken ob und wie ich das umstellen kann.

DIe Frage klang halt ein bißchen wie „ich frage ab mit WHERE col LIKE '<muster>', und Bohne wird nicht gefunden”.

Einfach – du verwendest auf Linux eine andere Client-IP-Adresse. Wenn ich wieder raten muß: vielleicht 127.0.0.1, denn die steht schon von vornhinein drinnen.

Nicht ganz.
Also der Klient von dem ich zugreife ändert sich nicht, die Anwendung mit der ich es mache auch nicht. (Und der steht in einem der IPV6 Netze).
Und ich greife eben übers Netz drauf. Also nichts mit localhost o.ä

Spiel nicht Rätselraten mit mir. Schalte einfach log_connections auf dem PostgreSQL auf Linux ein und sorge dafür, daß log_line_prefix das Muster %h enthält. Dann siehst du, von welcher IP-Adresse der Client kommt. Wenn die nicht explizit in pg_hba.conf erlaubt wäre, würde die Verbindung nicht zustandekommen.

Nun, ich habe gemacht was Du vorgeschlagen hast und stelle fest, dass der PG Server sind unter Windows anders als unter Linux verhält.

Ich habe eine Anwendung ( Photo Supreme. Ist eine Bildverwaltung). Diese Anwendung baut auf dem PG Server 2 Datenbanken DB1, DB2
Als User vom Klient baut man immer Verbindung zu Server, DB1 In dieser Datenbank liegen alle Daten. Die 2-te Datenbank beinhaltet die Thumbnails und Vorschaubilder.

Es funktioniert wie gesagt alles mit der pg_hba.conf wie im ersten Beitrag angegeben.
Gehe ich hin und rufe in der Anwendung die Funktion “erstelle alle Vorschaubilder die nicht da sind”, kommt ein Unterschied
Unter Windows wird wie durch eine Zauberhand eben die “link lokal” Adresse ausgegeben die, die Verbindung aufbaut. Also DB1 “link local” → DB2
Unter Linux wird in Log immer die Klient IP protokolliert. Die Anwendung weiß nicht ob die Datenbanken unter Linux oder Windows laufen. An sich ist der Weg “schöner” unter Windows. Wieso es unter Linux anders läuft… muss ich ggf noch untersuchen ob die Windows und Linux gleiche Ergebnisse bei Namensauflösung bringen.

Den Vorschlag bzgl. “password” in etwas anderes ändern, musste ich zumindest vorerst wieder zurück auf password stellen. Die Online Banking Anwendung die ich nutze - VR-Networld kommt mit nichts anderen klar. Hier muss ich die Entwickler fragen ob sie daran denken, die libpq.dll die dafür verantwortlich ist auf eine “akzeptablere” Version upzudaten.

Es ist also eine Frage der Netzwerkkonfiguration. Da bin ich leider inkompetent.

Die Authentisierungsmethode md5 wurde mit Version 7.2 im Jahre 2002 eingeführt. Wenn VR-Networld auf älteren Versionen besteht, würde ich diese Software nirgends außer im Abfallkübel installieren.

1 „Gefällt mir“

Ja hast recht. Die Software ist ganz schön doof gestrickt und Informationen zum Betrieb mit PG gibt es nicht wirklich.
Man kann aber tatsächlich auch sie mit scram-sha-256 betreiben. Der Knackpunkt ist, man braucht 3 *.dll aus dem PG Klient Paket in 23Bit, die im Installationsverzeichnis von VR-Networld ersetzt werden müssen, weil org. die Software die Sachen für PG 7.x ausliefert.

Schlimm, aber noch mal Danke für den Hinweis mit der Auth. Methode.

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.