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的配置,其實很簡單

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




    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章