A mudança do intervalo de rede do pg_hba.conf previne o reinício

1

Eu tenho um servidor pgsql9.4 em execução no centos com um pg_hba.conf para aceitar conexões md5 de um determinado intervalo de IPs. Com os IPs redigidos, meu arquivo pg_hba.conf se parece 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

Essa configuração funciona muito bem para IPs no intervalo de xxx.xx.xx.0 a xxx.xx.xx.24. No entanto, quando tento aumentá-lo para acomodar o acesso de um servidor em um número IP mais alto (112) e tentar reiniciar o serviço postgres, o serviço falha na reinicialização.

Eu tentei aumentar o número de 0/25 e torná-lo um número que executa o nosso servidor de fantoches.

Eu também tentei adicionar um segundo registro idêntico para abranger apenas o intervalo de IP 111/112, mas sem sucesso.

Alguém tem alguma idéia de por que o Postgres pode considerá-lo um pg_hba.conf inválido?

EDIT: Esqueceu de mencionar que listen_addresses é definido como '*' para que o acesso possa ser controlado usuário por usuário dentro de pg_hba.conf

    
por Robert Townley 07.09.2016 / 18:05

2 respostas

2

Essa informação do host é a notação do CIDR , quando você usa 172.16.33.0/24 você não está dando o varia de 0 a 24, você está, de fato, fornecendo o intervalo de 172.16.33.1 a 172.16.33.254 (leia CIDR blocos para entender melhor por que). A ferramenta ipcalc pode ajudar você a identificar 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

Portanto, 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 '.

    
por 07.09.2016 / 19:20
0

Portanto, parece que eu estava entendendo mal a sintaxe do arquivo pg_hba.conf. Esse 0/24 não é um intervalo de endereços IP.

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

Eu resolvi o erro adicionando registros para cada IP que eu queria acomodar, juntamente com um / 32 para 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 parece funcionar muito bem. Agora eu preciso apenas entender melhor as diferentes notações usadas no pg_hba.conf:)

    
por 07.09.2016 / 18:31

Tags