Невозможно подключиться к серверу postgresql 9.6 из клиента 9.4

Спецификации

Сервер

  • Среда: FreeBSD (FreeNAS Jail)
  • Версия Postgresql: 9.4
  • Listening_address: '*'
  • Listening_port: 8096
  • запись pg_hba.conf: host all all 0.0.0.0/0 md5

Client

  • Среда: Linux Ubuntu 16.0.4 LTS
  • Версия Postgresql: 9.6

Проблема

Я пытаюсь разместить базу данных моей компании на сервере, к которому сотрудники могут получить удаленный доступ. Среда сотрудников будет различаться в зависимости от версии Linux и Windows. В моей тестовой среде используется клиент Linux. Пока мне не удалось успешно подключить клиента к серверу.

Что я пробовал

Я создал файл паролей postgresql, ".pgpass" с соответствующей информацией, введенной в формате host : порт: Когда я запускаю psql -h host -p port -U username database от клиента, я получаю ошибку тайм-аута. Однако, когда я запускаю ту же команду на сервере, у меня запрашивается мой пароль, и я подключаюсь к своей базе данных.

Вопросы

Что я здесь делаю не так? Мне не хватает шага или есть проблема с разными версиями postgresql? Проблема заключается в различии между средами Linux и BSD?

- РЕДАКТИРОВАТЬ -

Точное сообщение об ошибке

psql: could not connect to server: Connection timed out
        Is the server running on host "host.domain.com" (###.###.###.###) and accepting
        TCP/IP connections on port [port]?

pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust

# IPv6 local connections:
host    all             all             ::1/128                 trust

# IPv4 remote connections:
host    all             all             0.0.0.0/0               md5
0
задан 30 December 2016 в 22:03
2 ответа

Проблема закончилась проблемами с таблицами маршрутизации маршрутизатора на стороне сервера. GUI показал все, как должно быть, порт был открыт и указывал на сервер postgresql.

Решение

Я подключился к маршрутизатору на стороне сервера через telnet и вручную установил таблицы маршрутизации и принудительно перезагрузился.
. После подключения к маршрутизатору я выдал следующие команды:

iptables -t nat -I PREROUTING -p tcp --dport <PORT> -j DNAT --to <SERVER_IP>:<SERVER_PORT>
iptables -I FORWARD -p tcp -d <SERVER_IP> --dport <SERVER_PORT> -j ACCEPT
reboot

Я признаю, что обычная перезагрузка отменит действие двух предыдущих команд. Однако в моем случае это сработало. Перед выполнением команд iptables я безуспешно пытался выполнить ряд последовательностей перезагрузки . Я не уверен, почему отображение с помощью iptables не работало до тех пор, пока не перезагрузился. Не стесняйтесь комментировать.

В конце концов, проблема была не в postgresql или в моей установке, а в таблицах маршрутизации на стороне сервера.

Надеюсь, этот ответ поможет кому-нибудь, кто борется со схожими проблемами. Даже если маршрутизатор хорошо настроен LOOKS, это не значит, что он в порядке

.
0
ответ дан 5 December 2019 в 08:56

Я ожидаю, что у вас есть брандмауэр, блокирующий входящие соединения на порту 5432.

.
0
ответ дан 5 December 2019 в 08:56

Теги

Похожие вопросы