更改pg_hba.confnetworking范围可防止重新启动

我有一个运行在pg_hba.conf的centos上的pgsql9.4服务器来接受来自特定范围的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 

此configuration适用于xxx.xx.xx.0至xxx.xx.xx.24范围内的IP。 但是,当我尝试增加它以适应从更高IP地址(112)的服务器访问并尝试重新启动postgres服务时,服务在重新启动时失败。

我试着从0/25开始爬起来,并把它放到一个运行我们的木偶服务器的数字上。

我也尝试添加第二个相同的logging,以涵盖IP范围111/112,但无济于事。

任何人有任何想法,为什么Postgres可能会认为这是一个无效的pg_hba.conf?

编辑:忘了提及listen_addresses设置为'*',以便访问可以控制pg_hba.conf内用户的用户

这个主机信息是CIDR表示法 ,当你使用172.16.33.0/24你没有给出从0到24的范围,事实上,你的范围从172.16.33.1172.16.33.254 (读CIDR块来理解更好为什么)。 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` and 172.16.33.112 , meaning you don't need to do anything else in pg_hba.conf中, meaning you don't need to do anything else in but add the line with 172.16.33.0 / 24 but add the line with

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

检查postgres日志给了我一个错误消息, 在地址“###。##。##。111/112”中提供了无效的CIDR掩码,它提醒我CIDR表示法的存在和使用。

我通过为每个我想要容纳的IP添加logging来解决错误,并在每个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中使用的不同符号的理解:)