虛擬機與互聯網

vmware   三種網絡連接上網設置: TPQ%L@^ L+  
WH#1 zv  
1.bridge : 
q<x/Hat)  
默認使用 vmnet0
 p;`>e>$  
將虛擬機的 ip 設置與主機同網段未使用 ip, 其餘與主機相同 :
 hIYNhZv  
例如主機 ip 是 10.70.54.31, 設置虛擬機 ip 爲 10.70.54.22 。 netmask,broadcast,gateway,dns 都與主機相同即可實現虛擬機 <---> 主機 虛擬機 <----> 互聯網 通信。
 >mbHy<<  
gs^Xf;g vI  
2.nat :
 (U D nsF  
默認使用 vmnet8
 CImWd.W9~  
將虛擬機設置成使用 dhcp 方式上網 ,windows 下選擇 " 自動獲取 ip",linux 下開啓 dhcp 服務即可
 h ]5(].  
也可以手動設置 :
 Y1 w9y  
ip 設置與 vmnet8 同網段 ,gateway 設置成 vmnet8 的 gateway(/etc/vmware/vmnet8/nat/nat.conf) 中可以查到 vmnet8 的 gateway, 通常是 xxx.xxx.xxx.2 。
 7(1|xYCx$  
netmask,broadcast 設置與 vmnet8 相同 ,dns 設置與主機相同。
 ,hDW Ps2S  
例如 vmnet8 ip:172.16.249.1 gw :172.16.249.2
 7uqzm  
虛擬機設置 : ip :172.16.249.100 gw: 172.16.249.2
 Ot0ap$&  
{S]}.7`l9(  
3.host-only :
 (Bb5?fw  
默認使用 vmnet1
 P7bMIe  
e-/&$Qq  
將虛擬機 ip 設置與 vmnet1 同網段 ,gateway 設置成 vmnet1 的 ip, 其餘設置與 vmnet1 相同 ,dns 設置與主機相同
 *->W^1eGM  
例如 vmnet1 ip :172.16.245.1
 caR<Kb:;*  
虛擬機設置 : ip :172.16.245.100 gateway :172.16.245.1
 f1RWP@iar  
這樣就實現了虛擬機 <---> 主機 通信 , 但是 虛擬機 <---> 互聯網 仍無法通信
 #<"~~2?  
sRR( `0Zp  
虛擬機與互聯網通信:
 VR8-&N  
1. 開啓主機路由功能
 QD&`^(X1p  
2. 設定 iptables ,使主機成爲一臺 nat server
 %)8}X>xq  
1. echo 1 >/proc/sys/net/ipv4/ip_forward 這樣就主機就具有了路由功能
 nsC3  
2. iptables -t nat -A POSTROUTING -o eth0 -s 172.16.245.0/24 -j MASQUERADE
 E?f-wQF  
這條規則意思是將來自 172.16.245.0/24 封包的來源 ip 僞裝成 eth0 的 ip ,實現虛擬機與互聯網通信
 rl;~pO5R9  
如果網絡接口是 ppp+ 或 pppoe 則需要修改成 -o pppoe 
z (wc0I  
當然 -s 172.16.245.0/24 也要根據實際情況修改
 K#d`Hyx  
9G5rcYi  
nPl?K:(  
6,"Q=9k4[  
虛擬機的網絡設置(原理篇)
 }@+0/ W?\.  
}!r|1$,kL  
在正式開始之前,我想有必要先來學習一些必要的網絡知識。否則,在不懂得任何原理的情況下依葫蘆畫瓢雖然可解一時之需要,但遇到具體情況改變的情況下就只能乾瞪眼了。由於篇幅限制,這裏只講和VMware設置有關的一點簡單網絡知識。
 *vxk@ `K~  
sIGMA$EK  
1,什麼是網絡?
 E,U+o $  
,/F~ Y&1I  
Internet 是指"互連網",好象這句話說的有點多餘,不過確實有很多人對他有錯誤的理解,"互連網"是指一個個網絡互連,而不是像有些人想象的那樣把一臺臺電腦雜亂無章的互連。當我們需要用電腦和遠方的電腦通訊的時候,先把本地電腦組成一個網絡,當然,遠方的電腦也要組成一個網絡,在把這兩個網絡"互連"起來,組成 "互連網"。用電話線和MODEM撥號上網的時候是通過電話線先把自己的電腦連到ISP(Internet Service Provider 網絡服務提供商)的網絡中,再經過ISP的網絡和世界各地的電腦通信。
 [D4SW#  
?mxMk6w  
2,電腦如何通過網絡傳遞數據?
 /]Md~=yNp  
agDM~=#F  
每一個網絡需要一個網絡地址,網絡中的電腦需要一個在網絡中唯一確定的標識,網絡號和電腦的標識號組成了IP地址,所以IP地址是由網絡號和主機號組成的。當你的電腦要和其他的電腦通信的時候,電腦會先根據IP地址和子網掩碼確定目標主機是在本地網絡中還是在遠程網絡中,如果在本地網絡中則直接把一個包含信息的IP 數據包發送到本地網絡上,目標主機會檢測到並接收,如果目標主機在遠程網絡則需要通過一臺被稱爲網關的的電腦轉發到遠程網絡,網關(geteway)可以看做是連接網絡和網絡的橋樑,網關的概念很廣,這裏爲了簡化起見,我們暫且認爲它和路由器是同一個概念。路由器(router)是一種連接網絡和網絡,並選擇IP數據包傳送的路徑的一臺特殊計算機。很多情況下網關的概念等同於路由器。
 3ym',q  
~-Qw.EdC  
3,網絡中電腦的IP地址有何要求?
 ZG8DIV\D7  
^A&1^B  
在同一個網絡中,每臺電腦必須具有相同的網絡號,這樣電腦才認爲目標主機是在本網絡中並且可以正確送達,如果網絡號不同,即使目標主機已經用網線連到本網絡中數據也不能直接送達,即使這兩臺電腦近在咫尺,在電腦看來仍舊是一臺遠程電腦.比如一個網絡的網絡號爲192.168.0,則該網絡中的計算機的IP地址必須以192.168.0開頭。假如要傳送一個數據包到網絡號爲192.168.1的網絡,則必須通過路由器轉發,如果該網絡中沒有路由器,則發送失敗。因此,爲了連接兩個網絡,一臺路又器至少要有兩個網絡接口(網卡、調制解調器等聯網設備稱爲網絡接口)。網絡和路由器的關係見下圖:
 sBg.u  
z,p~z*4  
[]1C$.5DD  
KRRdXx\~  
iz PDd{[  
/7F:T[  
--------------- -------------- --------------
 E]-/Zbvdv  
| 網絡A | | 路由器 | | 網絡B |
 g:8h|w)  
| | | | | |
 {cVEmvE8  
| □--|-----------|--□ □--|----------|--□ |
 `|& O*`  
| 1 | | 2 3 | | 4 |
 ;iL#7NG-R  
--------------- -------------- --------------
 BUXpC xQ  
j'"J%e]  
n9ej7oj  
圖 一
 VTY 5]|;  
@<EO` L)Z  
圖中的小方框表示網卡或其他網絡接口。
 u <v7;dF|s  
可以看到路由器至少有兩個網絡接口。
 _ *Pf  
假設網絡A的地址爲192.168.0 網卡1的地址爲192.168.0.1
 *_\_'@1|J)  
網絡B的地址爲192.168.1 網卡4的地址爲192.168.1.1
 B>P{A7Q  
則路由器上的網卡2必須屬於網絡 192.168.0 地址爲192.168.0.x (x爲任意小於255的數)
 >7DhTM-A  
路由器上的網卡3必須屬於網絡 192.168.1 地址爲192.168.1.x (x爲任意小於255的數)
 R%[ c;i  
就是說,路由器既屬於網絡A,又屬於網絡B,這樣才起到橋樑的作用。
 )irEM  
當數據從網絡A發往網絡B時,路由器從網卡2接收數據,經過改裝後通過網卡3發送數據到網絡B。
 YNsJZnGr8#  
%:* YO;dw'  
這樣,我們稱網卡2的地址 192.168.0.x爲網絡A的網關
 cTTL1SW  
網卡3的地址 192.168.1.x爲網絡B的網關
 3AN/ H  
onxLyx|A  
a<bwzX|.  
4,VMware虛擬機提供了那些虛擬網絡設備?
 Q>Yjy!. <^  
t\7[f >  
默認安裝的情況下VMware提供了虛擬網卡vmnet1和vmnet8,還有在虛擬系統上的虛擬網卡 "AMD PCNET Family PCI Ethernet Adapter"
 >tW#/\x{  
U&p${IcEm  
請注意,vmnet1和vmnet8是主系統上虛擬設備,用ifconfig命令可以看到,而"AMD PCNET Family PCI Ethernet Adapter"是虛擬系統上的虛擬設備,在安裝完虛擬系統後可以在設備管理器中看到,前兩個隸屬於真實系統,是你的真實電腦中的設備,後一個隸屬於虛擬系統,是虛擬電腦中的設備,不要搞混淆。
 Lw>N rY(Y  
p0vVkdd  
--------------- -------------- --------------
 97!;.f-  
| 網絡A | | 路由器 | | 網絡B |
 * 0=j?~&  
| | | | | |
 ~Z' ?LV<t  
| □--|-----------|--□ □--|----------|--□ |
 FU4L6n  
| 1 | | 2 3 | | 4 |
 'TB2:W3  
--------------- -------------- --------------
 --BW 9]FW  
"3Y0`&:D  
o?Oc7 $+u  
---------------- ------------------------- --------------
 eTcd"Kd/  
| 虛擬系統 | | 主系統(路由器) | | 真實網絡 |
 .HABNPNg(  
| | | | | |
 sK?twg;D*|  
| □--|-----------|--□ □<--->□-----|------|--□ |
 +9sQZB# (  
|AMD PCNET卡 | |vmnet1 vmnet8 真實網卡 | | 4 |
 5*u+q2\F  
---------------- ------------------------- --------------
 ) ;Y;Q  
>Y@H4LF;1x  
圖 二
 W: z;|FF  
@d1Q"9}B  
讓我們來和上面的網絡和路由器的關係做一個比對。
 Bdpy:'fJn  
可以看到要想虛擬系統和主系統通信必須使AMD PCNET 網卡和vmnet1組成一個網絡。
 <b*DQ:N  
而vmnet1本來就在主系統中,系統可以直接訪問,所以主系統又充當了路由器的功能,只要有這兩個虛擬設備主系統和虛擬系統就可以通訊。
 M&M 6;Ph  
gbD KE{  
SSzIih@u  
關鍵在於三點:
 Q22 GIr  
1.確定網卡AMD PCNET和vmnet1的網絡號相同。
 kD"{g#c  
2.在虛擬系統裏設置網絡屬性,把網關地址設爲vmnet1的地址。
 |u p  
3.開啓主系統的路由功能,使它成爲一臺路由器。
 ZS o )   
%\:Wi#w>  
事實上,如果你只需要虛擬系統和主系統通信,而不需要和主系統所在的真實網絡上的其他主機通信的話只要滿足第一點就可以了。因爲滿足第一點,主系統和虛擬系統就在同一網絡中了,不需要路由器便可通信。但是大多數情況下我們需要虛擬系統和主系統所在的真實網絡通信,這就需要滿足其他兩點了。
 llDkJ)\  
w&.a QGR#  
虛擬機的網絡設置(實施篇)
 #4;wjcGWw  
]e V8b*d6  
1, 我們先來讓虛擬系統和主系統聯繫上。
 ]/{)bpu  
!bP@n  
在VMware安裝的時候安裝程序會自動給vmnet1分配一個IP地址,下面是筆者電腦上例子:
 )LCHy^'  
