Muy buenos días a todos y bienvendos a una nueva entrega de nuestra entrada semanal. En esta ocasión hablaremos de las conexiones permitidas por el Servidor PostgreSQL.
La configuración por defecto permite que el Servidor PostgreSQL tan solo escuche las conexiones procedente de los clientes locales. Por lo que no permite conexiones en remoto. No obstante hay instalaciones que modifican el archivo de configuración permitiendo que el Servidor pueda escuchar conexiones de clientes en remoto.
Podemos controlar la forma en que el Servidor PostgreSQL escucha las conexiones de los clientes configurando el parámetro listen_addresses del archivo de configuración de PostgreSQL.
Permitir sólo conexiones locales
En la configuración por defecto, el parámetro listen_addresses tiene establecido “localhost”. El cliente que realiza la conexión debe de estar en la misma máquina que se encuentra el Servidor PostgreSQL. Ésta conexión se puede realizar mediante el sockets Unix-domain o mediante TCP/IP. Si se realiza mediante TCP/IP, hay que especificar el nombre de host (localhost) ó la direción IP (127.0.0.1).
Permitir conexiones desde una dirección IP
Podemos especificar que el Servidor escuche en una dirección IP específica, para ello establecemos el parámetro listen_addresses con dicha dirección IP o con el nombre de host. Supongamos que el host donde tenemos el cliente que realiza la conexión remota con el Servidor PostgreSQL, tiene especificado el nombre “maquina1” y la dirección IP es 192.168.1.155. En este caso, en el parámetro listen_addresses especificamos dicha IP o el nombre, quedaría una de estas dos forma.
listen_addresses = '192.168.1.155'
listen_addresses = 'maquina1'
Permitir conexiones desde varias IP
Para permitir que el Servidor PostgreSQL escuche en un rango de direcciones IP ó en varios host, establecemos el parámetro listen_addresses con cada una de las IP ó nombre de host. Supongamos que los clientes que se conectan de manera remota tienen los siguientes nombres de host y direcciones IP:
CLIENTE HOST IP
Cliente 1 maquina1 192.168.1.155
Cliente2 maquina2 192.168.1.170
Cliente3 maquina3 192.168.1.165
En este caso en el parámetro listen_addresses le indicamos cada nombre o cada dirección IP separados por una coma (,), quedaría de la siguiente forma:
listen_addresses = '192.168.1.155, 192.168.1.170, 192.168.165'
listen_addresses = 'maquina1, maquina2, maquina3'
Permitir conexiones desde cualquier IP
Si establecemos un asterisco (*) en el parámetro listen_addresses, permitimos que el Servidor PostgreSQL pueda escuchar en cualquier dirección IP ó nombre de host. Independientemente de las direcciones IPs que procedan las conexiones de los clientes. Para permitir escuchar en cualquier dirección IPv4, establecemos la entrada 0.0.0.0 en el parámetro listen_addresses. Y para las IPv6 establecemos los dobles dos puntos (::). En este caso el parámetro listen_addresses quedaría de una de las siguientes tres formas, permitiendo que los clientes puedan conectarse en remoto independientemente de la dirección IP.
Para cualquier dirección IP –> listen_addresses = '*'
Sólo para las direcciones IPv4 –> listen_addresses = '0.0.0.0'
Para las nuevas direcciones IPv6 –> listen_addresses = '::'
Recordar que si se modifica el parámetro listen_addresses, se debe de quitar la almohadilla (#) que viene puesta por delante. De esta forma el parámetro queda descomentado y el Servidor lo tendrá en cuenta. Además es necesario reiniciar la instancia para que surja efecto la modificación realizada.
Esto es todo lo que tenemos en nuestra entrada semanal. Esperamos que hayáis aprendido un poquito sobre el funcionamiento del motor de Bases de Datos Open Source más potente del mercado.