我用 Heroku 开了一个新帐户并安装了 dev Postgresql 插件。我正在使用带有 OSX 10.8.5 且禁用防火墙的 2010 Mac Pro,直接连接到我的 RCN/Cisco 电缆调制解调器,并从http://postgresapp.com/在本地计算机上安装了 Postgresql 9.3 。我可以从 Macbook Air 连接到 Heroku postgresql,但不是 Macbook Pro。所以从两台机器上,我测试了用 telnet 连接到端口 5432。在 Macbook Air 上可以正常连接,但在 Mac Pro 上不能。我可以在两台机器上正常浏览网页,还可以在两台机器的 4000 端口上连接到一个 telnet 站点(我有一个可用的站点)。
我收到此错误:
Trying 54.235.194.252...
telnet: connect to address 54.235.194.252: Connection refused
telnet: Unable to connect to remote host
使用 Wireshark,我尝试在 telnet 时查看端口 5432 上的 tcp 数据包。只是连接被拒绝,数据包日志上没有任何内容。但是我在 4000 端口上远程登录时看到了很多。
我在 Mac Pro 上试过的其他东西:
- 我做了一个
nslookup ec2-54-235-194-252.compute-1.amazonaws.com
它返回54.235.194.252
按预期返回。 - IP 地址上的 traceroute 给出了一个
No route to host
并且 mtr 也没有显示任何内容。 sudo ipfw list
节目65535 allow ip from any to any
,与 Macbook Air 相同- 远程登录时,活动接口上该主机的 tcpdump 和 Wireshark 没有显示任何内容。似乎在进入界面之前就已经被抛弃了。
然后我尝试通过 dtruss 运行 telnet 命令并看到了这个:
write_nocancel(0x1, "Trying 54.235.194.252...\n\0", 0x19) = 25 0
socket(0x2, 0x1, 0x6) = 3 0
getuid(0x2, 0x1, 0x0) = 0 0
setuid(0x0, 0x1, 0x0) = 0 0
setsockopt(0x3, 0x0, 0x3) = 0 0
connect(0x3, 0x7F8F20C0DAD0, 0x10) = -1 Err#61
write_nocancel(0x2, "telnet: \0", 0x8) = 8 0
write_nocancel(0x2, "connect to address 54.235.194.252\0", 0x21) = 33 0
write_nocancel(0x2, ": \0", 0x2) = 2 0
write_nocancel(0x2, "Connection refused\n\0", 0x13) = 19 0
write_nocancel(0x2, "telnet: \0", 0x8) = 8 0
write_nocancel(0x2, "Unable to connect to remote host\0", 0x20) = 32 0
write_nocancel(0x2, "\n\0", 0x1) = 1 0
close(0x3) = 0 0
Err#61 是 ECONNREFUSED 的 BSD 错误代码,这是有道理的。我认为套接字选项正在设置 IP“服务类型”,但我不确定。看起来 setsockopt 有 5 个参数,但我只看到三个。我感觉这无关紧要。我不知道除了 ipfw 和系统偏好设置中的防火墙之外还有什么阻碍。我还尝试使用新安装的 postgresql 运行和不运行。
有什么见解吗?