我在 Amazon 云中创建了两个 ec2 实例,一个具有公共 IP(弹性 IP),另一个仅具有私有 IP 172.31.5.151。然后,将安全组设置为具有公共 IP 的实例以限制 https 入站访问(如 172.31.5.151/32),仅允许私有 IP 访问具有公共 IP 的实例。
但它不起作用。当从具有私有 IP 的实例到具有公共 IP 的实例进行 https 访问时,访问被拒绝。当我将 https 入站过滤器更改为 0.0.0.0/0 时,一切正常。问题是:如何为私有 IP 设置入站过滤器?
谢谢。
答案1
供参考,如果您使用 VPC,则需要区分安全组和网络 ACL
- 将安全组视为您的“实例防火墙”(因此您可以禁用实例软件防火墙,例如内部 iptables 或 Windows 防火墙)
- NACL 定义子网内允许/拒绝的流量(http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
您能否更精确地描述您想通过这两个实例实现的目标?
答案2
如果你可以从“私有”实例访问(任何)公共 IP,则它正在使用 NAT 实例,或者具有已分配公共 IP(如果在默认公共子网中启动,则默认如此)。无论如何,当您尝试访问“公共”实例时,源 IP(从安全组的角度来看)不是实例的私有地址,因此您需要根据公共 IP 地址授予访问权限。(要确认这一点,请将 0.0.0.0/0 添加到过滤器,连接到 https,然后检查 netstat 或 IIS 日志中的源 IP 地址)
也许更简单的解决方案是使用其私有 IP 地址访问“公共”实例。