【问题标题】:Access PostgreSQL Database Outside Local Network在本地网络之外访问 PostgreSQL 数据库
【发布时间】:2021-01-20 19:28:39
【问题描述】:

我有一台 Windows 10 机器,我想访问在本地网络之外的另一台机器上设置的数据库。

有没有可能使用 postgresql 来实现?

非常感谢,非常感谢您为帮助我克服这种情况所做的努力。

【问题讨论】:

  • 这需要更多信息。您是否可以控制其他数据库/机器?如果您有控制权,您是否知道该数据库的连接信息(主机、端口、数据库名称等)?您是否在本地计算机上安装了 Postgres 客户端,如果是,它是什么?你和远程机器之间有防火墙吗?
  • 你好阿德里安,是的,我确实控制了另一台数据库机器。实际上,更准确地说,我需要为一个企业制作一个 Java 应用程序,它将在客户的计算机上运行(让我们认为它是计算机 n1)。但我希望将数据存储在 n1 本地网络之外的数据库中,当然我将获得有关它的完整信息(主机、端口、数据库名称等)。是的,我在客户端机器(计算机 n1)上安装了 postgres。当然,在 n1 和远程机器之间还有防火墙。我可以使用 SSH 隧道吗?非常感谢!

标签: postgresql networking remote-access host


【解决方案1】:

有可能,前提是:

  1. 本地网络的防火墙允许传出连接到 PostgreSQL 侦听端口(通常为 5432)。
  2. 其他网络的防火墙允许传入连接到 PostgreSQL 侦听端口(通常为 5432)。
  3. PostgreSQL 服务器的防火墙允许在其侦听端口(通常为 5432)上进行连接。
  4. PostgreSQL 服务器配置为接受网络连接。

您可以使用 Nmap 之类的网络扫描仪进行测试,要做的就是在客户的网络上安装一台笔记本电脑,然后从那里进行扫描。如果您可以从同一子网上的地址连接到 PostgreSQL,那么您知道 PostgreSQL 服务器上不需要其他任何东西,因此您需要将注意力放在客户的防火墙上。这就是事情变得困难的地方,您需要与控制防火墙/路由器的人合作。

客户的网络可能位于 RFC 1918 子网上。如果是这种情况,防火墙/路由器将需要配置为像这样进行端口转发:


public internet
       |
 ----public address--port nnn--
|                             |
|     firewall                |
|                             |
|-----rfc 1918 address--------|
          |     
          |  
          |  
 ----rfc 1918 address--port 5432--
|                                |
|     PostgreSQL server          |
|                                |
|--------------------------------|

【讨论】:

  • 所以我真正需要做的就是在“服务器”机器上添加一个入站规则(当然是针对端口 5432),并在客户端机器上添加一个结果规则(再次针对端口 5432)? SSH隧道怎么样?你对尝试使用它有什么建议吗?如果是这样,我该如何使用它来解决我的问题?非常感谢!!
  • 这完全取决于网络环境 - 我已经扩展了我的答案。如果您已经可以从 Windows 10 机器 ssh 到客户端的 PostgreSQL 服务器,那么这意味着客户端防火墙配置为允许,在这种情况下,SSH 隧道是一个选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-02
  • 2021-05-22
相关资源
最近更新 更多