Назад | Перейти на главную страницу

Защищенный доступ Postgres

Я пытаюсь настроить свой экземпляр Postgres так, чтобы только локальный компьютер и мой компьютер (через Интернет) могли получить доступ к базе данных. В postgresql.conf файл имеет параметр listen_addresses который может использоваться для установки списка IP-адресов, к которым предоставляется доступ.

Поэтому я установил это как listen_addresses 'localhost,a.b.c.d' что означает, что он предоставит доступ к localhost и a.b.c.d что, скажем, мой IP-адрес. Но в этом случае он просто предоставляет доступ к localhost.

listen_addresses 'a.b.c.d' тоже не работает. Я дважды проверил IP-адрес в Интернете, но он правильный. Я попытался

listen_addresses 'localhost'         // works only for local machine.
listen_addresses '*'                 // works for both local and my machine
listen_addresses 'localhost,a.b.c.d' // does not work for my machine
listen_addresses 'a.b.c.d'           // does not work for my machine

Так я что-то упускаю?

Вы неправильно поняли концепцию прослушивания адресов.

listen_addresses это список IP-адресов интерфейсов на сервере под управлением PostgreSQL, которые можно использовать для подключения к службе PostgreSQL.

Так, например, ваш сервер PostgreSQL имеет IP-адрес 192.168.10.1, вы указываете:

listen_addresses 'localhost,192.168.10.1';

Это означает, что все клиенты, которые могут получить доступ к IP-адресу 192.168.10.1 может подключиться к серверу PostgreSQL.

Если вы хотите ограничить соединения, подключив IP-адрес клиента, у вас есть два варианта:

  1. Используйте механизм доступа PostgreSQL на основе хоста, чтобы применить ограничения IP к соединениям. с помощью pg_hba.conf. Видеть аутентификация клиента.
  2. Добавьте правила брандмауэра, которые запрещают подключение к порту PostgreSQL со всех IP-адресов, кроме тех, которые вы хотите разрешить.