我对ALB和NLB的理解一直比较简单:一个是“七层”的LB,一个是“三层”的LB。
也就是说,ALB看的是高层协议里面的内容,比如HTTP的Method。而NLB只能对网络层或者传输层的东西进行判断。
但这里隐含了一点,就是ALB的“七层”的意思中,包含着“网络层中断”的意思。
可以理解为Proxy。
换句话说,用了ALB,那么后边EC2收到流量的时候,看到的是ALB的IP(私有),而不是源客户端的。
而NLB在这里是把网络包转发,相当于路由器。也就是EC2收到流量看到的是源客户端的IP。
这个很重要。这个代表着,EC2自己做针对IP的防护不是很推荐,因为不同情况下,看到的源地址不一样。
ALB和NLB还一个不一样,是ALB有security group。
其实也挺好理解,七层嘛,能够看到更多信息,有security group正常。
而三层,有ACL。不过已经有了VPC的Network ACL。
话说NACL确实是禁止一个IP最好的方法。
不过也有例外。
这个例外就是如果你用了CloudFront。CloudFront是放在VPC外面的,最靠近客户端。
因此在CloudFront转发到VPC时,这时候源IP是CloudFront的。那就不能用NACL来过滤源IP了。
只能在CloutFront上做。怎么做?用WAF IP address filtering。

