2012-03-19 31 views
43

我可以很好地連接到一個遠程postgresql服務器,該服務器在pg_hba.conf中有幾個ips的連接限制,但如果您將listen_addresses設置爲「 *「在postgresql.conf文件中?如何爲多個IP地址配置postgresql postgresql.conf listen_addresses

該文件表明該參數可以採用逗號分隔的IP地址列表,但如果我這樣做,我失去了遠程連接的能力。

其IPS服務器回答的,不是哪個

的PostgreSQL-8.4.9 RHEL

+0

允許來自任何IPv4地址的連接的默認約定是'0.0.0.0'。我希望這可以幫助你。 – MrGomez 2012-03-19 02:04:10

+2

我想確保連接只能在本地或從兩個遠程ips進行。我已經在pg_hba.conf中配置成功,但listen_addresses應該設置爲 – chrismarx 2012-03-19 02:08:34

+0

您是否嘗試過像'192.168.0.1,192.168.0.2,127.0.0.1'這樣的CSV?在最後一種情況下,'127.0.0.1'是系統的RFC兼容環回地址。有關詳細信息,請參閱此文檔:http://www.rfc-editor.org/rfc/rfc3330.txt – MrGomez 2012-03-19 02:12:30

回答

59

listen_addresses控制IPS服務器將允許連接從進行身份驗證。使用listen_addresses '*'是完全合理和正常的,因此服務器將接受分配給postgresql服務器主機上的接口的任何ip的傳入連接,同時使用pg_hba.conf來控制訪問的更細粒度級別,服務器將爲其接受登錄的IP數據庫和用戶。

+0

好的,這就是我想知道的,使得在那裏得到逗號分隔列表的問題。謝謝! – chrismarx 2012-03-19 13:52:48

+0

經編輯可以更明確地說明'pg_hba.conf'控制* login *。服務器仍然接受任何偵聽接口上的TCP/IP連接,並與連接客戶端進行會話。它很快就會得出結論,客戶端不是來自允許的IP範圍並關閉連接。這意味着pre-auth漏洞利用可以在pg_hba排除的情況下工作,但如果Pg沒有在利用漏洞的接口上進行偵聽,那麼就不會。防火牆規則,而不是'listen_addresses',是答案。 – 2012-11-11 10:01:38

+0

這個解決方案在我的postgres 9.1上工作。謝謝@CraigRinger – 2013-03-30 14:26:38

2

設置listen_addresses爲'*'是正常的,正如dbenhur指出的那樣。你也可以使用諸如iptables之類的工具來拒絕訪問遠離特定遠程IP的端口。你甚至可以這樣做:安全冗餘並不一定是壞事(儘管依靠IP地址安全並不是那麼好)。

+0

是的,已經有了基於IP的防火牆,只是試圖確保一切都被配置爲最佳狀態 - – chrismarx 2012-03-19 13:53:21