Postgresql
在 pg_hba.conf 中使用主機名?
根據 PostgreSQL 文件:
以點 (.) 開頭的主機名規範匹配實際主機名的後綴。所以 .example.com 將匹配 foo.example.com(但不僅僅是 example.com)。
所以我把這一行放進去
pg_hba.conf
並重新啟動 PostgreSQL:hostssl market_data market_data_access .horsholm.dk md5
然後我嘗試連接到數據庫:
psql "postgresql://market_data_access@<server-IP>:5433/market_data?sslmode=require"
我得到的不是密碼提示,而是:
psql: FATAL: no pg_hba.conf entry for host "195.249.206.131", user "market_data_access", database "market_data", SSL on
為了檢查,我對錯誤消息中列出的 IP 地址進行反向 DNS 查找:
$ host 195.249.206.131 131.206.249.195.in-addr.arpa is an alias for 131.129-190.206.249.195.in-addr.arpa. 131.129-190.206.249.195.in-addr.arpa domain name pointer kommune.horsholm.dk. $
我究竟做錯了什麼?
195.249.206.131
僅解析為kommune.horsholm.dk
匹配萬用字元是不夠的。檢查後,Postgres 將嘗試解析
kommune.horsholm.dk
並發現它無法解析195.249.206.131
(因為在這種特殊情況下它根本無法解析)$ host kommune.horsholm.dk Host kommune.horsholm.dk not found: 3(NXDOMAIN)
文件報價:
如果指定了主機名(任何不是 IP 地址範圍或特殊關鍵字的內容都被視為主機名),則將該名稱與客戶端 IP 地址的反向名稱解析的結果進行比較(例如,反向 DNS查找,如果使用 DNS)。主機名比較不區分大小寫。如果匹配,則對主機名執行前向名稱解析(例如,前向 DNS 查找),以檢查它解析到的任何地址是否等於客戶端的 IP 地址。如果兩個方向都匹配,則認為該條目匹配
反向 DNS 查找 IP
195.249.206.131
未解析為具有 name 的主機*.horsholm.dk
。如果我們研究您的host 195.249.206.131
命令的輸出,您會發現響應不包含 IP 到主機的精確映射(您得到的只是 IP 範圍)。成功的反向 DNS 查找如下所示:host 10.29.62.87 87.62.29.10.in-addr.arpa domain name pointer vm-test1.vpc.dev.net.