?&uu[y  
vmnet1 Link encap:Ethernet HWaddr 00:50:56:C0:00:01
 qxJ\ye+'*  
inet addr:192.168.221.1 Bcast:192.168.221.255 Mask:255.255.255.0
  _','9|  
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 2+WaA ,   
RX packets:191 errors:0 dropped:0 overruns:0 frame:0
 Fs^Mw g o  
TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
 [KQ6Ta.  
collisions:0 txqueuelen:100
 EBmt9S  
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
 LXCx~;{\  
Xlt|nX~#;  
在第二行可以看到安裝程序給vmnet1分配的IP地址爲192.168.221.1(注意每次安裝VMware IP地址是隨機分配的,實際的情況與這裏的例子會不同)。即虛擬網卡vmnet1屬於網絡192.168.221。因此,我們需要啓動虛擬系統,設置網絡屬性,把虛擬系統的網卡"AMD PCNET Family PCI Ethernet Adapter"的IP地址設置爲192.168.221.x (x爲除1以外2~254之間的任意數字筆者把它設置爲2),把網關設置爲vmnet1的地址:192.168.221.1(如果不和外界真實網絡通信的話網關可以不設)
 h FBe,'3M  
P1f[% 1  
windows 2000和XP 設置後立即生效,win98需要重新啓動,linux需要重新啓動網絡服務:
 Z5]>pJFq,  
#service network restart
 @=f\<"$vt  
p{dj~ &v  
在主系統上ping一下虛擬系統:
 a"u0Q5J  
#ping -c 3 192.168.221.2
 6D_D';o  
w@fi{H(R  
PING 192.168.221.2 (192.168.221.2) from 192.168.221.1 : 56(84) bytes of data.
 13/]DF,S"^  
64 bytes from 192.168.221.2: icmp_seq=1 ttl=128 time=6.91 ms
 he hFEyx  
64 bytes from 192.168.221.2: icmp_seq=2 ttl=128 time=0.425 ms
 }\k"n{!"  
64 bytes from 192.168.221.2: icmp_seq=3 ttl=128 time=0.527 ms
 |#N&akC  
@"H >niG  
--- 192.168.221.2 ping statistics ---
 0_t!T'jr7  
3 packets transmitted, 3 received, 0% loss, time 2001ms
 ;,e2e gC'  
rtt min/avg/max/mdev = 0.425/2.623/6.917/3.036 ms
 3sZ\0P}   
Thit  
yeah!通了!
 du^J2m{f  
!g2+w$YVa  
再在虛擬系統上ping主系統:
 cYt!n5w~W  
cExS7~*  
C:\>ping 192.168.221.1
 d6 5L!4  
XpJ7o=?W3  
Pinging 192.168.221.1 with 32 bytes of data:
 &.?'i1!  
~Jz6O U*z  
Reply from 192.168.221.1: bytes=32 time<10ms TTL=64
 _aT5jR=  
Reply from 192.168.221.1: bytes=32 time<10ms TTL=64
 )Z9>$V$j  
Reply from 192.168.221.1: bytes=32 time<10ms TTL=64
 B0]~el  
Reply from 192.168.221.1: bytes=32 time<10ms TTL=64
 QMbOuw  
u:_,GQ )\  
Ping statistics for 192.168.221.1:
 kpN)zxfk  
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
 Z>5b;8  
