2012-03-19 125 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