深刻理解VMware虛擬機網絡通訊原理

   VMware虛擬機的上網方式有三種:NAT、橋接、僅主機模式,本篇介紹橋接模式和NAT模式。bash

 


 

1.實驗環境服務器

 

    博主的實驗環境以下:網絡

  • 宿主機操做系統:Windows 7編輯器

  • VMware Workstation版本:12.5.2 build-4638234oop

  • 虛擬機操做系統:CentOS 6.5測試

  • 虛擬機操做系統上網方式:橋接模式ui

    說明:爲了後面的測試正常,請務必將宿主機和虛擬機的操做系統的防火牆功能關閉。實際上虛擬機使用哪種操做系統是沒有影響的,爲了方便測試驗證,應該使用本身熟悉的操做系統。spa

    對於上網模式的設置,能夠參考下面的圖示:操作系統

wKioL1i1B9zwckGAAAGQazeNKVc539.png


 

2.橋接模式的理論知識rest

 

     當把咱們的虛擬機的上網方式設置爲橋接模式時,虛擬機、宿主機、各網卡之間的鏈接關係可用下圖來表示:

wKioL1i1CKzDDcCKAAFNypk6tUM774.jpg    事實上,上面的原理圖能夠等價爲下面的網絡拓撲圖:

wKiom1i1CPyjfB8eAADtU7dC2hA756.jpg    所以,當虛擬機使用橋接模式上網時,你能夠把這臺虛擬機徹底看做是宿主機所在局域中的一臺真實主機,它使用的網絡地址信息跟宿主機的徹底同樣。

    不過須要注意的是,因爲咱們的宿主機中可能會有多張網卡,所以,在VMware Workstation中,咱們是能夠設定咱們的虛擬機橋接到哪一張網卡上的:

wKioL1i1CfnzU21PAAG4MX81vJI873.png    如圖,博主是把當前的虛擬機橋接到宿主機的無線網卡上,所以虛擬機的網絡地址信息應該跟宿主機在無線網卡上所獲取到的網絡地址信息是在同一個網段的,即它們位於同一個局域網中。

 


 

3.在實踐中深刻理解橋接模式的網絡原理

 

    先在咱們的宿主機上查看網絡地址信息:

wKioL1i1CqnhFqbcAACFIp3sVy0010.png

    能夠看到宿主機所在局域網的IP地址段爲192.168.1.0/24,由於個人宿主機是接wifi來上網的,而且使用的是DHCP方式來獲取ip地址,因此咱們能夠在虛擬機上設置使用dhcp的方式來獲取IP地址,CentOS的dhcp配置以下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@leaf ~] # cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
HWADDR=00:0c:29:3b:4c:6d
TYPE=Ethernet
UUID=5ae16ecc-0149-487e-8dab-51afc75bd265
ONBOOT= yes
NM_CONTROLLED= yes
#BOOTPROTO=static
BOOTPROTO=dhcp
IPADDR=10.0.0.101
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=202.96.128.86
DNS2=202.96.128.166
IPV6INIT=no
USERCTL=no
PEERDNS= yes

    重啓CentOS的網絡服務:

1
2
3
4
5
6
7
[root@leaf ~] # /etc/init.d/network restart
Shutting down interface eth0:  [  OK  ]
Shutting down loopback interface:  [  OK  ]
Bringing up loopback interface:  [  OK  ]
Bringing up interface eth0:  
Determining IP information  for  eth0...  done .
[  OK  ]

    再查看IP地址信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@leaf ~] # ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:3B:4C:6D  
           inet addr:192.168.1.106  Bcast:192.168.1.255  Mask:255.255.255.0
           inet6 addr: fe80::20c:29ff:fe3b:4c6d /64  Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:31386 errors:0 dropped:0 overruns:0 frame:0
           TX packets:15738 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000 
           RX bytes:14467018 (13.7 MiB)  TX bytes:1726371 (1.6 MiB)
 
lo        Link encap:Local Loopback  
           inet addr:127.0.0.1  Mask:255.0.0.0
           inet6 addr: ::1 /128  Scope:Host
           UP LOOPBACK RUNNING  MTU:16436  Metric:1
           RX packets:239 errors:0 dropped:0 overruns:0 frame:0
           TX packets:239 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0 
           RX bytes:23198 (22.6 KiB)  TX bytes:23198 (22.6 KiB)

    這時能夠測試宿主機與虛擬機的連通狀況,在宿主機上ping虛擬機的IP地址:

wKiom1i1DGvTVWJKAACl0cLMD5A624.png

    或者在CentOS上ping宿主機:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@leaf ~] # ping 192.168.1.100
PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
64 bytes from 192.168.1.100: icmp_seq=1 ttl=128  time =0.530 ms
64 bytes from 192.168.1.100: icmp_seq=2 ttl=128  time =0.482 ms
64 bytes from 192.168.1.100: icmp_seq=3 ttl=128  time =0.508 ms
64 bytes from 192.168.1.100: icmp_seq=4 ttl=128  time =0.579 ms
64 bytes from 192.168.1.100: icmp_seq=5 ttl=128  time =0.447 ms
64 bytes from 192.168.1.100: icmp_seq=6 ttl=128  time =0.448 ms
64 bytes from 192.168.1.100: icmp_seq=7 ttl=128  time =0.552 ms
64 bytes from 192.168.1.100: icmp_seq=8 ttl=128  time =0.220 ms
^C
--- 192.168.1.100  ping  statistics ---
8 packets transmitted, 8 received, 0% packet loss,  time  7352ms
rtt min /avg/max/mdev  = 0.220 /0 .470 /0 .579 /0 .107 ms

    由於虛擬機和宿主機都是在同一個局域網中,因此正常狀況下它們確定是能夠互通的,當出現通訊不正常的狀況下,就須要注意看是不是由於開啓了防火牆而把數據丟棄掉,因此在這些測試中,都 是建議把防火牆關掉的。

    上面的IP地址信息,對應到前面的原理圖上,以下:

wKioL1i1DbTQAV4tAAFsZK1fF4A283.jpg    再將其用網絡拓撲圖來表示,就至關於:

wKioL1i1DeDCF_teAAEM7007D7Q761.jpg

    因此這樣一來咱們就很清楚,當VMware虛擬機使用橋接模式上網時,其背後的網絡通訊原理和細節的一個完整過程了。

 


 

4.下一步應該作什麼

 

    上面對於虛擬機使用的是DHCP分配的地址的方式,實際用手動分配也是能夠的,這時它同樣能夠和宿主機進行網絡通訊,能夠自行測試一下。

 


 

5.在實際當中的應用

 

    首先第一點是,當咱們的虛擬機出現網絡問題的時候,都是須要先了解清楚網絡的拓撲結構再進行網絡排錯的,因此上面的內容就爲咱們提供了很是好的理論與實踐知識。

    另外,若是能夠在理解這些網絡知識的前提下再去搭建各類服務,作各類測試,可讓咱們作到成竹在胸的一種狀態,而再也不是「霧裏看花,水中望月」了,相應在這樣的不斷嘗試中,咱們的綜合操做能力必定會變得更強。

    不過仍然須要說明的是,上面的圖解仍然只是作參考,其中的不少細節都是須要了解VMware Workstation的網絡虛擬化的細節才能夠真正瞭解清楚的,但無論怎麼說,上面的內容對於在網絡通訊上面,仍是能夠給咱們帶來很大的幫助的,真心但願能夠幫到你們!

    因爲能力和時間有限,若是發現有問題的,望及時指出。



1.實驗環境

 

    博主的實驗環境以下:

  • 宿主機操做系統:Windows 7

  • VMware Workstation版本:12.5.2 build-4638234

  • 虛擬機操做系統:Windows 7

  • 虛擬機操做系統上網方式:NAT模式

    說明:爲了後面的測試正常,請務必將宿主機和虛擬機的操做系統的防火牆功能關閉。

    對於上網模式的設置,能夠參考下面的圖示:

Windows 7的上網方式設置:

wKiom1ivpqiBcyE0AAZI7Km5pRc381.png

 


 

2.NAT模式的理論知識

 

    當把咱們的虛擬機的上網方式設置爲NAT模式時,虛擬機、宿主機、各網卡之間的鏈接關係可用下圖來表示:

wKioL1ivpTXhXCLbAALG94naNuk950.jpg    其實在看了上面的圖解分析以後,總體的網絡拓撲是很是清晰的,在接下來的步驟,就經過咱們的實驗環境來進行驗證。

 


 

3.在實踐中深刻理解NAT模式的網絡原理

 

    在實驗環境中咱們能夠看到,咱們是經過NAT方式來進行上網的,當設置好了NAT方式後,在虛擬機操做系統Windows 7中,查看IP地址信息:

wKiom1ivqNjx0VbrAAcv6FSEnUs387.png

    而這時候,你會發現,宿主機跟虛擬機的通訊是沒有問題的:

在宿主機上ping虛擬機:

wKioL1ivqkvCIRjbAACfMVAYhts241.png

    那麼爲何能夠正常通訊呢?以及虛擬機中的IP地址網段爲何是10.0.0.0/24的呢?

 

    當使用NAT模式上網時,VMware會自動爲咱們的虛擬機操做系統進行IP地址的分配,此時在虛擬機內部有一個DHCP服務器,而其所分配的地址網段是能夠在VMware中進行設置的。

    在VMware Workstation中選擇「編輯」—「虛擬網絡編輯器」,便可以進行設置:

