天天看點

floating IP 原理分析 - 每天5分鐘玩轉 OpenStack(107)

上一節我們通過 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

繼續閱讀