Отладка удаленного соединения PostgreSQL

Отладка удаленного соединения PostgreSQL

У меня возникли проблемы с подключением к базе данных PostgreSQL из онлайн-источника.

PostgreSQL, похоже, настроен нормально, он работает на порту по умолчанию 5432, а в postgresql.conf есть следующая строка:

listen_addresses = '*'

А в pg_hba.conf есть следующее

host    dbname    usname    all    md5

Я могу подключиться к базе данных PostgreSQL с другого компьютера, используя следующие учетные данные в pgadmin

Name              local
Host              192.xx.xx.xx
Port              5432
Maintenance DB    dbname
Username          usname
Password          psword

Используя их, я могу отлично подключиться, все работает нормально.

Затем я перенаправил порт 192.xx.xx.xx:5432 на маршрутизаторе ADSL и проверил его, используя публичный IP-адрес 197.xx.xx.xx (видимый для IP-адреса в Интернете) http://www.canyouseeme.org/ Где я вижу, что порт был перенаправлен нормально.

Я временно отключил SELinux и брандмауэр.

Однако когда я пытаюсь подключиться с помощью

Name              online
Host              197.xx.xx.xx
Port              5432
Maintenance DB    dbname
Username          usname
Password          psword

Я получаю сообщение об ошибке «Сервер не слушает»

could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "197.xx.xx.xx" and accepting TCP/IP connections on port 5432?

Почему так? Нужно ли мне добавить дополнительный шаг, чтобы он принимал соединения через переадресацию портов?

решение1

allнедопустимо в поле CIDR строки hostв pg_hba.conf.

Из комментариев в pg_hba.confсамом файле по умолчанию:

# хост БАЗЫ ДАННЫХ ПОЛЬЗОВАТЕЛЯ CIDR-АДРЕС МЕТОД [ОПЦИЯ]

и

CIDR-ADDRESS указывает набор хостов, с которыми совпадает запись. Он состоит из IP-адреса и маски CIDR, которая является целым числом (от 0 до 32 (IPv4) или 128 (IPv6) включительно), которое указывает количество значимых бит в маске. В качестве альтернативы вы можете написать IP-адрес и сетевую маску в отдельных столбцах, чтобы указать набор хостов.

Попробуйте вместо этого следующее:

host    dbname    usname      197.xx.xx.xx/32  md5

что позволит подключаться к dbname из usname только с удаленного хоста 197.xx.xx.xx

Если вы хотите разрешить всю подсеть 197.xx.xx /24, используйте:

host    dbname    usname      197.xx.xx.0/24  md5

Связанный контент