我无法从我的机器连接到运行 Postgres 的服务器。我认为我已经正确配置了一切。服务器上没有防火墙。
我在 Ubuntu 12.04 LTS 上运行 Postgres 9.1.9
这是来自 /etc/postgresql/9.1/main/pg_hba.conf
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
host all all 0.0.0.0/0 md5
host all all ::1/128 md5
我有listen_addresses = '*'
/etc/postgresql/9.1/main/postgresql.conf
我已多次停止并启动该服务。
netstat -tulnp
:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 19312/mongod
tcp 0 0 0.0.0.0:28017 0.0.0.0:* LISTEN 19312/mongod
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 978/sshd
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 30239/postgres
tcp6 0 0 :::22 :::* LISTEN 978/sshd
tcp6 0 0 :::5432 :::* LISTEN 30239/postgres
我的 iptable 是空的。
当我尝试使用
psql -U postgres -h <MY_IP>
我得到:
psql: could not connect to server: Operation timed out
Is the server running on host "<MY_IP>" and accepting
TCP/IP connections on port 5432?
有啥帮助吗?谢谢
端口 5432 上的 tcpdump:
16:33:10.548507 7c:c3:a1:a2:d9:27 (oui Unknown) > 00:00:5e:00:01:01 (oui Unknown), ethertype IPv4 (0x0800), length 78: <MY_MAC> > <MY_SERVER>.postgresql: Flags [S], seq 95915852, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1189142453 ecr 0,sackOK,eol], length 0
我可以连接到服务器上的 postgres ( psql -U postgres -h localhost
) 但是我无法从我的机器上通过 5432 进行 telnet。
答案1
请记住,运行客户端的机器可能还设置了 iptables 规则来阻止连接的传出或入站部分。
答案2
似乎有防火墙阻止了您的网络流量。您的消息中没有关于网络(客户端和 postgres 服务器)的信息,但似乎有一些防火墙规则阻止了客户端和服务器之间的流量。
答案3
您使用的是 ipv4 还是 ipv6。
因为您的 tcpdump 示例显示 ipv6 连接,而您没有在 pg_hba.conf 上启用 ipv6 连接
::1/128 --------> 环回