Debuggen von PostgreSQL-Remoteverbindungen

Debuggen von PostgreSQL-Remoteverbindungen

Ich habe Probleme, von einer Onlinequelle aus eine Verbindung zu meiner PostgreSQL-Datenbank herzustellen.

PostgreSQL scheint einwandfrei eingerichtet zu sein, es läuft auf dem Standardport 5432 und die Datei postgresql.conf enthält die folgende Zeile

listen_addresses = '*'

Und die pg_hba.conf hat folgendes

host    dbname    usname    all    md5

Ich kann von einem anderen Computer aus mit den folgenden Anmeldeinformationen in pgadmin eine Verbindung zur PostgreSQL-Datenbank herstellen

Name              local
Host              192.xx.xx.xx
Port              5432
Maintenance DB    dbname
Username          usname
Password          psword

Damit kann ich problemlos eine Verbindung herstellen, es scheint gut zu funktionieren.

Anschließend habe ich den Port 192.xx.xx.xx:5432 auf dem ADSL-Router weitergeleitet und ihn anhand der öffentlichen IP-Adresse 197.xx.xx.xx (für das Internet sichtbare IP) überprüft. http://www.canyouseeme.org/ Wo ich sehen kann, wurde der Port ordnungsgemäß weitergeleitet.

Ich habe SELinux deaktiviert und auch die Firewall vorübergehend deaktiviert.

Wenn ich jedoch versuche, eine Verbindung herzustellen,

Name              online
Host              197.xx.xx.xx
Port              5432
Maintenance DB    dbname
Username          usname
Password          psword

Ich erhalte die Fehlermeldung „Server hört nicht zu“

could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "197.xx.xx.xx" and accepting TCP/IP connections on port 5432?

Warum ist das so? Muss ich einen zusätzlichen Schritt ausführen, damit Verbindungen über die Portweiterleitung akzeptiert werden?

Antwort1

allhostist im CIDR-Feld einer Zeile in ungültig pg_hba.conf.

Aus den Kommentaren in der Standarddatei pg_hba.confselbst:

# Host-Datenbankbenutzer-CIDR-ADRESSE-Methode [OPTION]

Und

CIDR-ADDRESS gibt die Gruppe der Hosts an, mit denen der Datensatz übereinstimmt. Es besteht aus einer IP-Adresse und einer CIDR-Maske, die eine Ganzzahl (zwischen 0 und 32 (IPv4) oder 128 (IPv6) einschließlich) ist, die die Anzahl der signifikanten Bits in der Maske angibt. Alternativ können Sie eine IP-Adresse und eine Netzmaske in separate Spalten schreiben, um die Gruppe der Hosts anzugeben.

Versuchen Sie stattdessen Folgendes:

host    dbname    usname      197.xx.xx.xx/32  md5

Dadurch werden Verbindungen zu dbname von usname nur vom Remote-Host 197.xx.xx.xx zugelassen.

Wenn Sie das gesamte Subnetz 197.xx.xx /24 zulassen möchten, verwenden Sie:

host    dbname    usname      197.xx.xx.0/24  md5

verwandte Informationen