外网访问原理分析
本節(jié)我們會(huì)將上節(jié)創(chuàng)建的 ext_net 連接到 router,并驗(yàn)證內(nèi)外網(wǎng)的連通性。
更重要的,我們會(huì)分析隱藏在表象之下的原理。
將外網(wǎng)連接到 Neutron 的虛擬路由器,這樣 instance 才能訪問(wèn)外網(wǎng)。
點(diǎn)擊菜單 Project -> Network -> Routers 進(jìn)入 router 列表。
點(diǎn)擊 router_100_101 的 “Set Gateway” 按鈕。
在 “External Network” 下拉列表中選擇 ext_net,點(diǎn)擊 “Set Gateway”。
外網(wǎng)設(shè)置成功。
我們需要看看 router 發(fā)生了什么變化。 點(diǎn)擊 “router_100_101” 鏈接,打開(kāi) “Interfaces” 標(biāo)簽頁(yè)
router 多了一個(gè)新的 interface,IP 為 10.10.10.2。 該 interface 用于連接外網(wǎng) ext_net。
查看控制節(jié)點(diǎn)的網(wǎng)絡(luò)結(jié)構(gòu),外網(wǎng) bridge 上已經(jīng)連接了 router 的 tap 設(shè)備 tapb8b32a88-03。
在 router 的 namespace 中查看 tapb8b32a88-03 的 veth pair 設(shè)備。
該 veth pair 命名為 qg-b8b32a88-03,上面配置了 IP 10.10.10.2。
router 的每個(gè) interface 在 namespace 中都有對(duì)應(yīng)的 veth。 如果 veth 用于連接租戶網(wǎng)絡(luò),命名格式為 qr-xxx,比如 qr-d568ba1a-74 和 qr-e17162c5-00。 如果 veth 用于連接外部網(wǎng)絡(luò),命名格式為 qg-xxx,比如 qg-b8b32a88-03。
查看 router 的路由表信息。
可以看到默認(rèn)網(wǎng)關(guān)為 10.10.10.1。 意味著對(duì)于訪問(wèn) vlan100 和 vlan101 租戶網(wǎng)絡(luò)以外的所有流量,router_100_101 都將轉(zhuǎn)發(fā)給 ext_net 的網(wǎng)關(guān) 10.10.10.1。
現(xiàn)在 router_100_101 已經(jīng)同時(shí)連接了 vlan100, vlan101 和 ext_net 三個(gè)網(wǎng)絡(luò),如下圖所示:
下面我們?cè)?cirros-vm3 上測(cè)試一下。
cirros-vm3 位于計(jì)算節(jié)點(diǎn),現(xiàn)在已經(jīng)可以 Ping 到 ext_net 網(wǎng)關(guān) 10.10.10.1 了。 通過(guò) traceroute 查看一下 cirros-vm3 到 10.10.10.1 的路徑
數(shù)據(jù)包經(jīng)過(guò)兩跳到達(dá) 10.10.10.1 網(wǎng)關(guān)。 1. 數(shù)據(jù)包首先發(fā)送到 router_100_101 連接 vlan101 的 interface(172.16.101.1)。 2. 然后通過(guò)連接 ext_net 的 interface(10.10.10.2) 轉(zhuǎn)發(fā)出去,最后到達(dá) 10.10.10.1。
當(dāng)數(shù)據(jù)包從 router 連接外網(wǎng)的接口 qg-b8b32a88-03 發(fā)出的時(shí)候,會(huì)做一次 Source NAT,即將包的源地址修改為 router 的接口地址 10.10.10.2,這樣就能夠保證目的端能夠?qū)?yīng)答的包發(fā)回給 router,然后再轉(zhuǎn)發(fā)回源端 instance。
可以通過(guò) iptables 命令查看 SNAT 的規(guī)則。
當(dāng) cirros-vm3(172.16.101.3) Ping 10.10.10.1 時(shí),可用通過(guò) tcpdump 分別觀察 router 兩個(gè) interface 的 icmp 數(shù)據(jù)包來(lái)驗(yàn)證 SNAT 的行為。
vlan101 interface qr-e17162c5-00 的 tcpdump 輸出:
ext_net interface qg-b8b32a88-03 的 tcpdump 輸出:
SNAT 讓 instance 能夠直接訪問(wèn)外網(wǎng),但外網(wǎng)還不能直接訪問(wèn) instance。
因?yàn)?instance 沒(méi)有外網(wǎng) IP。 這里 “直接訪問(wèn) instance” 是指通信連接由外網(wǎng)發(fā)起,例如從外網(wǎng) SSH cirros-vm3。
這個(gè)問(wèn)題可以通過(guò) floating IP 解決,下一節(jié)我們將討論浮動(dòng) IP。
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhaohongtian/p/6811588.html
總結(jié)
- 上一篇: 什么情况信用卡会被风控?信用卡被风控了如
- 下一篇: sshfs的挂载与卸载