[英]Allowing hostname access in pg_hba.conf, won't work unless I also add the resolved ip address?
我想允许从主机名而不是 IP 访问 postgres。我添加了从主机名访问我的 pg_hba.conf,但是当查看错误日志时,似乎 DNS 将此主机名解析为 IP,来自此 IP 的连接不是允许,除非我明确允许访问。 这违背了使用主机名的全部目的,因为我的服务的主机名永远不会改变,而 ip 地址每天都会改变。
这个问题的解决方案是什么? 也许我的 conf 不正确?
错误:
test@test FATAL: no pg_hba.conf entry for host "10.81.128.90", user "test", database "test", SSL on[1]:
test@test DETAIL: Client IP address resolved to "cannablrv2-locationserver-1.kontena.local", forward lookup not checked.
shell 添加对 pg_hba.conf 的访问的脚本
# Restrict subnet to docker private network
echo "host all all 172.17.0.0/16 md5" >> /etc/postgresql/9.5/main/pg_hba.conf
# Allow access from locationserver
echo "host all all cannablrv2-locationserver.test.kontena.local md5" >> /etc/postgresql/9.5/main/pg_hba.conf
# And allow access from DockerToolbox / Boottodocker on OSX
echo "host all all 192.168.0.0/16 md5" >> /etc/postgresql/9.5/main/pg_hba.conf
# Listen on all ip addresses
echo "listen_addresses = '*'" >> /etc/postgresql/9.5/main/postgresql.conf
echo "port = 5432" >> /etc/postgresql/9.5/main/postgresql.conf
您会看到客户端IP地址解析为与您在pg_hba.conf
输入的名称不同的名称,这就是连接失败的原因。
您阅读了文档吗? 它详细说明了主机名的处理方式。
您可能无法使用.kontena.local
来匹配名称后缀。
此答案假定您使用 DNS 服务器进行主机名解析。 根据https://www.postgresql.org/docs/current/auth-pg-hba-conf.html ,如果提供了主机名,则将使用该 IP 执行反向 DNS 查找。在您的情况下,反向DNS 查找 IP 10.81.128.90
解析为cannablrv2-locationserver-1.kontena.local
而不是您在pg_hba.conf
中提供的cannablrv2-locationserver.test.kontena.local
。 此外,反向和正向 DNS 查找必须给出预期的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.