Depuración de conexión remota de PostgreSQL

Depuración de conexión remota de PostgreSQL

Tengo problemas para conectarme a mi base de datos PostgreSQL desde una fuente en línea.

PostgreSQL parece estar configurado bien, se ejecuta en su puerto predeterminado 5432 y postgresql.conf tiene la siguiente línea

listen_addresses = '*'

Y el pg_hba.conf tiene lo siguiente

host    dbname    usname    all    md5

Puedo conectarme a la base de datos PostgreSQL desde una máquina diferente usando las siguientes credenciales en pgadmin

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

Usando estos puedo conectarme perfectamente, parece funcionar bien.

Luego reenvié el puerto 192.xx.xx.xx:5432 en el enrutador ADSL y lo verifiqué usando la dirección IP pública 197.xx.xx.xx (visible para la IP de Internet). http://www.canyouseeme.org/ Donde puedo ver, el puerto se reenvió correctamente.

Deshabilité SELinux y también deshabilité el firewall temporalmente.

Sin embargo, cuando intento conectarme usando

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

Recibo el mensaje de error "El servidor no escucha".

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?

¿Por qué es esto? ¿Necesito agregar un paso adicional para que acepte conexiones a través del reenvío de puertos?

Respuesta1

allno es válido en el campo CIDR de una hostlínea en pg_hba.conf.

De los comentarios en el pg_hba.confarchivo predeterminado:

# host MÉTODO DE DIRECCIÓN CIDR DEL USUARIO DE LA BASE DE DATOS [OPCIÓN]

y

CIDR-ADDRESS especifica el conjunto de hosts con los que coincide el registro. Se compone de una dirección IP y una máscara CIDR que es un número entero (entre 0 y 32 (IPv4) o 128 (IPv6) inclusive) que especifica el número de bits significativos de la máscara. Alternativamente, puede escribir una dirección IP y una máscara de red en columnas separadas para especificar el conjunto de hosts.

Pruebe esto en su lugar:

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

eso permitirá conexiones a dbname desde usname solo desde el host remoto 197.xx.xx.xx

Si desea permitir toda la subred 197.xx.xx /24, utilice:

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

información relacionada