我无法远程访问我的 Postgres 服务器

我无法远程访问我的 Postgres 服务器

我家里的 Linux 服务器上运行着一个 Postgres 数据库。我希望能够从我的公共 IP 地址远程访问它,但似乎无法正常工作。

我已经listen_address = "*"在我的conf中设置了

host    all             all             0.0.0.0/0               scram-sha-256
host    all             all             ::/0                    scram-sha-256

在 pg_hba.conf 中设置。我的路由器已转发端口 5432,我知道它确实有效。我使用 dbeaver,当我使用我的公共 IP 运行测试连接时,它显示连接成功。

在此处输入图片描述

这让我觉得一切都应该没问题。但是,当我尝试打开数据库时,出现了连接超时的情况。

在此处输入图片描述

我禁用了 ufw 只是为了检查是否是这个问题,结果得到了同样的结果。我尝试使用服务器的 IP 地址而不是我的公共 IP 在本地连接到它,它与我本地网络上的服务器 IP 地址配合得很好。

我甚至尝试将端口从 5432 更改为 8080,看看是否会有问题,但仍然得到相同的结果。

我还尝试使用 nginx 在端口 8080 上托管一个简单的网站,并且我可以看到在我的浏览器中使用我的公共 IP 就可以了,所以我想不出任何会阻塞任何端口的东西。

我的 postgres 配置中是否存在我遗漏的东西或其他东西,因为我在这里完全被难住了。

答案1

确保 postgresql 正在监听路由器转发数据包到的 LAN 地址。

答案2

最有可能的是,您家中的 PostgreSQL 实例正在路由器的某种 NAT 后面运行。

您需要在路由器中设置端口转发,以将端口 5432 转发到路由器后面的服务器。此外,如果您没有静态 IP 地址,则需要动态 DNS 服务将域名映射到上游 IP 地址。

具体步骤取决于您使用的设置。

相关内容