我有一个 postgres 9.1 服务器在 Ubuntu 12.04 云服务器上的默认端口 5432 上运行。
我想打开端口,这样我就可以进行远程查询 - 但我必须在 IP 表上打开端口,这需要我指定一个协议。这个文档没有提到TCP/UDP等。
我应该在 IP 表中允许使用什么协议?
答案1
该协议是普通的 TCP/IP。
来自 posgresql 文档关于“前端”和“后端”协议:
PostgreSQL 使用基于消息的协议在前端和后端(客户端和服务器)之间进行通信。该协议支持TCP/IP也可以通过 Unix 域套接字。端口号5432已在 IANA 注册为支持该协议的服务器的惯用 TCP 端口号,但实际上可以使用任何非特权端口号。
所以关于iptables使用该tcp
协议,因为 Unix 域套接字不适用于网络。
iptables例子:
iptables <other_options> -p tcp -dport 5432 -j ACCEPT
笔记:
正如莱肯斯坦,考虑通过该网络连接激活 SSL 是特别明智的选择(请参阅有关 postgresql 的文档使用基于 SSL 的 TCP)。这iptables在这种情况下,规则不会改变:相同的端口(5432),相同的协议(tcp)。
答案2
默认情况下,PostgreSQLt 侦听 TCP 端口 5432。使用以下 iptables 规则允许传入客户端请求(打开端口 5432)。
-A INPUT -p tcp --dport 5432 -s xxx.xxx.xxx.xxx -j ACCEPT
其中 xxx.xxx.xxx.xxx 是您连接的服务器的 IP,因此您不会向外界开放 postgres。
答案3
-A INPUT -p tcp --dport 5432 -s xxx.xxx.xxx.xxx -j ACCEPT
该命令会更改 pg_hba 吗?