Approximate round trip times in milli-seconds:
 }S<2A7)el  
Minimum = 0ms, Maximum = 0ms, Average = 0ms
 OYTkV}tG  
j HJ`,#  
yeah!又通了!主系統和虛擬系統順利聯繫上啦!
 : E )>\&  
8NAON5.!  
2, 讓虛擬系統和主系統所在的真實網絡通信
 8>i n_h9  
,M ^<CJ  
首先在你的電腦上需要有一塊與真實網絡相連真實的網卡(如圖二所示)。vmnet8就在與真實網絡通訊的時候起作用了,vmnet8會和真實網卡對應起來,虛擬系統要發送數據包到真實網絡中的時候,真實系統是一臺路由器,首先數據發到虛擬網卡vmnet1,然後經過路由器(這裏就是主系統linux)發到 vmnet8,由於vmnet8和真實網卡是對應起來的,這一機制是有vmware完成的,所以發到vmnet8上的網卡就等於傳送到了真實網卡上,然後數據包再通過真實網卡發送到真實網絡,整個過程請看圖二。如果你的系統上有兩塊以上的真實網卡,在安裝的時候安裝程序會詢問把虛擬網卡對應到哪個真實網卡上。可以根據實際情況選擇。
 a'yK~;+_9  
|"CZT#  
把vmnet8的IP地址設置爲和真實網卡在同一網絡的地址,假設真實網絡的網絡號爲192.168.0,真實網卡的IP地址爲192.168.0.1則可設置vmnet8的IP地址爲192.168.0.2
 Zw S F^  
在linux中方法如下:
 eF-."1  
=wV<hg)C  
#ifconfig vmnet8 down
 j[J-f@F \Y  
#ifconfig vmnet8 192.168.0.2 up
 0)e\`Bv  
1FL~ndJs  
0#Y5_i|p  
回顧一下上面講的三個條件:
 ,77d(bR<  
--------------------------------------------------------------
 &>W$6>@  
關鍵在於三點:
 `w7v*h|P  
