我正在嘗試設定我的伺服器,以便只能從本地主機存取連接埠 5432 (Postgres)。所以我拒絕了一切,並添加了連接埠 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 -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
本機)連接到防火牆中的該服務,另一個是讓您的程式偵聽IPv4
最好的方法可能是兩者兼而有之。