AWS - Amazon / Technology · 2021年1月11日

ALB和NLB的区别是什么?如何禁止一个源IP?

我对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。