Ao configurar o postgreSQL com um servidor web (todos na mesma máquina), é fundamental ter 0.0.0.0:5432
aberto ou é 127.0.0.1:5432
suficiente? Por que ou por que não?
No geral, estou tentando entender o papel que as portas desempenham no encaminhamento de tráfego para o serviço pg.
O pano de fundo é que estou tentando configurar o pgbouncer (um pooler de conexões) para trabalhar com o postgresql, portanto, preciso garantir que as portas relevantes estejam abertas. No entanto, antes de fazer isso, preciso entender como a rede funciona nesse nível.
Isso é TCP/IP básico, em vez de específico do PostgreSQL.
Se as únicas coisas que falarão diretamente com o servidor de banco de dados estiverem no mesmo host que o servidor de banco de dados, você precisará apenas de
listen_addresses = 127.0.0.1
, ou seja, ouvir apenas conexões locais. Por exemplo, se você tiver conexões de proxy pgbouncer e aceitar conexões em uma porta diferente. Ou se toda a interação do usuário com o banco de dados acontecer por meio de um servidor de aplicativos e webapp.O endereço
127.0.0.1
é reservado por convenção para o host local. É para falar consigo mesmo.Não há nenhuma razão prática para permitir (ou bloquear) conexões para 127.0.0.1 de hosts externos, porque nenhum roteador enviará pacotes para seu host com esse endereço de destino e sua máquina nunca responderia a solicitações ARP para esse endereço. A maioria dos sistemas operacionais ignoraria pacotes destinados a 127.0.0.1 vindos de interfaces de rede externas como obviamente falsos.
Então você quer abrir conexões de outros hosts. 0.0.0.0/0 na porta 5432 é "deixe qualquer coisa se conectar à porta 5432". Essa é uma opção se você não quiser ser mais restritivo sobre quem pode falar com o servidor.
Observe que você pode ter que ajustar as regras de firewall e
listen_addresses
a diretiva do PostgreSQL . Também possivelmentepg_hba.conf
.listen_addresses
controla de quais interfaces de rede locais o PostgreSQL aceitará tentativas de conexão.pg_hba.conf
controla de quais hosts remotos o PostgreSQL aceitará hosts de conexão, supondo que esteja escutando.As regras de firewall interromperão essas tentativas de conexão, mesmo que cheguem ao PostgreSQL, filtrando com base no endereço de origem, porta de destino e outros critérios.