如何为多个IP地址配置postgresql postgresql.conf listen_addresses


70

我可以很好地连接到一个远程PostgreSQL服务器,该服务器对pg_hba.conf中的几个IP有连接限制,但是如果您在postgresql.conf文件中listen_addresses设置为"*",就足够了吗?

该文件表明该参数可以采用逗号分隔的IP地址列表,但是如果我这样做,我将失去远程连接的能力。

postgresql-8.4.9 Rhel


2
我想确保仅在本地或从两个远程ip建立连接。我已经在pg_hba.conf中成功配置了它,但是应该将listen_addresses设置为什么?
chrismarx 2012年

1
不幸的是,由于该问题已经关闭,我无法回答。答案:listen_addresses = 'localhost, 192.168.1.10'
jap1968年

7
以及“问题外”这个问题到底是怎么回事
chrismarx

1
@chrismarx,因为它不完全是关于编程的。您应该在另一个StackExchange网站(例如dba.stackexchange.comsuperuser.com)上询问过它。
Matthieu

1
根据此信息:dbrnd.com/2018/04/…,您可以这样操作:listen_addresses = '192.168.0.10, localhost, 192.168.1.8'
user2173353'2

Answers:


94

listen_addresses控制服务器将在哪个IP上应答,而不控制服务器将允许从其进行身份验证的IP。使用它是完全合理和正常的,listen_addresses '*'因此服务器将接受分配给postgresql服务器主机上接口的任何ip上的传入连接,而使用pg_hba.conf可以在更细粒度的级别上控制访问服务器将接受来自哪个IP的IP。特定的数据库和用户。


好的,这就是我想知道的问题,因此无法解决用逗号分隔列表的问题。谢谢!
chrismarx 2012年

1
编辑使pg_hba.conf控件登录更加明确。服务器仍然在任何侦听接口上接受TCP / IP连接,并与连接的客户端进行对话。它很快得出结论,客户端不在允许的IP范围内,并关闭连接。这意味着除其他外,预身份验证漏洞利用可以pg_hba排除在外,但如果Pg根本不监听漏洞利用的接口,则无法使用。防火墙规则而非listen_addresses答案就是答案。
Craig Ringer

这个解决方案在postgres 9.1上对我有用。感谢@CraigRinger
ted.strauss 2013年

@CraigRinger这对我来说仍然不清楚,您评论中的代词使我感到困惑。您是说尽管有listen_addresses,但预授权漏洞利用还是有可能的pg_hba?换句话说,Postgres服务器使用客户端来识别listen_addresses规则,或者该listen_addresses规则是否阻止了服务器-客户端的参与?
罗勒·布尔克

1
/etc/postgresql/11/main/postgresql.conflisten_addresses 在Ubuntu上添加的地方
gies0r '19

7

dbenhur指出,将listen_addresses设置为'*'是正常的。另外,您可以使用iptables之类的工具来拒绝访问某些远程IP之外的端口。您甚至可以做到这两者:安全性冗余不一定是一件坏事(尽管依靠IP地址安全性并不是很好)。


是的,已经有基于ip的防火墙,只是在尝试确保一切都配置为最佳状态
chrismarx 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.