OpenStack--網絡環境實踐(二)

本實驗將多臺物理主機中的虛擬主機組合,在主機A(計算節點)的虛擬主機形成局域網,同時通過主機B(控制節點)對外通信。。。

網絡拓撲圖

enter description here

外網地址規劃
主機A作爲計算節點,B作爲網絡控制節點,網關和DNS服務器爲爲192.168.153.2

主機 IP
A ens33 192.168.153.141/24
B ens33 192.168.153.142/24

內網網絡地址規劃

主機 IP
A ens37 192.168.10.1/24
B ens37 192.168.10.2/24

虛擬網絡地址規劃
10.0.4.200 -- 10.0.4.220由A主機網絡名稱空間dnsmasq提供

主機 IP
VM1 10.0.4.215/24
VM2 10.0.4.210/24
VM3 10.0.4.211/24
DHCP 10.0.4.224/24
NS rin0 10.0.4.223/24
NS rex0 192.168.153.145/24

OpenStack–網絡環境實踐(一)

橋接物理網卡設備

enter description here

如圖只需將虛擬交換機連到外網,即可通信~ 至於爲什麼加一個名稱空間,因爲名稱空間可以方便快捷的管理虛擬機局域網絡。

創建物理橋設備,並將網卡橋接到物理網卡上


vim /etc/sysconfig/network-script/ifcfg-br0

TYPE=Bridge
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.153.141
GATEWAY=192.168.153.2


# 清除ifcfg-ens33配置地址
 vim /etc/sysconfig/network-scripts/ifcfg-ens33 

TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes

# 重啓網絡並把物理網卡加到物理橋上
yum install bridge-uils
systemctl restart network && brctl addif br0

虛擬機與域名空間通信

給虛擬主機VM2添加網關

enter description here

可能遇到的問題:當默認網關存在多個時,ping報文可能不被送出
解決辦法:刪除其他默認的網關

在名稱空間打開路由轉發功能,使其能和域名空間內另一塊網卡通信

ip netns exec ns  sysctl -w net.ipv4.ip_forward=1

enter description here
現在能與網絡空間NS的另一塊網卡(IP:192.168.153.143)通信

虛擬機與宿主機同一網段內的其他主機通信

虛擬機處於路由模型向外發送數據,相應包無法送回,與宿主機的其他主機(192.168.153.143)不能通信,添加iptables NAT規則,變爲nat模型網絡向外通信…

ip netns exec ns iptables -t nat -A POSTROUTING -s 10.0.4.0/24 -j SNT --to-source 192.168.153.145 
ip netns exec ns iptables -t nat -A PREROUTING -d 192.168.153.145 -j DNAT --to-destination 10.0.4.210

ping宿主機內的其他主機

enter description here
主機能正常通信

192.168.153.143的主機抓包

[root@localhost ~]# tcpdump -i ens33 icmp -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
05:43:50.612719 IP 192.168.153.145 > 192.168.153.143: ICMP echo request, id 2561, seq 0, length 64
05:43:50.612766 IP 192.168.153.143 > 192.168.153.145: ICMP echo reply, id 2561, seq 0, length 64

主機與外網通信

主機不能與互聯網通信,在B主機ens37抓包查看原因

[root@localhost ~]# tcpdump -i ens37 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens37, link-type EN10MB (Ethernet), capture size 262144 bytes
03:00:48.272041 IP 192.168.10.1 > 192.168.10.2: GREv0, length 102: IP 10.0.4.210 > 59.110.231.224: ICMP echo request, id 3585, seq 238, length 64
03:00:48.272406 IP 192.168.10.2 > 192.168.10.1: GREv0, length 130: IP 10.0.4.253 > 10.0.4.210: ICMP net 59.110.231.224 unreachable, length 92   #報文能到達網關,網關回應沒有路由

觀察發現:報文能到達網關,網關回應沒有路由,於是在域名空間查看路由

[root@localhost ~]# ip netns exec ns route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.4.0        0.0.0.0         255.255.255.0   U     0      0        0 rin0
192.168.153.0   0.0.0.0         255.255.255.0   U     0      0        0 rex0

增加路由

[root@localhost ~]# ip netns exec ns route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.153.2   0.0.0.0         UG    0      0        0 rex0
10.0.4.0        0.0.0.0         255.255.255.0   U     0      0        0 rin0

虛擬機VM2添加域名解析主機

echo "nameserver 192.168.153.2" > /etc/resolve.conf

主機能與外網通信

enter description here

總結

  • GRE技術出現解決了虛擬機在主機之間通信的問題,當然同樣的技術還有Vxlan技術。
  • 這種網絡模型實現了虛擬機網絡,與真實主機網絡的隔離,可以方便的自定義網絡。控制節點添加一個IP號,即可映射一臺VM主機,這樣的外部的真實主機一樣的通信
  • 技術帶來無限可能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章