Postgresql

IPv6 地址上的 Postgres 連接訪問被拒絕

  • June 2, 2013

在 Windows 上安裝了 PostgreSQL 9.1 x64,設置了監聽地址,但是在連接 pgAdmin 時出現以下錯誤。不知道為什麼 PostgreSQL 看到的是我的 IPv6 地址而不是我的正常 IP 地址:

在此處輸入圖像描述

為了使身份驗證正常工作,根據錯誤消息,我更新pg_hba.conf了以下內容:

host all all fe80::c5d2:XXXX:XXXX:3bc0/12 trust

這行得通,但它很難看,而且太具體了。我根據 PostgreSQL 文件嘗試了以下操作,但沒有奏效,我得到相同的“訪問被拒絕”錯誤:

local all all trust
host all all 0.0.0.0/12 trust

我得到了這個工作,它涵蓋了整個 IPv6 地址空間,但是如何指定 IPv6 範圍以獲得更多限制?

host  mydb  myuser  ::/0   trust

問題

  • 為什麼 pgAdmin 獲取我的 IPv6 地址而不是我的普通 IP?
  • 如何在不訴諸 IPv6 的情況下指定範圍::/0

以 開頭的 IPv6 地址fe80:是鏈路本地地址。它們不能跨不同的子網或網際網路路由。它們僅用於連接到同一 LAN 的機器之間的通信。連結本地範圍定義為fe80::/10。如果您信任本地 LAN 上的每個人,那麼您可以這樣做

host  all  all  fe80::/10  trust

如果您不信任本地 LAN 上的每個人,那麼您可能想要使用使用者名+密碼保護:

host  all  all  fe80::/10  md5

指定時md5您仍在使用使用者名+密碼保護,但密碼不再以可讀格式傳輸。由於您不信任本地 LAN 上的人,因此您可能也不應該通過網路發送可窺探的密碼。

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