iT邦幫忙

0

在Ubuntu主機使用psql連線別台Ubuntu主機裡的postgresql,感覺有建立連線,但無法進入postgresql,最後就Timeout

  • 分享至 

  • xImage

我在Ubuntu A主機使用 ping , telnet 都可連到 B 主機
https://ithelp.ithome.com.tw/upload/images/20240924/20144301EVQD04CmBu.png

以及 Ubuntu A 主機的 iptables 與 ufw 的配置:
https://ithelp.ithome.com.tw/upload/images/20240924/20144301NPVV5VOmEI.png

接著,這是 Ubuntu B 主機的 postgresql 狀態
https://ithelp.ithome.com.tw/upload/images/20240924/20144301qrsy6wEA2d.png

且Ubuntu B 主機的 pg_hba.conf 有設置讓Ubuntu A主機的IP連線,以及postgresql.conf的listen_addresses = '*' 也設置好了

但我在Ubuntu A主機使用 psql 就是連不到,且我 Container 的應用系統也連不到
https://ithelp.ithome.com.tw/upload/images/20240924/20144301P9wt7doron.png

而且這看起來有建立連線,但就是無法進入postgresql中,也不會寫入任何LOG
想請問各位,這是什麼問題啊,我已經處理這問題處理了15天了,我還重新安裝postgresql,也沒用....

看更多先前的討論...收起先前的討論...
haward79 iT邦研究生 1 級 ‧ 2024-09-24 10:41:45 檢舉
你有檢查過 B 主機的防火牆? iptables & ufw
通常是會擋連入的連線,不會擋出去的連線
aaiii iT邦新手 5 級 ‧ 2024-09-24 11:06:58 檢舉
B 主機的 ufw 狀態跟 A主機一樣是 Status: inactive,且 B 主機的 iptables的
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
都有開放連線
BKY iT邦好手 1 級 ‧ 2024-09-24 12:03:17 檢舉
你先把2邊主機的iptable及ufw都停掉,確認可以連線進入postgresql了再來一項一項開,比較容易抓問題
echochio iT邦高手 1 級 ‧ 2024-09-24 14:14:48 檢舉
確定SELinux關了吧?
iptable及ufw都停掉試試?
用本機 連 本機的postgresql 可以連吧?
haward79 iT邦研究生 1 級 ‧ 2024-09-24 21:08:52 檢舉
B 主機依序進行以下測試
1. netstat 確認哪些 port 處於 listening 以及可接受的來源 IP
2. 連接自身 localhost 的 postgresql

在 A 主機,對 B 主機依序進行以下測試
1. ping B
2. nmap 檢查 B 主機上 postgresql 的 port 有無阻擋
3. 連接 B 主機上的 postgresql

若途中遇到測試失敗,可檢查錯誤原因、log
aaiii iT邦新手 5 級 ‧ 2024-09-25 09:21:44 檢舉
確定SELinux關了吧? ==> 試過了還是一樣
iptable及ufw都停掉試試? ==> 接著會在試
用本機 連 本機的postgresql 可以連吧? ==> 試過,可連到

B 主機依序進行以下測試
1. netstat 確認哪些 port 處於 listening 以及可接受的來源 IP ==> 這有看過,沒問題
2. 連接自身 localhost 的 postgresql ==> 可連自身的postgresql
在 A 主機,對 B 主機依序進行以下測試
1. ping B ==> 可連到
2. nmap 檢查 B 主機上 postgresql 的 port 有無阻擋 ==> 看過沒問題
3. 連接 B 主機上的 postgresql ==> 就是連不上......
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
DennisLu
iT邦好手 1 級 ‧ 2024-09-24 16:59:03

pg_hba.conf 有修改要記得reload喔。

測試錯誤可以pg_hba.conf 對你的A的IP先改成 trust,
Ubuntu A ufw暫時關,
再來測試看看。先全開,由外而內一道一道緊縮直到找到不通的原因。

PostgreSQL 如果有連線,即使失敗也是有錯誤跟失敗原因(包含是因為pg_hba.conf規則阻擋都會跟你說是哪一條),PostgreSQL若完全沒log代表碰都沒碰到可能性比較高。

你看到的錯誤訊息是
connect_timeout=30來的,你任意指向不存在的IP,也是一樣的結果。
真的有連上但有錯誤,也不用到30秒的,而且會提示錯什麼。

判斷你的問題偏向網路成分比較高。

我要發表回答

立即登入回答