Depuração de conexão remota PostgreSQL

Depuração de conexão remota PostgreSQL

Estou tendo problemas para me conectar ao meu banco de dados PostgreSQL de uma fonte online.

O PostgreSQL parece estar configurado corretamente, está sendo executado na porta padrão 5432 e o postgresql.conf tem a seguinte linha

listen_addresses = '*'

E o pg_hba.conf tem o seguinte

host    dbname    usname    all    md5

Posso me conectar ao banco de dados PostgreSQL de uma máquina diferente usando as seguintes credenciais no pgadmin

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

Usando estes, posso conectar perfeitamente e parece funcionar bem.

Então encaminhei a porta 192.xx.xx.xx:5432 no roteador ADSL e verifiquei usando o endereço IP público 197.xx.xx.xx (visível para o IP da internet) http://www.canyouseeme.org/ Onde posso ver que a porta foi encaminhada ok.

Desativei o SELinux e também desativei o firewall temporariamente.

No entanto, quando tento me conectar usando

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

Recebo que o servidor não escuta mensagem de erro

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 que é isso? Preciso adicionar uma etapa extra para aceitar conexões por meio de encaminhamento de porta?

Responder1

allnão é válido no campo CIDR de uma hostlinha no arquivo pg_hba.conf.

Dos comentários no pg_hba.confpróprio arquivo padrão:

# host MÉTODO DE ENDEREÇO ​​CIDR DO USUÁRIO DO BANCO DE DADOS [OPÇÃO]

e

CIDR-ADDRESS especifica o conjunto de hosts aos quais o registro corresponde. É composto por um endereço IP e uma máscara CIDR que é um número inteiro (entre 0 e 32 (IPv4) ou 128 (IPv6) inclusive) que especifica o número de bits significativos na máscara. Alternativamente, você pode escrever um endereço IP e uma máscara de rede em colunas separadas para especificar o conjunto de hosts.

Em vez disso, tente isto:

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

isso permitirá conexões com dbname de usname apenas do host remoto 197.xx.xx.xx

Se você quiser permitir toda a sub-rede 197.xx.xx /24, use:

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

informação relacionada