Azure Firewall 非对称路由问题

    来看下这样的一个架构,web服务器默认路由指向FW,web服务器前有一个standard load balancer,web服务器是它的后端池,LB上配置了80端口的规则,web服务器本身没有公网IP,再这样的架构下,有两个问题 

   

  1. Web服务器是否能访问internet

  2. 在internet通过standard lb是否能访问web服务器上的nginx


    我们一个个来看,standard lb后端的服务器,默认是不能访问internet的,那么如果它的默认路由指向Firewall呢?

    经过测试发现,访问完全没有问题

Azure Firewall 非对称路由问题



    那么,第二个问题呢,首先来看下LB的配置,其实很简单

Azure Firewall 非对称路由问题



Azure Firewall 非对称路由问题


可以看到只是简单配置了一个80的规则

Azure Firewall 非对称路由问题





但是测试发现,lb的ip一直没办法ping通

Azure Firewall 非对称路由问题


    但是,在把指向FW的默认路由去掉之后,我们发现可以ping通了

Azure Firewall 非对称路由问题



    这是为什么呢?其实微软的文档已经给了我们解释

    这种现象叫非对称路由,理解上其实很简单,因为入站的时候是通过LB进来的,但是回去的时候因为默认路由的原因,却要从FW出去,FW上没有这个会话,就回导致把包丢掉


    非对称路由

    非对称路由是指数据包采用一条路径发往目标,并采用另一条路径返回到源。 如果子网的默认路由转到防火墙的专用 IP 地址,并且使用的是公共负载均衡器,则会出现非对称路由问题。 在这种情况下,将通过负载均衡器的公共 IP 地址接收传入的负载均衡器流量,但返回路径将通过防火墙的专用 IP 地址。 由于防火墙是有状态的,并且无法识别此类已建立的会话,因此会丢弃返回的数据包。

    

    Azure Firewall 非对称路由问题


    这个问题其实也是可以有办法解决的,官网的解释是说,如果防火墙后边跟的是public lb,则需要创建一个到防火墙public ip的UDR规则,下一条是internet,否则azure会通过默认路由发给防火墙的private ip,同时流量的入口也不能是LB,而应该是FW


    下边我们就来试下,整个流量是这样的FW -> Public Standard LB -> WEB

    首先,先在FW上配置到LB的NAT规则

Azure Firewall 非对称路由问题


    但是测试发现,端口连不上

Azure Firewall 非对称路由问题



    接下来再试下添加到FW 公网IP的路由

Azure Firewall 非对称路由问题



    这次终于访问成功了

Azure Firewall 非对称路由问题




    

上一篇:网络流


下一篇:day-3 json操作