
我有一個 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。
-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 嗎?