我正在努力连接到在 Ubuntu 16.10 上运行的远程 Postgres 9.5 实例。
通常:
psql:无法连接到服务器:连接超时
服务器是否在主机“xx.xx.xx.xx”上运行并在端口 5432 上接受 TCP/IP 连接?
我的 postgresql.conf 包括
listen_addresses='*'
由输出确认
netstat -nlp | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 22981/postgres
tcp6 0 0 :::5432 :::* LISTEN 22981/postgres
unix 2 [ ACC ] STREAM LISTENING 3320886 22981/postgres /var/run/postgresql/.s.PGSQL.5432
除了我的特定 IP 地址和范围之外,我还尝试了 pg_hba.conf 中的以下条目:
host all all 0.0.0.0/0 md5
host all all ::/0 md5
host all all all md5
host all all * md5
我已经禁用 ufw 并清除了所有 iptables 规则:
iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
从我的工作站使用 nmap 进行扫描:
nmap xx.xx.xx.xx -p5432
Starting Nmap 7.01 ( https://nmap.org ) at 2017-02-13 09:17 SAST
Nmap scan report for xx.xx.xx.xx
Host is up (0.0074s latency).
PORT STATE SERVICE
5432/tcp filtered postgresql
telnet 到 xx.xx.xx.xx 5432 次。
SE 上几乎所有类似的问题似乎都可以通过
listen_addresses='*'
这不是问题。
更改 Postgres 监听的端口没有任何效果。
这是具有面向公众的网络接口的专用服务器。
服务器运行 SSH 和 Nginx,两者都可以通过接口进行远程访问。
对此真的很困惑,非常感谢您的帮助。
谢谢
编辑: 尝试使用评论中建议的 tcpdump 开关通过 psql 和 telnet 进入端口 5432 时的 tcpdump 输出:
tcpdump -i enp2s0 -s0 -XX -vv -n "tcp port 5432"
tcpdump: listening on enp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C
0 packets captured
2 packets received by filter
0 packets dropped by kernel
psql 超时后按 Ctrl-C
答案1
事实证明,我的托管服务提供商未经通知就将服务器移到了托管防火墙后面。