上一節我們通過 Web UI 建立為 cirros-vm3 配置設定了浮動 IP,今天将分析其工作原理。
首先檢視 router 的 interface 配置:
可以看到,floating IP 已經配置到 router 的外網 interface qg-b8b32a88-03 上。 檢視 router 的 NAT 規則:
iptables 增加了兩條處理 floating IP 的規則:
1. 當 router 接收到從外網發來的包,如果目的位址是 floating IP 10.10.10.3,将目的位址修改為 cirros-vm3 的 IP 172.16.101.3。這樣外網的包就能送達到 cirros-vm3。
2. 當 cirros-vm3 發送資料到外網,源位址 172.16.101.3 将被修改為 floating IP 10.10.10.3。
下面我們通過 PING 測試一下。 在我的實驗環境中,10.10.10.1 是外網中的實體交換機,現在讓它 PING cirros-vm3。
能夠 PING 通。 我們通過 tcpdump 可用在 router 的 interface 上觀察 floating IP 的行為。
ext_net interface qg-b8b32a88-03 的 tcpdump 輸出:
可見,在外網接口 qg-b8b32a88-03 上,始終是通過 floating IP 10.10.10.3 與外網通信。
vlan101 interface qr-e17162c5-00 的 tcpdump 輸出:
當資料轉發到租戶網絡,位址已經變為 cirros-vm3 的租戶 IP 172.16.101.3 了。
小結一下:
1. floating IP 能夠讓外網直接通路租戶網絡中的 instance。這是通過在 router 上應用 iptalbes 的 NAT 規則實作的。
2. floating IP 是配置在 router 的外網 interface 上的,而非 instance,這一點需要特别注意。
至此,我們已經完成了 Neutron L3 服務連接配接不同 subnet,通路外網,以及 floating IP 的學習。
下節開始,我們将學習 Neutron 如何支援 VxLAN 網絡類型。
本文轉自CloudMan6 51CTO部落格,原文連結:http://blog.51cto.com/cloudman/1868301