AWS: 如何在EC2上设置Postgres安全性

4

我在亚马逊有两台机器,web01和db01。我在db01上安装了PostgreSQL,并将web01的弹性IP添加到pg_hba.conf文件中。

host dbname username 64.210.245.155/32 md5

我重新启动了PostgreSQL服务。现在在web01上,我尝试连接到db01的弹性IP。

$ psql -h 64.210.255.222 -U user -d database
psql: could not connect to server: No route to host
    Is the server running on host "64.210.255.222" and accepting
    TCP/IP connections on port 5432? 

我还将web01的弹性IP添加到db01的安全组中,用于入站流量。 我做错了什么,如何让web01连接到db01上的pg?
1个回答

3

首先,您需要连接到内网IP。如果您的弹性IP具有DNS名称,则可以使用该名称,因为它将解析为AWS内部IP,而无需直接使用弹性IP。

其次,所有公共IP都是通过NAT分配的。如果您的服务尝试侦听该IP地址,则会失败。通常最好的做法是侦听所有IP,除非您使用VPC并控制内部IP。

最后,您需要在数据库安全组中提供对Web安全组的访问权限。即使两个实例位于同一安全组中,它们也无法相互访问,除非该组被授予访问自身的权限。


嗨@datasage,感谢您的回答,我有一个快速问题,内部IP是动态的吗?我认为是这样的。如果是这种情况,我该如何配置我的应用程序进行连接? - David Williams
在VPC之外,但是通过使用弹性IP的DNS名称,你将能解析到实例的当前内部IP地址。所有的DNS名称都遵循相同的模式。 - datasage
谢谢,我懂了。顺便说一下,我想我需要一点时间来理解答案,因为我不是一个很好的系统管理员…… - David Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接