포트 5432(Postgres)가 localhost에서만 액세스 가능하도록 서버를 설정하려고 합니다. 그래서 모든 것을 거부하고 포트 5432를 다시 추가했지만 연결할 수 없습니다.
내 UFW 구성은 다음과 같습니다.
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
22 ALLOW IN Anywhere
80 ALLOW IN Anywhere
443 ALLOW IN Anywhere
127.0.0.1 5432 ALLOW IN 127.0.0.1
22 (v6) ALLOW IN Anywhere (v6)
80 (v6) ALLOW IN Anywhere (v6)
443 (v6) ALLOW IN Anywhere (v6)
80 ALLOW OUT Anywhere
22 ALLOW OUT Anywhere
443 ALLOW OUT Anywhere
53 ALLOW OUT Anywhere
33434:33524/udp ALLOW OUT Anywhere
127.0.0.1 5432 ALLOW OUT 127.0.0.1
80 (v6) ALLOW OUT Anywhere (v6)
22 (v6) ALLOW OUT Anywhere (v6)
443 (v6) ALLOW OUT Anywhere (v6)
53 (v6) ALLOW OUT Anywhere (v6)
33434:33524/udp (v6) ALLOW OUT Anywhere (v6)
그리고 netstat:
$ netstat -an | grep "LISTEN "
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN
tcp6 0 0 :::55056 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::5432 :::* LISTEN
tcp6 0 0 :::443 :::* LISTEN
연결을 방해하는 것이 실제로 ufw인지 확인하기만 하면 됩니다. 연결을 비활성화하면 제대로 작동하기 때문입니다. 내가 무엇을 놓치고 있는지 아시나요?
답변1
netstat에서 우리는 포트 5432에 대해 단 한 번 언급된 것을 볼 수 있습니다(즉, 를 수신하는 tcp6 라인입니다 :::5432
. 이는 귀하의 프로그램이 에서만 수신하고 있음을 보여줍니다 IPv6
. 방화벽은 에서만 허용합니다 IPv4
. 두 가지 옵션이 있습니다. 하나는 IPv6 주소 ::1
( IPv6
localhost와 동일)를 방화벽의 해당 서비스에 연결하도록 허용하고, 다른 하나는 프로그램이 수신하도록 하는 것입니다 IPv4
. 아마도 두 가지를 모두 수행하는 것이 가장 좋습니다.