繁体   English   中英

允许在 pg_hba.conf 中访问主机名,除非我还添加已解析的 ip 地址,否则将无法工作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM