Postgresql
IPv6 地址上的 Postgres 連接訪問被拒絕
在 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 上的人,因此您可能也不應該通過網路發送可窺探的密碼。