Postgresql

無法遠端連接到 Postgresql 9.5 實例

  • August 17, 2020

我正在努力連接到在 Ubuntu 16.10 上執行的遠端 Postgresql 9.5 實例。

通常:

psql:無法連接到伺服器:連接超時

伺服器是否在主機“xx.xx.xx.xx”上執行並接受埠 5432 上的 TCP/IP 連接?

我的 postgresql.conf 包括

listen_addresses='*'

通過輸出確認

netstat -nlp | grep 5432
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      22981/postgres      
tcp6       0      0 :::5432                 :::*                    LISTEN      22981/postgres      
unix  2      [ ACC ]     STREAM     LISTENING     3320886  22981/postgres       /var/run/postgresql/.s.PGSQL.5432

除了我的特定 IP 地址和範圍之外,我還嘗試了 pg_hba.conf 中的以下條目:

host    all             all             0.0.0.0/0               md5                                                                                                                                                                                       
host    all             all             ::/0                    md5
host    all             all             all                     md5
host    all             all             *                       md5 

我有以下 ufw 規則:

To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere                  
80,443/tcp (Nginx Full)    ALLOW IN    Anywhere                  
5432                       ALLOW IN    Anywhere                  
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)             
80,443/tcp (Nginx Full (v6)) ALLOW IN    Anywhere (v6)             
5432 (v6)                  ALLOW IN    Anywhere (v6) 

但是,即使禁用防火牆,問題仍然存在。

使用 nmap 掃描:

nmap xx.xx.xx.xx -p5432

Starting Nmap 7.01 ( https://nmap.org ) at 2017-02-13 09:17 SAST
Nmap scan report for xx.xx.xx.xx
Host is up (0.0074s latency).
PORT     STATE    SERVICE
5432/tcp filtered postgresql

幾乎所有關於 SE 的類似問題似乎都可以解決

聽地址=’*'

這不是問題。

對此感到非常困惑,我們將不勝感激。

機器沒有停機,因為我可以 ssh 進入機器。此外,也可以訪問 nginx 伺服器。Telnet 到埠 5432 超時。

ubuntu伺服器前面沒有本地路由器,是一個專用伺服器,有公網介面,綁定xx.xx.xx.xx地址。這是從不提供額外防火牆設備選項的同一託管公司的上一代機器的遷移。這是一個乾淨的 Ubuntu 16.10 伺服器安裝。

原來我的託管服務提供商在沒有通知的情況下將伺服器移到了託管防火牆後面。

儘管這已經是很久以前回答的問題,但出於向面臨相同問題的其他人提供資訊的目的,在這種情況下,結果也nmap確實為您提供了答案。

埠狀態服務 –> 5432/tcp過濾的 postgresql

如果您查看有關 nmap 的文件,它會提到

已過濾意味著防火牆、過濾器或其他網路障礙正在阻塞埠,因此 Nmap 無法判斷它是打開還是關閉。

所以問題在於網路而不是 PostgreSQL 配置。

引用自:https://dba.stackexchange.com/questions/164144