更改 pg_hba.conf 网络范围会阻止重新启动

更改 pg_hba.conf 网络范围会阻止重新启动

我有一台在 centos 上运行的 pgsql9.4 服务器,它有一个 pg_hba.conf,用于接受来自特定 IP 范围的 md5 连接。删除 IP 后,我的 pg_hba.conf 文件如下所示:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     ident
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident
#local  #DBNAME#         #USERNAME#                               md5     
#host   #DBNAME#         #USERNAME#       ###.###.###.0/24          md5

此配置非常适合 xxx.xx.xx.0 到 xxx.xx.xx.24 范围内的 IP。但是,当我尝试增加它以适应来自更高 IP 号 (112) 的服务器的访问并尝试重新启动 postgres 服务时,服务在重新启动时失败。

我尝试将这个数字从 0/25 逐渐增加到可以运行我们的 Puppet 服务器的数字。

我还尝试添加第二条相同的记录以仅包含 IP 范围 111/112,但无济于事。

有人知道为什么 Postgres 可能认为这些是无效的 pg_hba.conf 吗?

编辑:忘记提及 listen_addresses 设置为 '*',以便可以在 pg_hba.conf 中逐个用户控制访问

答案1

该主机信息是CIDR 表示法,当你使用时,你给出的不是从 0 到 24 的范围,而是从到的172.16.33.0/24范围(读作172.16.33.1172.16.33.254CIDR 块以更好地理解原因)。ipcalc该工具可以帮助您识别:

$ ipcalc 172.16.33.0/24
Network:    172.16.33.0/24
Address space:  Private Use
Address class:  Class B
Netmask:    255.255.255.0 = 24
Broadcast:  172.16.33.255

HostMin:    172.16.33.1
HostMax:    172.16.33.254
Hosts/Net:  254

因此,172.16.33.0/24已经包含了172.16.33.111` and172.16.33.112 , meaning you don't need to do anything else inpg_hba.conf but add the line with172.16.33.0/24`。

答案2

所以看起来好像我误解了 pg_hba.conf 文件的语法。0/24 不是 IP 地址范围。

检查 postgres 日志给了我一条错误消息地址“###.##.##.111/112”中的 CIDR 掩码无效这让我注意到了 CIDR 符号的存在和用法。

我通过为每个想要容纳的 IP 添加记录以及每个 IP 的 /32 来解决了错误

91 host    DBNAME         USERNAME        172.16.33.111/32        md5
92 host    DBNAME         USERNAME        172.16.33.112/32        md5
93 host    DBNAME         USERNAME        172.16.33.0/24          md5

这似乎很有效。现在我只需要复习一下对 pg_hba.conf 中使用的不同符号的理解 :)

相关内容