1.確定網卡AMD PCNET和vmnet1的網絡號相同。
 m6\E$;`  
2.在虛擬系統裏設置網絡屬性,把網關地址設爲vmnet1的地址。
 ;LPfXpR  
3.開啓主系統的路由功能,使它成爲一臺路由器。
 g-</ua(j  
--------------------------------------------------------------
 c&?m>2^6  
bL+_j}{:N  
前兩點我們已經在第一部分中做好了,現在只要開啓了linux的路由功能虛擬系統就可以和外界通訊了。
 }mYx_=+VX  
linux是一個天生的網絡操作系統,他在網絡方面的強大功能使得它在網絡服務器領域有廣泛的應用。用linux來做路由器甚至不需要額外的軟件,linux的內核直接支持靜態路由的功能。我們要做的只是把路由功能打開就可以了。
 M l{Z  
2Aazy'/  
可以先看看路由表:
  gmO!  
#route
 mAj?>;R2$2  
確定所有網卡的IP地址或網絡地址都在Destination一欄裏,如下圖:
 jrlVvzZ  
-------------------------------------------------------------------------------
 a}BYov  
Kernel IP routing table
 4$iz4U:P  
Destination Gateway Genmask Flags Metric Ref Use Iface
 6S'yZQ |b  
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
 3LJ+v5T~  
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
 uy[At+%zg  
192.168.0.0 * 255.255.255.0 U 0 0 0 vmnet8
 5,Jp[bw{H{  
192.168.221.0 * 255.255.255.0 U 0 0 0 vmnet1
 Ja7R2-0ii#  
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
 t9kzw*U9  
default 
www.gucuiwen.co 0.0.0.0 UG 0 0 0 eth0 {3>$[b T  
-------------------------------------------------------------------------------
 6@h/*WElG  
=1FRFZI!j  
默認情況下啓動網絡設備的時候系統會把該設備的IP地址添加到路由表中,如果沒有的話可以重新啓動一下網絡服務:
 UAkT*'cB  
GfxZ'VIn  
#service network restart
 fy>{QC\  
%~O,zs.2p  
[`#CXq'  
}/0X'o  
YquI$PV _  
再來開啓路由功能:
 h"[AOfTE$  
