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呢?

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

微信截图_20191229195142.png



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

扫描二维码关注公众号,回复: 8355687 查看本文章

2.png



3.png


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

4.png





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

5.png


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

6.png



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

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


    非对称路由

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

    

    7.png


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


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

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

8.png


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

9.png



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

10.png



    这次终于访问成功了

11.png




    

猜你喜欢

转载自blog.51cto.com/mxyit/2462929