Postgres 受保护的访问

Postgres 受保护的访问

我正在尝试配置我的 Postgres 实例,以便只有本地计算机和我的计算机(通过互联网)才能访问数据库。该postgresql.conf文件有一个参数listen_addresses,可用于设置授予访问权限的 IP 地址列表。

所以我将其设置为,listen_addresses 'localhost,a.b.c.d' 这意味着它将授予访问权限localhosta.b.c.d也就是我的 IP 地址。但在这种情况下,它只授予本地主机的访问权限。

listen_addresses 'a.b.c.d'也不起作用。我仔细检查了互联网 IP 地址,但它是正确的。我试过了

listen_addresses 'localhost'         // works only for local machine.
listen_addresses '*'                 // works for both local and my machine
listen_addresses 'localhost,a.b.c.d' // does not work for my machine
listen_addresses 'a.b.c.d'           // does not work for my machine

所以我这里遗漏了什么吗?

答案1

您对监听地址的概念的理解是错误的。

listen_addresses是运行 PostgreSQL 的服务器上的接口的 IP 地址列表,可用于连接 PostgreSQL 服务。

例如,您的 PostgreSQL 服务器具有 IP 地址192.168.10.1,您指定:

listen_addresses 'localhost,192.168.10.1';

这意味着所有可以到达 IP 地址的客户端都192.168.10.1可以连接到 PostgreSQL 服务器。

如果您想通过连接客户端的 IP 地址来限制连接,那么您有两个选择:

  1. 使用 PostgreSQL 的基于主机的访问机制对连接应用 IP 限制使用pg_hba.conf。 看客户端身份验证
  2. 添加防火墙规则,阻止除您想要允许的 IP 地址之外的所有 IP 地址连接到 PostgreSQL 端口。

相关内容