7cuE7"  
# echo 1 > /proc/sys/net/ipv4/ip_forward
 pQyK={7?`  
+RHS!0  
至此,linux的路由功能已經打開,你的linux系統已經成了一臺路由器,連接着虛擬的網絡和真實網絡。虛擬網絡和真實網絡間就可以通信了。出於安全考慮,如果有必要的話還需要用iptables命令來設置一下路由規則。
 f$o_e90mu  
&pxg. 3  
o3XvRj  
五、Windows下的虛擬機網絡設置。
 ,5P0S0*{  
xS5vbJ  
在Windows 下的虛擬機的網絡設置大致和linux下的相同,只不過需要安裝額外的路由軟件,在Windows平臺上有很多這樣的軟件可以用,比如 SysGate WinGate等,如果用的是Windows 2000 Server 或者是Windows NT Server 的話可以用系統自帶的"路由和遠程訪問"軟件。具體的設置就不祥述了,相信只要懂了其中的原理就不難找到合適的解決方案了。如果你的電腦硬件足夠的好,有 1G以上的內存和2G以上的CPU的話,那你也可以同時運行幾臺虛擬機,把這幾臺虛擬機組成一個網絡,這樣在一臺電腦上就可以有一個功能強大的網絡實驗平臺了。

----------------------------------------------------

收集一點一滴的進步!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章