데비안에서 포트를 열 수 없습니다

데비안에서 포트를 열 수 없습니다

데비안이 설치되어 있습니다

~$ 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/

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이 실행 중이지만 다른 컴퓨터에서 사용할 수 있습니다. 방화벽을 통해 5432 por을 열었습니다.

# firewall-cmd --zone=public --list-ports
8443/tcp 5432/tcp

하지만 작동하지 않습니다.

이 지역

~$ telnet localhost 5432
Trying ::1...
Connected to localhost.
Escape character is '^]'.

이것은 내 컴퓨터(다른 VLAN에 있음)에서 가져온 것입니다.

:> telnet 192.168.13.183 5432
Trying 192.168.13.183...
telnet: Unable to connect to remote host: Connection refused

이것은 다른 머신에서 온 것입니다(데비안과 동일한 VLAN에 있음)

telnet 192.168.13.183 5432
Trying 192.168.13.183...
telnet: connect to address 192.168.13.183: Connection refused

그래서 (테스트용으로) 방화벽을 꺼두었지만 결과는 같았습니다. 그 후 나는 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

동일한 결과로 여기서 무엇을 놓치고 있습니까?

한번 확인해 보세요(감사합니다.@도마):

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

답변1

postgresql기본적으로 localhost(127.0.0.1그리고::1). 이 동작을 변경하려면 postgresql.conf일반적으로 에 있는 다른 수신 주소를 수동으로 구성해야 합니다 $PGDATA.

예를 들어, postgres가 로컬 주소 10.0.10.156에서도 수신하도록 하려면 listen_addresses다음을 지정해야 합니다.

listen_addresses = 'localhost, 10.0.10.156'

Postgres가 모든 인터페이스를 수신하도록 하려면 와일드카드를 사용할 수도 있습니다.

listen_addresses = '*'

이렇게 변경한 후에는 Postgres를 다시 시작해야 합니다. 또한 결과가 귀하의 기대와 일치하는지 확인하는 것이 좋습니다.


lsoflocalhost 및 10.0.10.156에서 수신 대기하는 postgres의 출력입니다.

# lsof -n -i:5432
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
postgres 7893 postgres    3u  IPv6  55868      0t0  TCP [::1]:postgres (LISTEN)
postgres 7893 postgres    4u  IPv4  55869      0t0  TCP 127.0.0.1:postgres (LISTEN)
postgres 7893 postgres    5u  IPv4  55870      0t0  TCP 10.0.10.156:postgres (LISTEN)

lsofpostgres는 모든 인터페이스에서 출력을 수신합니다.

# lsof -n -i:5432
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
postgres 7527 postgres    3u  IPv4  54903      0t0  TCP *:postgres (LISTEN)
postgres 7527 postgres    4u  IPv6  54904      0t0  TCP *:postgres (LISTEN)

관련 정보