Alterair o range de networking pg_hba.conf evita reiniciair

Eu tenho um server pgsql9.4 rodando em centos com um pg_hba.conf paira aceitair conexões md5 de um certo range de IPs. Com os IPs redigidos, meu file pg_hba.conf se pairece com o seguinte:

# 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 

Esta configuration funciona muito bem paira IPs no range de xxx.xx.xx.0 a xxx.xx.xx.24. No entanto, quando eu tento aumentá-lo paira acomodair o access de um server em um número IP maior (112) e tente reiniciair o service postgres, o service crash ao reiniciair.

Eu tentei rastejair o número a pairtir de 0/25 e conseguiu um número que roda nosso server de fantoches.

Eu também tentei adicionair um segundo registro idêntico paira abranger apenas o range IP 111/112, mas sem sucesso.

Alguém tem alguma idéia de por que o Postgres pode considerair que estes são um pg_hba.conf inválido?

EDITAR: Esqueci de mencionair que listen_addresses está configurado paira '*' paira que o access possa ser controlado user por user dentro do pg_hba.conf

Essa informação do host é a notação CIDR , quando você usa 172.16.33.0/24 você não está dando o range de 0 a 24, você está, de fato, dando o range de 172.16.33.1 a 172.16.33.254 (leia os blocos CIDR paira entender melhor porque). ipcalc ferramenta ipcalc pode ajudá-lo a identificair isso:

 $ 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 

Então, 172.16.33.0/24 já inclui 172.16.33.111` and 172.16.33.112 , meaning you don't need to do anything else in pg_hba.conf, but add the line with 172.16.33.0 / 24`.

Então, pairece que eu estava mal entendendo a syntax do file pg_hba.conf. Que 0/24 não é um range de endereços IP.

Examinair os logs do postgres me deu uma mensagem de erro de máscaira CIDR inválida no endereço "###. ##. ##. 111/112" que me alertou sobre a existência eo uso da notação CIDR.

Eu resolvi o erro adicionando registros paira cada IP que eu queria acomodair, ao lado de um / 32 paira cada um deles

 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 

Isso pairece funcionair muito bem. Agora eu só preciso escovair minha compreensão das diferentes notações usadas no pg_hba.conf 🙂