Postgres "Connection timed out" 从 debian 和 ubuntu 客户端连接时,但从 Windows 连接时没问题
Postgres "Connection timed out" when connecting from debian and ubuntu clients, but fine from Windows
更新:
这似乎与 Docker 如何更改 iptables 并在禁用其 iptables 规则设置功能后仍保留其设置有关。可以通过修改 /etc/docker/daemon.json
并设置 { "iptables": true }
来解决问题
我刚刚全新安装了 Debian 11。在没有 docker 的情况下安装了 postgres,并且能够连接到我的服务器。我刚刚安装 docker 并尝试从 postgres 容器连接但无法连接到服务器。这个问题似乎与 docker.
周围的防火墙有关
我是 运行 debian 服务器上的 postgres 13.4,通过 docker,托管在 DigitalOcean 上。我已经设置了一个非常开放的配置,只是为了看看我是否可以从非本地的各种客户端连接到我的服务器。以下是我配置 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 0.0.0.0/0 md5
# IPv6 local connections:
#host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
postgresql.conf
:
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*'
我从客户端连接的方法是使用 postgres docker 容器,这样我就可以使用 psql
命令而无需在该客户端上安装 postgres。我试过 3 台不同的客户端机器。
Windows 来自家庭网络的 10 工作正常:
root@7eb2296a9cf6:/# psql -h 111.222.143.193 -p 5432 -U postgres
Password for user postgres:
来自家庭网络的 Debian 10 失败:
root@38161cc233c1:/# psql -h 111.222.143.193 -p 5432 -U postgres
psql: error: could not connect to server: Connection timed out
Is the server running on host "111.222.143.193" and accepting
TCP/IP connections on port 5432?
Ubuntu 来自 Linode 网络的 20.04 失败:
root@3706fd7cbdd4:/# psql -h 111.222.143.193 -p 5432 -U postgres
psql: error: could not connect to server: Connection timed out
Is the server running on host "111.222.143.193" and accepting
TCP/IP connections on port 5432?
这是 UFW 状态(为了隐私我已经更改了 IP)
Status: active
To Action From
-- ------ ----
787/tcp ALLOW Anywhere
Anywhere ALLOW 93.551.148.352
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
5432 ALLOW Anywhere
787/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
5432 (v6) ALLOW Anywhere (v6)
这似乎与 Docker 如何更改 iptables 并在禁用其 iptables 规则设置功能后仍保留其设置有关。可以通过设置 /etc/docker/daemon.json
和设置 { "iptables": true }
来解决问题
另一种方法是直接使用 iptables。
更新:
这似乎与 Docker 如何更改 iptables 并在禁用其 iptables 规则设置功能后仍保留其设置有关。可以通过修改 /etc/docker/daemon.json
并设置 { "iptables": true }
我刚刚全新安装了 Debian 11。在没有 docker 的情况下安装了 postgres,并且能够连接到我的服务器。我刚刚安装 docker 并尝试从 postgres 容器连接但无法连接到服务器。这个问题似乎与 docker.
周围的防火墙有关我是 运行 debian 服务器上的 postgres 13.4,通过 docker,托管在 DigitalOcean 上。我已经设置了一个非常开放的配置,只是为了看看我是否可以从非本地的各种客户端连接到我的服务器。以下是我配置 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 0.0.0.0/0 md5
# IPv6 local connections:
#host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
postgresql.conf
:
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*'
我从客户端连接的方法是使用 postgres docker 容器,这样我就可以使用 psql
命令而无需在该客户端上安装 postgres。我试过 3 台不同的客户端机器。
Windows 来自家庭网络的 10 工作正常:
root@7eb2296a9cf6:/# psql -h 111.222.143.193 -p 5432 -U postgres
Password for user postgres:
来自家庭网络的 Debian 10 失败:
root@38161cc233c1:/# psql -h 111.222.143.193 -p 5432 -U postgres
psql: error: could not connect to server: Connection timed out
Is the server running on host "111.222.143.193" and accepting
TCP/IP connections on port 5432?
Ubuntu 来自 Linode 网络的 20.04 失败:
root@3706fd7cbdd4:/# psql -h 111.222.143.193 -p 5432 -U postgres
psql: error: could not connect to server: Connection timed out
Is the server running on host "111.222.143.193" and accepting
TCP/IP connections on port 5432?
这是 UFW 状态(为了隐私我已经更改了 IP)
Status: active
To Action From
-- ------ ----
787/tcp ALLOW Anywhere
Anywhere ALLOW 93.551.148.352
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
5432 ALLOW Anywhere
787/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
5432 (v6) ALLOW Anywhere (v6)
这似乎与 Docker 如何更改 iptables 并在禁用其 iptables 规则设置功能后仍保留其设置有关。可以通过设置 /etc/docker/daemon.json
和设置 { "iptables": true }
另一种方法是直接使用 iptables。