wKiom1ivq8PD6khDAAcxD3MUL7o784.png    從上面能夠看到,這裏咱們設置的網段就是10.0.0.0/24了。

    另外咱們的宿主機是經過VMnet8這塊虛擬網卡來與虛擬機操做系統進行通訊的,你能夠在宿主機的網絡設置中看到這塊虛擬網卡:

wKioL1ivrFXDsM-_AAF20Qgljds267.png

    由於這塊虛擬網卡是用來與虛擬機操做系統進行通訊的,因此它所被分配的地址也是10.0.0.0/24的,能夠查看一下其地址:

wKioL1ivrN2zvqZbAAH_hZwqsZw171.png    因此實際上,當咱們的宿主機與虛擬機操做系統進行通訊時,是使用10.0.0.1這個源地址向虛擬機的操做系統發送數據包的。咱們能夠在虛擬機操做系統上去ping這個地址,會發現通訊是沒有問題的:

wKioL1ivrt6A1LysAAciH66DjMo017.png

    那麼對於虛擬機操做系統的網關10.0.0.2這個地址是在哪裏的呢?

    其實就是對應咱們上面網絡圖解中的NAT服務器的虛擬網卡地址,只是這個地址咱們只能經過在虛擬機操做系統中看到。

    因此將上面咱們所說起的地址以及網段信息,對應到咱們的圖解中去,以下:

wKioL1ivr5PzQxNdAAMSz2NTYXk509.jpg    這樣一來,總體的網絡信息就很是清晰了,另外上面能夠看到,宿主機物理網卡的地址爲192.168.1.100/24,這是個人筆記本所在局域網所分配給個人IP地址。

    經過上面的圖解分析,對於虛擬機操做系統的網絡通訊就能夠有很清楚的認識了:

 

  • 當虛擬機與宿主機進行通訊時:其實就是10.0.0.1/24與10.0.0.132/24這兩個地址進行通訊;

  • 當虛擬機與外網進行通訊時:虛擬機先把數據發送到網關10.0.0.2/24,而後再經過NAT服務器把地址轉換爲192.168.1.100/24,而後再與外網進行通訊;

  • 若是把Vmnet8這塊虛擬網卡禁用,仍是不影響虛擬機訪問互聯網,只是宿主機與虛擬機的通訊會受到影響,從上面的圖示中不難看出。

 

    這樣一來,通訊的過程就很是清晰了!此外,若是咱們有不少臺虛擬機,而且上網方式都爲NAT模式,那麼實際上就至關於這些虛擬機都位於同一個局域網當中,那麼虛擬機與宿主機的通訊、虛擬機訪問外網與上面的過程是同樣的,而虛擬機與虛擬機之間的通訊則是同一個局域網中的通訊,因此也沒有什麼問題,相應有了上面的圖解,這一切都會變得清晰不少。

 

    須要補充的是,對於虛擬機提供的DHCP服務和NAT服務,其實在咱們安裝VMware Workstation的宿主機上是能夠看到這些服務的:

wKioL1ivsX7yR7JRAAJqsckaXuk569.png    這樣一來也能夠與咱們的理論進行了必定的對應。

 


 

4.下一步應該作什麼

 

    能夠考慮有多臺虛擬機的狀況,正如上面所說的,能夠嘗試測試它們的連通性,對上面的圖解(尤爲重要)進行驗證,可是前提是你必定要具有必定的網絡知識。

 


 

5.在實際當中的應用

 

    首先第一點是,當咱們的虛擬機出現網絡問題的時候,都是須要先了解清楚網絡的拓撲結構再進行網絡排錯的,因此上面的內容就爲咱們提供了很是好的理論與實踐知識。

    另外,若是能夠在理解這些網絡知識的前提下再去搭建各類服務,作各類測試,可讓咱們作到成竹在胸的一種狀態,而再也不是「霧裏看花,水中望月」了,相應在這樣的不斷嘗試中,咱們的綜合操做能力必定會變得更強。

    不過仍然須要說明的是,上面的圖解仍然只是作參考,其中的不少細節都是須要了解VMware Workstation的網絡虛擬化的細節才能夠真正瞭解清楚的,但無論怎麼說,上面的內容對於在網絡通訊上面,仍是能夠給咱們帶來很大的幫助的,真心但願能夠幫到你們!

    因爲能力和時間有限,若是發現有問題的,望及時指出。

相關文章
相關標籤/搜索