Depuração de Conexão Remota do PostgreSQL

0

Estou tendo problemas para se conectar ao meu banco de dados PostgreSQL de uma fonte on-line.

O PostgreSQL parece estar configurado bem, ele está rodando na sua 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

Eu posso conectar-me ao banco de dados PostgreSQL de uma máquina diferente usando as seguintes credenciais em pgadmin

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

Usando estes eu posso conectar perfeitamente parece funcionar bem.

Em seguida, enviei a porta 192.xx.xx.xx: 5432 no roteador ADSL e a verifiquei usando o endereço IP público 197.xx.xx.xx (visível para o IP da Internet) link Onde eu posso ver o porto foi encaminhado ok.

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

No entanto, quando tento me conectar usando

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

Eu recebo 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 do encaminhamento de porta?

    
por Trent 03.11.2015 / 15:53

1 resposta

0

all não é válido no campo CIDR de uma linha host em pg_hba.conf .

A partir dos comentários no arquivo pg_hba.conf padrão:

# host DATABASE USER CIDR-ADDRESS METHOD [OPTION]

e

CIDR-ADDRESS specifies the set of hosts the record matches. It is made up of an IP address and a CIDR mask that is an integer (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that specifies the number of significant bits in the mask. Alternatively, you can write an IP address and netmask in separate columns to specify the set of hosts.

Tente isso:

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

que permitirá conexões para dbname do 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
    
por 04.11.2015 / 02:07