Сервер
Client
Я пытаюсь разместить базу данных моей компании на сервере, к которому сотрудники могут получить удаленный доступ. Среда сотрудников будет различаться в зависимости от версии 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]?
# 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
Проблема закончилась проблемами с таблицами маршрутизации маршрутизатора на стороне сервера. 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, это не значит, что он в порядке
.