Вот моя ситуация.
У меня установлен Postgresql на сервере Windows в локальной сети.
У меня есть веб-сервер IIS за пределами локальной сети. Я хочу подключиться к базе данных postgresql с веб-сервера.
IP-адрес сервера Postgresql: 192.168.x.1
Внутренний IP-адрес межсетевого экрана: 192.168.x.2
Внешний IP-адрес межсетевого экрана: 72.x.x.100
IP-адрес веб-сервера - доступ к внутренней локальной сети: 192.168.x.3
IP-адрес веб-сервера - доступ к внешней локальной сети: 70.x.x.100
В файле pg_hba.conf есть запись: host all all 0.0.0.0/24 md5
В файле postgresql.conf есть запись: listen_addresses = '*'
Это должно снять все ограничения на доступ со стороны базы данных.
Моя конечная цель - получить доступ к этой базе данных для приложения ГИС для включения данных в картографический веб-сайт. На данный момент я просто пытаюсь получить доступ к postgresql с веб-сервера с помощью PgAdmin.
В этой конфигурации, предполагая, что порт 5432 правильно открыт на брандмауэре, какой IP-адрес мне следует поместить в Host
ящик для подключения к серверу PGAdmin? Моя первоначальная мысль заключается в том, что это должен быть Firewall External IP: 70.x.x.100
, но правильно ли это?
Наконец, при необходимости я разделю это на новый вопрос: логична ли эта конфигурация с точки зрения производительности и безопасности, или я должен поступить иначе?
хост все все 0.0.0.0/24 md5
Эм, что? Это только совпадения 0.0.0.*
что, безусловно, не то, что вам нужно.
Вы имели в виду 0.0.0.0/0
, т.е. все IP-адреса?
Или 192.168.0.0/16
, то есть "все в моей локальной сети, включая межсетевой экран и проходящий через NAT трафик"?
Вы используете NAT, поэтому PostgreSQL никогда не увидит внешние IP-адреса. Соединения через брандмауэр будут происходить из внутренний IP. Если вы хотите добавить правило только для подключений от самого брандмауэра или для подключений, проходящих через него, вы должны добавить правило, которое соответствует точному внутреннему IP-адресу вашего брандмауэра с маской. /32
, т.е. именно этот IP.
Кстати, предлагаемая вами установка разумна. Конечно, вам понадобится перенаправление портов на машине с брандмауэром. Вероятно, вы захотите включить поддержку активности TCP в PostgreSQL, чтобы брандмауэр не отбрасывал незанятые соединения из-за тайм-аутов таблицы отслеживания соединений.