我有一个 VPC,其中在私有子网中部署了一个 EC2 实例。
我的 NACL(子网防火墙)允许所有入站和出站。
我有我的安全组规则(Ec2 防火墙),它在入站规则上阻止公共 IP,并在出站规则上允许公共 IP。
现在我的 EC2 实例启动与呼叫提供商(twilio)的连接并发起呼叫,并且成功。
从我的 ec2 应用程序,它发起三方握手,由于我的出站规则是允许所有它通过 NAT 到达 twilio。数据包将类似于(源 IP:是 NAT IP 和随机端口号,目标 IP:是 twilio IP 和服务侦听端口号)
然后,twilio 接受请求并向 ec2 服务器提供 SYN-ACK 响应。现在数据包将是(源 ip:twilio ip 和随机端口号,目标 ip:是 Ec2 实例的 NAT ip,端口号是(Ec2 源启动的随机端口号)。)
现在我的问题是,即使入站规则不允许 twilio ip 地址,三次握手是如何成功的?
答案1
AWS 安全组是有状态的。
如果您从实例发送请求,则无论入站安全组规则如何,该请求的响应流量都可以流入。无论出站规则如何,允许的入站流量的响应都可以流出。
即使您阻止通过安全组入站的公共 IP 地址,您仍允许出站连接,从而允许返回流量/握手。
参考