(我对网络有基本的了解)
所以我在另一篇文章中读到,解释说listen_addresses在登录前只涉及额外的安全层:How to configure postgresql postgresql.conf listen_addresses for multiple ip addresses
但我想知道的是为什么listen_address不必为您放入的ips放入CIDR格式。
在pg_hba.conf
中,##.##.##.##/##
代表CIDR格式。那么为什么postgresql.conf
的{{1}}只使用ip而没有子网掩码? (而且,我把两者的公共IP地址都放了,但是如果我把它放在listen_addresses
中就不允许访问,这意味着......?
附带问题(可能是子网):
亚马逊ec2不允许我使用我的公共IP地址/ 24,它必须是/ 32(说大小太小)但我把/ 24放在listen_address
这么清楚它是否有效?
答案 0 :(得分:6)
您无法在我所知道的任何操作系统中收听CIDR范围。实质上,会发生的事情是listen_addresses
与主机操作系统的一个或多个IP接口匹配,后者将PostgreSQL的侦听套接字绑定到这些接口。
listen_addresses
控制PostgreSQL可以接受连接的网络接口,而不是客户端可以连接到PostgreSQL的接口。
对于EC2,listen_addresses
不能包含您的公共IP,因为它不是主机上的本地接口。您必须侦听实际的网络接口,EC2通常是10.x.x.x专用IP。在实践中,除非您使用VPC并且已将多个接口添加到连接到不同子网的主机,否则在EC2上除了listen_addresses
之外的任何内容都没有必要设置*
。