我已将 Postgres 配置为接受来自任何地方的网络连接:
在pg_hga.conf
:
host all all 0.0.0.0/0 md5
在postgresql.conf
:
listen_addresses = '*'
我可以看到服务器正在监听:
vagrant@vagrant-ubuntu-trusty-64:~$ sudo netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
<snip>
tcp 0 0 0.0.0.0:5433 0.0.0.0:* LISTEN 1570/postgres
我已将 iptables 配置为允许传入 TCP 连接到 5433:
vagrant@vagrant-ubuntu-trusty-64:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:5433
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
从虚拟机中的 ssh 会话,我可以运行telnet 10.0.2.15 5433
并且它可以工作。我还可以连接完整的 psql 客户端。在我的主机上,如果我运行相同的 telnet 命令或相同的 psql 命令,我将无法连接。
可能出了什么问题,我可以检查什么?
答案1
您的虚拟机的网络适配器默认处于 NAT 模式。这意味着您无法从外部通过 ssh/telnet/etc 连接到您的虚拟机。在虚拟机设置中切换到桥接,它应该可以工作。