postgresql 端口已关闭,无法进行远程访问

postgresql 端口已关闭,无法进行远程访问

我正在尝试连接到 Ubuntu Server 中的 PostgreSQL 数据库,我有 root 访问权限,但不知何故我无法打开端口 5432 进行远程访问,只能进行本地访问。当我在服务器上使用“nmap”命令时,会发生以下情况(XXX.XXX.X.XX 代表服务器的 IP):

nmap -p 5432 localhost
PORT      STATE  SERVICE 
5432/tcp  open   postgresql


nmap -p 5432 XXX.XXX.X.XX
PORT      STATE  SERVICE 
5432/tcp  closed postgresql

我已经编辑了文件“pg_hba.conf”和“postgresql.conf”,但没有作用。

变化:

pg_hba.conf 文件:

# IPv4 local connections:
host    all             all             all            md5
# IPv6 local connections:
host    all             all             all            md5

postgresql.conf 文件:

listen_addresses = '*'

当我尝试连接 pgAdmin III 时,它显示的内容如下:

服务器不监听

无法连接到服务器:连接被拒绝(0x0000274D/10061)服务器是否在主机“XXX.XXX.X.XX”上运行并在端口 5432 上接受 TCP/IP 连接?

我曾尝试使用“ufw”命令打开端口,但没有效果。

谁能帮我?

答案1

确保您的防火墙没有阻止流量。

将以下规则附加到您的 iptables(更改X.X.X.X为您的服务器 IP 地址):

# iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d X.X.X.X  --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp -s X.X.X.X --sport 5432 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

如果有效,请保存 iptables 并重新启动:

# apt-get install iptables-persistent
# /etc/init.d/iptables restart

如果您的网络有外部防火墙,您也应该允许那里的连接。

安全说明:向公众开放 PostgreSQL 端口可能会引起安全问题。您应该考虑将传入流量限制到特定 IP 地址/范围,方法是将-s 0/0第一个 iptables 命令中的参数更改为-s X.X.X.X/X

相关内容