Eu tenho uma instalação Debian
~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/
onde instalei o PostgreSQL
PostgreSQL 11.3 (Debian 11.3-1.pgdg90+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit
PostgreSQL está rodando, mas posso usar de outra máquina: abri a porta 5432 via firewalld
# firewall-cmd --zone=public --list-ports
8443/tcp 5432/tcp
mas não funciona.
Isso localmente
~$ telnet localhost 5432
Trying ::1...
Connected to localhost.
Escape character is '^]'.
isso é da minha máquina (em outra vlan)
:> telnet 192.168.13.183 5432
Trying 192.168.13.183...
telnet: Unable to connect to remote host: Connection refused
isso é de outra máquina (na mesma vlan que o debian)
telnet 192.168.13.183 5432
Trying 192.168.13.183...
telnet: connect to address 192.168.13.183: Connection refused
Então eu desligo o firewalld (apenas para teste), mas recebo os mesmos resultados. Depois disso tentei fazer o mesmo mas com o iptables:
iptables -A INPUT -p tcp --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Com os mesmos resultados O que estou perdendo aqui?
apenas verifique isso (obrigado @thomas ):
netstat -tulpan | grep postgres
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 6386/postgres
tcp6 0 0 ::1:5432 :::* LISTEN 6386/postgres
udp6 0 0 ::1:44652 ::1:44652 ESTABLISHED 6386/postgres
lsof -n -i:5432
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 6386 postgres 3u IPv6 72390 0t0 TCP [::1]:postgresql (LISTEN)
postgres 6386 postgres 5u IPv4 72391 0t0 TCP 127.0.0.1:postgresql (LISTEN
postgresql
por padrão, apenas escuta no localhost ( 127.0.0.1 e ::1 ). Para alterar esse comportamento, você deve configurar manualmente outros endereços de escuta empostgresql.conf
, normalmente localizados em$PGDATA
.Para fazer o postgres, por exemplo, escutar também no endereço local 10.0.10.156, você teria que especificar o
listen_addresses
seguinte.Para fazer o postgres escutar em todas as interfaces, você também pode usar um curinga.
Após essa alteração, o postgres precisa ser reiniciado. Eu também recomendaria verificar se o resultado atende às suas expectativas.
Saída de
lsof
com um postgres escutando em localhost e 10.0.10.156.Saída de
lsof
com um postgres escutando em todas as interfaces.