Decode360's Blog

          業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          VMware虛擬機的網絡設置
          ?
          ?
          ??? 最近在配置VMware的時候,主機和虛擬機的通信方面遇到了一些問題,到今天總算都解決了。本來想自己總結一下,發現網上有比我總結得更加詳細的,這篇文章寫的非常仔細,摘過來了。
          ?
          ?
          一、虛擬機的網絡設置(原理篇)
          ?
          ??? 在正式開始之前,我想有必要先來學習一些必要的網絡知識。否則,在不懂得任何原理的情況下依葫蘆畫瓢雖然可解一時之需要,但遇到具體情況改變的情況下就只能干瞪眼了。由于篇幅限制,這里只講和VMware設置有關的一點簡單網絡知識。
          ?
          1、什么是網絡?

          ??? Internet是指“互連網”,好象這句話說的有點多余,不過確實有很多人對他有錯誤的理解,“互連網”是指一個個網絡互連,而不是像有些人想象的那樣把一臺臺電腦雜亂無章的互連。當我們需要用電腦和遠方的電腦通訊的時候,先把本地電腦組成一個網絡,當然,遠方的電腦也要組成一個網絡,在把這兩個網絡 “互連”起來,組成“互連網”。用電話線和MODEM撥號上網的時候是通過電話線先把自己的電腦連到ISP(Internet Service Provider 網絡服務提供商)的網絡中,再經過ISP的網絡和世界各地的電腦通信。
          ?
          2、電腦如何通過網絡傳遞數據?

          ??? 每一個網絡需要一個網絡地址,網絡中的電腦需要一個在網絡中唯一確定的標識,網絡號和電腦的標識號組成了IP地址,所以IP地址是由網絡號和主機號組成的。當你的電腦要和其他的電腦通信的時候,電腦會先根據IP地址和子網掩碼確定目標主機是在本地網絡中還是在遠程網絡中,如果在本地網絡中則直接把一個包含信息的IP數據包發送到本地網絡上,目標主機會檢測到并接收,如果目標主機在遠程網絡則需要通過一臺被稱為網關的的電腦轉發到遠程網絡,網關(geteway)可以看做是連接網絡和網絡的橋梁,網關的概念很廣,這里為了簡化起見,我們暫且認為它和路由器是同一個概念。路由器(router)是一種連接網絡和網絡,并選擇IP數據包傳送的路徑的一臺特殊計算機。很多情況下網關的概念等同于路由器。
          ?
          3、網絡中電腦的IP地址有何要求?

          ??? 在同一個網絡中,每臺電腦必須具有相同的網絡號,這樣電腦才認為目標主機是在本網絡中并且可以正確送達,如果網絡號不同,即使目標主機已經用網線連到本網絡中數據也不能直接送達,即使這兩臺電腦近在咫尺,在電腦看來仍舊是一臺遠程電腦.比如一個網絡的網絡號為192.168.0,則該網絡中的計算機的IP 地址必須以192.168.0開頭。假如要傳送一個數據包到網絡號為192.168.1的網絡,則必須通過路由器轉發,如果該網絡中沒有路由器,則發送失敗。因此,為了連接兩個網絡,一臺路又器至少要有兩個網絡接口 (網卡、調制解調器等聯網設備稱為網絡接口)。網絡和路由器的關系見下圖:
          ?
          ----------------?????????? ---------------????????? ---------------
          |?? 網絡A????? |?????????? |?? 路由器??? |????????? |?? 網絡B???? |
          |????????????? |?????????? |???????????? |????????? |???????????? |
          |????????? □--|-----------|--□???? □--|----------|--□???????? |
          |????????? 1?? |?????????? |?? 2???? 3?? |????????? |?? 4???????? |
          ----------------?????????? ---------------????????? ---------------
          ?
          ??? 圖中的小方框表示網卡或其他網絡接口??梢钥吹铰酚善髦辽儆袃蓚€網絡接口。
          ?
          假設:網絡A的地址為192.168.0 網卡1的地址為192.168.0.1
          ????? 網絡B的地址為192.168.1 網卡4的地址為192.168.1.1
          ?
          則路由器上的網卡2必須屬于網絡 192.168.0 地址為192.168.0.x (x為任意小于255的數)
          ? 路由器上的網卡3必須屬于網絡 192.168.1 地址為192.168.1.x (x為任意小于255的數)

          就是說,路由器既屬于網絡A,又屬于網絡B,這樣才起到橋梁的作用。當數據從網絡A發往網絡B時,路由器從網卡2接收數據,經過改裝后通過網卡3發送數據到網絡B。

          這樣,我們稱網卡2的地址 192.168.0.x為網絡A的網關
          ?????????? 網卡3的地址 192.168.1.x為網絡B的網關
          ?
          4、VMware虛擬機提供了那些虛擬網絡設備?

          ??? 默認安裝的情況下VMware提供了虛擬網卡vmnet1和vmnet8,還有在虛擬系統上的虛擬網卡 "AMD PCNET Family PCI Ethernet Adapter"

          ??? 請注意,vmnet1和vmnet8是主系統上虛擬設備,用ifconfig命令可以看到,而"AMD PCNET Family PCI Ethernet Adapter"是虛擬系統上的虛擬設備,在安裝完虛擬系統后可以在設備管理器中看到,前兩個隸屬于真實系統,是你的真實電腦中的設備,后一個隸屬于虛擬系統,是虛擬電腦中的設備,不要搞混淆。

          ----------------?????????? ---------------????????? ---------------
          |?? 網絡A????? |?????????? |?? 路由器??? |????????? |?? 網絡B???? |
          |????????????? |?????????? |???????????? |????????? |???????????? |
          |????????? □--|-----------|--□???? □--|----------|--□???????? |
          |????????? 1?? |?????????? |?? 2???? 3? |????????? |?? 4???????? |
          ----------------?????????? ---------------????????? ---------------
          ?
          -----------------?????????? --------------------------????? ---------------???????
          |?? 虛擬系統??? |?????????? |?? 主系統(路由器)?????? |????? | 真實網絡??? |
          |?????????????? |?????????? |??????????????????????? |????? |???????????? |???????
          |?????????? □--|-----------|--□????? □<--->□-----|------|--□???????? |
          |? AMD PCNET卡? |?????????? |vmnet1 vmnet8? 真實網卡 |????? |?? 4???????? |??
          -----------------?????????? --------------------------????? ---------------
          ?

          ??? 讓我們來和上面的網絡和路由器的關系做一個比對。可以看到要想虛擬系統和主系統通信必須使AMD PCNET 網卡和vmnet1組成一個網絡。而vmnet1本來就在主系統中,系統可以直接訪問,所以主系統又充當了路由器的功能,只要有這兩個虛擬設備主系統和虛擬系統就可以通訊。
          ?
          ??? 關鍵在于三點:
          ??? 1.確定網卡AMD PCNET和vmnet1的網絡號相同。(主機和虛擬系統通訊必需)
          ??? 2.在虛擬系統里設置網絡屬性,把網關地址設為vmnet1的地址。(虛擬系統和互聯網通訊必需)
          ??? 3.開啟主系統的路由功能,使它成為一臺路由器。
          ?
          ??? 事實上,如果你只需要虛擬系統和主系統通信,而不需要和主系統所在的真實網絡上的其他主機通信的話只要滿足第一點就可以了。因為滿足第一點,主系統和虛擬系統就在同一網絡中了,不需要路由器便可通信。但是大多數情況下我們需要虛擬系統和主系統所在的真實網絡通信,這就需要滿足其他兩點了。
          ?

          二、虛擬機的網絡設置(實施篇)
          ?
          1、我們先來讓虛擬系統和主系統聯系上

          ??? 在VMware安裝的時候安裝程序會自動給vmnet1分配一個IP地址,下面是筆者電腦上例子:

          vmnet1???? Link encap:Ethernet?? HWaddr 00:50:56:C0:00:01?
          ?????????? inet addr:192.168.221.1?? Bcast:192.168.221.255?? Mask:255.255.255.0
          ?????????? UP BROADCAST RUNNING MULTICAST?? MTU:1500?? Metric:1
          ?????????? RX packets:191 errors:0 dropped:0 overruns:0 frame:0
          ?????????? TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
          ?????????? collisions:0 txqueuelen:100
          ?????????? RX bytes:0 (0.0 b)?? TX bytes:0 (0.0 b)
          ??? 在第二行可以看到安裝程序給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(如果不和外界真實網絡通信的話網關可以不設)
          ?
          ??? windows 2000和XP 設置后立即生效,win98需要重新啟動,linux需要重新啟動網絡服務:
          #service network restart
          ?
          ??? 在主系統上ping一下虛擬系統:
          #ping -c 3 192.168.221.2
          ?
          PING 192.168.221.2 (192.168.221.2) from 192.168.221.1 : 56(84) bytes of data.
          64 bytes from 192.168.221.2: icmp_seq=1 ttl=128 time=6.91 ms
          64 bytes from 192.168.221.2: icmp_seq=2 ttl=128 time=0.425 ms
          64 bytes from 192.168.221.2: icmp_seq=3 ttl=128 time=0.527 ms
          ?
          --- 192.168.221.2 ping statistics ---
          3 packets transmitted, 3 received, 0% loss, time 2001ms
          rtt min/avg/max/mdev = 0.425/2.623/6.917/3.036 ms
          ?
          yeah!通了!
          ?
          再在虛擬系統上ping主系統:
          ?
          C:\>ping 192.168.221.1
          ?
          Pinging 192.168.221.1 with 32 bytes of data:
          ?
          Reply from 192.168.221.1: bytes=32 time<10ms TTL=64
          Reply from 192.168.221.1: bytes=32 time<10ms TTL=64
          Reply from 192.168.221.1: bytes=32 time<10ms TTL=64
          Reply from 192.168.221.1: bytes=32 time<10ms TTL=64
          ?
          Ping statistics for 192.168.221.1:
          ???? Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
          Approximate round trip times in milli-seconds:
          ???? Minimum = 0ms, Maximum =?? 0ms, Average =?? 0ms
          ?
          yeah!又通了!主系統和虛擬系統順利聯系上啦!
          ?
          2、讓虛擬系統和主系統所在的真實網絡通信
          ?
          ??? 首先在你的電腦上需要有一塊與真實網絡相連真實的網卡。vmnet8就在與真實網絡通訊的時候起作用了,vmnet8會和真實網卡對應起來,虛擬系統要發送數據包到真實網絡中的時候,真實系統是一臺路由器,首先數據發到虛擬網卡vmnet1,然后經過路由器(這里就是主系統linux)發到vmnet8,由于vmnet8和真實網卡是對應起來的,這一機制是由vmware完成的,所以發到vmnet8上的網卡就等于傳送到了真實網卡上,然后數據包再通過真實網卡發送到真實網絡,整個過程請看上面的圖。如果你的系統上有兩塊以上的真實網卡,在安裝的時候安裝程序會詢問把虛擬網卡對應到哪個真實網卡上??梢愿鶕嶋H情況選擇。
          ?
          ??? 把vmnet8的IP地址設置為和真實網卡在同一網絡的地址,假設真實網絡的網絡號為192.168.0,真實網卡的IP地址為192.168.0.1,則可設置vmnet8的IP地址為192.168.0.2
          ??? 在linux中方法如下:
          ?
          #ifconfig vmnet8 down
          #ifconfig vmnet8 192.168.0.2 up
          ?
          回顧一下上面講的三個條件:
          --------------------------------------------------------------
          關鍵在于三點:
          1.確定網卡AMD PCNET和vmnet1的網絡號相同。
          2.在虛擬系統里設置網絡屬性,把網關地址設為vmnet1的地址。
          3.開啟主系統的路由功能,使它成為一臺路由器。
          --------------------------------------------------------------
          ?
          ??? 前兩點我們已經在第一部分中做好了,現在只要開啟了linux的路由功能虛擬系統就可以和外界通訊了。
          ??? linux是一個天生的網絡操作系統,他在網絡方面的強大功能使得它在網絡服務器領域有廣泛的應用。用linux來做路由器甚至不需要額外的軟件,linux的內核直接支持靜態路由的功能。我們要做的只是把路由功能打開就可以了。
          ?
          ??? 可以先看看路由表:

          #route

          確定所有網卡的IP地址或網絡地址都在Destination一欄里,如下圖:
          -------------------------------------------------------------------------------
          Kernel IP routing table
          Destination????? Gateway????????? Genmask????????? Flags Metric Ref???? Use Iface
          192.168.0.0????? *??????????????? 255.255.255.0??? U????? 0?????? 0???????? 0 eth1
          192.168.0.0????? *??????????????? 255.255.255.0??? U????? 0?????? 0???????? 0 eth1
          192.168.0.0????? *??????????????? 255.255.255.0??? U????? 0?????? 0???????? 0 vmnet8
          192.168.221.0??? *??????????????? 255.255.255.0??? U????? 0?????? 0???????? 0 vmnet1
          127.0.0.0??????? *??????????????? 255.0.0.0??????? U????? 0?????? 0???????? 0 lo
          default????????
          www.gucuiwen.co?? 0.0.0.0????????? UG???? 0?????? 0???????? 0 eth0
          -------------------------------------------------------------------------------
          ?
          默認情況下啟動網絡設備的時候系統會把該設備的IP地址添加到路由表中,如果沒有的話可以重新啟動一下網絡服務:
          ?
          #service network restart

          再來開啟路由功能:
          ?
          # echo 1 > /proc/sys/net/ipv4/ip_forward
          ?
          ??? 至此,linux的路由功能已經打開,你的linux系統已經成了一臺路由器,連接著虛擬的網絡和真實網絡。虛擬網絡和真實網絡間就可以通信了。出于安全考慮,如果有必要的話還需要用iptables命令來設置一下路由規則。

          3、Windows下的虛擬機網絡設置
          ?
          ??? 在Windows下的虛擬機的網絡設置大致和linux下的相同,只不過需要安裝額外的路由軟件,在Windows平臺上有很多這樣的軟件可以用,比如 SysGate WinGate等,如果用的是Windows 2000 Server 或者是Windows NT Server 的話可以用系統自帶的“路由和遠程訪問”軟件。具體的設置就不祥述了,相信只要懂了其中的原理就不難找到合適的解決方案了。如果你的電腦硬件足夠的好,有 1G以上的內存和2G以上的CPU的話,那你也可以同時運行幾臺虛擬機,把這幾臺虛擬機組成一個網絡,這樣在一臺電腦上就可以有一個功能強大的網絡實驗平臺了。
          ?

          三、Vmware的網絡配置
          ?
          ??? vmware通過虛擬網絡組件把虛擬機器同真實的物理網絡連接起來。

          ??? 虛擬網絡組件主要有如下幾種:
          ?
          ??? 交換機:跟真實的交換機一樣,它允許把多個網絡組件連接起來,在vmware軟件安裝時根據需要自動安裝,最多允許掛接9個交換機,名稱分別為VMnet0-8。其中有3個已經默認分配給網橋(VMnet0),宿主機虛擬網絡適配器(VMnet1)和網絡地址轉換NAT設備(VMnet8)。
          ?
          ??? 通過在虛擬機的“Editing this machine settings”的網絡適配器條目,可以把虛擬機器連接到未被分配的交換機。
          ?
          ??? 網橋:網橋把虛擬機器連接到你的宿主機所在的局域網LAN上。其實現的方式就是把虛擬機器上的虛擬適配器連接到你的宿主機上的物理網絡適配器上。創建虛擬機的向導中如果選擇了“typical”或者“Using bridged networking”的網絡連接方式,那么網橋會自動生成。
          ?
          ??? 上面圖中給出了網橋連接方式下虛擬機網絡適配器與宿主機物理適配器之間的關系。這是讓虛擬機訪問宿主機所在網絡的最容易的一種方式。這種情況下虛擬機需要自己獨立的標識,比如TCP/IP網絡中就需要自己的IP地址,這個IP地址從網絡管理員處獲得,還有其它的一些網絡細節都需要手工設置。網橋方式下虛擬機跟宿主機一樣是本地網絡中的一個獨立體,如同一個物理的機器一樣。如果在vmware中同時運行多個虛擬機,那么每個虛擬機都應該有一個獨立的IP地址。
          ?
          ??? 宿主機上的虛擬適配器:就是出現在宿主機上的供vmware工作站使用的一個虛擬的網絡適配器。允許虛擬機與宿主機通信,但是這個虛擬適配器不會連接到任何外部的網絡,只有在宿主機上建立起特殊的軟件諸如代理服務器才能把虛擬適配器和物理適配器連接起來。實際上虛擬機只和宿主機進行網絡連接,這種方式也稱為host-only。
          ?
          ??? 在創建虛擬機的向導中選擇了自定義網絡設置,并且選擇了“Use Host-only networking”,那么這種網絡連接方式就會被自動建立起來。此時,宿主機操作系統可以看到有一個虛擬的網絡適配器。宿主機與虛擬機可以通信。很適合建立一個與外部網絡隔絕的獨立私有TCP/IP網絡。虛擬機的IP地址由虛擬的DHCP服務器提供。這種連接方式結合 Windows2000/XP/2003上的網絡共享的特性,就可以允許虛擬機連接到外部Internet。
          ?
          ??? 網絡地址轉換設備:如果宿主機只有一個IP地址可用于外部物理網絡的連接,那么使用NAT可以把虛擬機連接到外部網絡。
          ?
          ??? 如果在創建虛擬機的向導中選擇自定義網絡設置,并選擇“Use network address translation”,那么這樣的連接就會被創建。如果宿主機所在網絡不能給該虛擬機一個IP地址,那么NAT就是最容易的一種讓虛擬機訪問宿主機網絡的方式。由于虛擬機沒有外部物理網絡的IP地址,因此vmware在宿主機上建立一個獨立的私有網絡,通過虛擬的DHCP服務器獲得ip地址。NAT能夠把多個虛擬機的網絡數據加以區分并在虛擬機與外部物理網絡之間進行傳送。NAT方式下許多標準的TCP/IP協議都可以在虛擬機上使用,比如 HTTP/FTP/TELET等。但是默認情況下外部網絡上的計算機不能連接到虛擬機上,因此虛擬機不能提供諸如WEB瀏覽這樣的服務。
          ?
          ??? DHCP服務器:為虛擬機提供一個IP地址,只適用于NAT和host-only(指虛擬機只和宿主機進行網絡連接)。
          ?
          ??? 網絡適配器:當用向導生成一個虛擬機時,為虛擬機建立一個虛擬網絡適配器。在虛擬機的操作系統中,可以看到一個名稱為AMD PCNET PCI適配器。在vmware的適配器設置中,可以建立最多3個虛擬網絡適配器。
          ?
          ?
          四、配置虛擬機上網
          ?
          ??? 一般主機上網有兩種方式,一是本機在局域網環境中,多臺計算機通過交換機訪問Internet,則交換機是撥號主機而不是本機,那么主機(交換機)就有一個IP地址,這種情況類似辦公室的電腦。另外一種方式是本機直接撥號上網,如家庭電腦。根據本機不同的上網方式,其虛擬的計算機上網設置方法也有所區別,我們分開來介紹。
          ?
          1、局域網環境
          ?
          ??? 局域網環境下設置虛擬機上網其實非常簡單,例如筆者的Windows XP系統計算機在局域網內分配的IP地址是192.168.0.2,而局域網環境下交換機的主機IP地址是192.168.0.1,那么VMware虛擬的Windows 2000系統可以把它看作是局域網內的一臺計算機,給它分配一個IP地址為192.168.0.4即可。
          ?
          ??? 設置過程:
          ?
          ??? 首先在VMware程序的“虛擬機”菜單下打開“設置”命令窗口,然后在硬件設置中選擇“以太網”設置一下虛擬機使用的網卡,這里選擇“自定義VMnet0默認橋接”即可。
          ?
          ??? 接下來在虛擬機Windows 2000系統中設置網絡連接屬性,在Windows 2000系統桌面上選中“網上鄰居”點擊右鍵打開“屬性”窗口,然后選擇“本地連接”點擊右鍵打開其屬性窗口,選中“Internet協議(TCP/IP)”點擊屬性按鈕,設置虛擬機的IP地址,如我們上面為它分配了虛擬機在局域網的地址為“192.168.0.4”,默認網關輸入局域網主機的IP地址,首選DNS服務器指定為局域網主機的IP地址(圖1)。設置好后確定。
          ?
          ??? 打開虛擬機Windows 2000的IE瀏覽器,輸入一個網址訪問檢測是否能正常訪問Internet了。
          ?
          2、本機撥號上網
          ?
          ??? 如果用本機撥號上網,那么與局域網環境就不同了,本機沒有一個IP地址,虛擬機該如何設置自己的 IP上網呢?VMware虛擬運行環境有一個虛擬網絡(虛擬局域網)的功能,在VMware中配置一下虛擬網絡的主機IP,虛擬機(即Windows 2000系統)就可以利用虛擬網絡主機的網關訪問Internet了。
          ?
          ??? 設置過程:
          ?
          ??? 1.首先在VMware程序“編輯”菜單下選擇“虛擬網絡設置”命令,然后虛擬網絡編輯器窗口的“摘要”選項卡下看到VMware能夠模擬的網絡類型,其中有“虛擬網絡8”。
          ??? 2.下面要添加一個虛擬網絡的網卡硬件,在“主機虛擬適配器”選項卡下添加名為“VMnet8”的虛擬網絡,點擊“添加”按鈕,選擇VMnet8添加。
          ??? 3.接著在“NAT”選項卡下查看虛擬的主機“VMnet8”的網關IP地址,VMware默認設置的網關IP地址是192.168.59.2,我們也可以自己修改它。
          ??? 4.同樣我們要在“虛擬機設置”中定義一下“以太網”的硬件設備,這里選擇網絡連接的方式是“自定義VMnet8(NAT)”。
          ??? 5.最后在虛擬機的“Internet協議(TCP/IP)”中設置當前環境下的虛擬計算機IP、網關、子網掩碼,如分配這臺虛擬機的IP為192.168.59.3,網關是上一步在“NAT”中設定的網關IP,然后單擊“確定”按鈕完成設置。
          ?
          ??? 現在打開虛擬機的IE瀏覽器,輸入網址便可在虛擬機中訪問Internet,享受沖浪的樂趣了
          ?
          ?
          五、vmware,qemu各種方式上網設置
          ?
          ??? VMWare中的幾種網絡配置

          (1)Bridged方式
          ??? 用這種方式,虛擬系統的IP可設置成與本機系統在同一網段,虛擬系統相當于網絡內的一臺獨立的機器,與本機共同插在一個Hub上,網絡內其他機器可訪問虛擬系統,虛擬系統也可訪問網絡內其他機器,當然與本機系統的雙向訪問也不成問題。

          (2)NAT方式
          ??? 這種方式也可以實現本機系統與虛擬系統的雙向訪問。但網絡內其他機器不能訪問虛擬系統,虛擬系統可通過本機系統用NAT協議訪問網絡內其他機器。
          NAT方式的IP地址配置方法:虛擬系統先用DHCP自動獲得IP地址,本機系統里的VMware services會為虛擬系統分配一個IP,之后如果想每次啟動都用固定IP的話,在虛擬系統里直接設定這個IP即可。

          (3)host-only方式
          ??? 顧名思義這種方式只能進行虛擬機和主機之間的網絡通信,既網絡內其他機器不能訪問虛擬系統,虛擬系統也不能訪問其他機器。
          ?
          (4)not use方式
          ??? 既是不使用網絡,虛擬系統為一個單機。
          ?
          ??? 一般來說,Bridged方式最方便好用。但如果本機系統是win2000而網線沒插(或者根本沒有網卡),網絡很可能不可用(大部分用PCI網卡的機器都如此),此時就只能用NAT方式或host-only,之前所說的那兩塊虛擬網卡就是適應這兩種網絡準備的。
          ?
          ?
          ?
          ?
          ?
          附:下面是一些我看不太懂的東西,留著以后慢慢看
          ************************************************************************************
          vmware三種網絡連接,qemu兩種網絡連接實現 虛擬機<--->主機 虛擬機<--->互聯網通信的方法。
          ?
          ??? 順便寫了下如何不重新編譯整個內核支持某個功能,對系統無影響,編譯速度要快于編譯整個內核。如果你的XXX卡沒被內核支持,又怕自己編譯的內核會造成系統損壞就可以試試這個方法嘍 ^_^
          ?
          vmware三種網絡連接上網設置:
          ?
          1.bridge :
          ?
          默認使用vmnet0
          將虛擬機的ip設置與主機同網段未使用ip,其余與主機相同:
          例如主機ip是10.70.54.31,設置虛擬機ip為10.70.54.22。netmask,broadcast,gateway,dns都與主機相同即可實現虛擬機<--->主機 虛擬機<---->互聯網 通信。
          ?
          2.nat :
          ?
          默認使用vmnet8
          將虛擬機設置成使用dhcp方式上網,windows下選擇"自動獲取ip",linux下開啟dhcp服務即可
          也可以手動設置:
          ip設置與vmnet8同網段,gateway設置成vmnet8的gateway(/etc/vmware/vmnet8/nat/nat.conf)中可以查到vmnet8的gateway,通常是xxx.xxx.xxx.2。
          netmask,broadcast設置與vmnet8相同,dns設置與主機相同。
          例如 vmnet8 ip:172.16.249.1 gw :172.16.249.2
          虛擬機設置: ip :172.16.249.100 gw: 172.16.249.2
          ?
          3.host-only :
          ?
          默認使用vmnet1
          將虛擬機ip設置與vmnet1同網段,gateway設置成vmnet1的ip,其余設置與vmnet1相同,dns設置與主機相同
          例如 vmnet1 ip :172.16.245.1
          虛擬機設置: ip :172.16.245.100 gateway :172.16.245.1
          這樣就實現了虛擬機<--->主機 通信,但是 虛擬機<--->互聯網 仍無法通信
          虛擬機與互聯網通信:
          1.開啟主機路由功能
          2.設定iptables,使主機成為一臺nat server
          1. echo 1 >/proc/sys/net/ipv4/ip_forward 這樣就主機就具有了路由功能
          2. iptables -t nat -A POSTROUTING -o eth0 -s 172.16.245.0/24 -j MASQUERADE
          這條規則意思是將來自172.16.245.0/24封包的來源ip偽裝成eth0的ip,實現虛擬機與互聯網通信
          如果網絡接口是ppp+或pppoe則需要修改成-o pppoe
          當然-s 172.16.245.0/24 也要根據實際情況修改
          ?
          qemu兩種上網方式:
          ?
          user mode network :
          ?
          這種方式實現虛擬機上網很簡單,類似vmware里的nat,qemu啟動時加入-user-net參數,虛擬機里使用dhcp方式,即可與互聯網通信,但是這種方式虛擬機與主機的通信不方便。
          ?
          tap/tun network :
          ?
          這種方式要比user mode復雜一些,但是設置好后 虛擬機<-->互聯網 虛擬機<-->主機 通信都很容易
          這種方式設置上類似vmware的host-only,qemu使用tun/tap設備在主機上增加一塊虛擬網絡設備(tun0),然后就可以象真實網卡一樣配置它.
          首先內核中支持tap/tuns設備:
          Device Drivers --->
          Networking support --->
          [M] Universal TUN/TAP device driver support
          如果當前內核沒有支持,可以重新只編譯相應模塊加入,方法很簡單:
          將當前內核配置文件cp到內核源碼目錄下:
          [root@LFS ~]#cp /boot/config-[kernel-version] /usr/src/linux
          [root@LFS ~]#cd /usr/src/linux
          配置內核,將TUN/TAP選擇模塊(M),如上所示:
          [root@LFS ~]#make menuconfig
          重新只編譯模塊(M),不編譯核心(*)支持的東東:
          [root@LFS ~]#make modules
          編譯好后在/usr/src/linux/drivers/net下可以找到tun.ko:
          [root@LFS net]#ls -l /usr/src/linux/drivers/net/tun.ko
          -rw-r--r-- 1 root root 11116 Mar 23 20:29 /usr/src/linux/drivers/net/tun.ko
          [root@LFS net]#
          將它cp到當前內核的模塊目錄的相應位置:
          [root@LFS net]#cp /usr/src/linux/drivers/net/tun.ko /lib/modules/`uname -r`/kernel/drivers/net
          重新建立模塊依賴關系:
          [root@LFS net]#depmod
          現在就可以加載它了 :
          [root@LFS net]#modprobe tun
          檢查一下:
          [root@LFS net]#lsmod |grep tun
          tun 8704 0
          [root@LFS net]#
          OK. 成功不重新編譯整個內核加入特殊模塊支持
          ?
          如果你的xx卡不被內核支持,又可以編譯成模塊,自己怕重新編譯內核后出問題就可以用這個辦法只編譯自己需要的模塊,然后手動安裝到相應位置,再加載它。
          這樣編譯速度要也比編譯整個內核快,不會對系統有任何損害,就可以使用上XX卡嘍。^_^
          ?
          要注意三點:
          ?
          1.內核源碼必須與當前內核版本完全一致,否則編譯出的模塊是不能用的。
          2.注意只make modules(編譯模塊),沒有make modules_install(自動安裝模塊到/lib/modules下)
          3.加載新編譯的模塊前必須先運行depmod,否則modprobe找不到它
          ?
          其實使用當前內核配置文件(/boot/config-[kernel-version]),只加入自己需要的模塊,不做任何其他改,make modules_install應該也不會有問題的。
          不過最穩妥的辦法還是手動安裝它,控制權在自己手里更踏實嘛 :-)
          OK,轉回qemu上網問題
          ?
          如果使用udev管理設備(通常2.6.x內核的發行版都已經使用udev),當modprobe tun后就會自動建立/dev/net目錄,并創建出tun設備,做好相關鏈接:
          [root@LFS net]#ls -l /dev/net/tun
          lrwxrwxrwx 1 root root 6 Mar 25 15:35 /dev/net/tun -> ../tun
          [root@LFS net]#
          如果很不幸,你沒看到它,就需要自己手動做這些工作了
          [root@LFS ~]#mkdir /dev/net
          [root@LFS ~]#mknod /dev/net/tun c 10 200
          OK,相關設備已經準備好了,還需要一個tun/tap的初始化腳本 :
          /etc/qemu-ifup :
          #!/bin/sh
          /sbin/ifconfig $1 172.20.0.1
          ?
          再給予qemu-ifup x執行權限放在/etc下就可以了。
          這個腳本只能root用戶執行,如果需要普通用戶使用qemu,就需要改成sudo /sbin/ifconfig .....再設置sudo相關權限。
          啟動qemu后,它會在主機上增加一塊虛擬網絡設備(tun0):
          ?
          [root@LFS ~]#ifconfig tun0
          tun0 Link encap:Ethernet HWaddr 0A3:8A:5D:97:CD
          inet addr:172.20.0.1 Bcast:172.20.255.255 Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
          [root@LFS ~]#
          ?
          現在就可以啟動qemu配置虛擬機網絡參數了,和vmware host-only一樣:
          ip與tun0相同網段,gateway為tun0 ip 其余參數與tun0相同,dns與主機相同:
          ?
          tun0 : ip :172.20.0.1 broadcast:172.20.255.255 netmask :255.255.0.0
          qemu : ip :172.20.0.100 broadcast:172.20.255.255 netmask :255.255.0.0 gateway:172.20.0.1
          ?
          與host-only一樣,這樣只實現了虛擬機<---->主機間通信,還需要設置router,nat才可以連上互聯網
          ?
          [root@LFS ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
          [root@LFS ~]#iptables -t nat -A POSTROUTING -o eth0 -s 172.20.0.0/24 -j MASQUERADE
          [root@LFS ~]#
          ?
          OK,虛擬機<--->主機 虛擬機<---->互聯網通信 都完成啦
          ************************************************************************************
          ?
          ?
          posted on 2008-08-25 22:42 decode360 閱讀(608) 評論(0)  編輯  收藏 所屬分類: 16.Others
          主站蜘蛛池模板: 乐平市| 金阳县| 千阳县| 五家渠市| 洞口县| 嘉鱼县| 咸宁市| 南川市| 兴仁县| 北碚区| 达孜县| 星子县| 特克斯县| 安丘市| 南澳县| 昌都县| 长岛县| 临武县| 云浮市| 海宁市| 张家港市| 读书| 纳雍县| 渝中区| 桐乡市| 黄平县| 南和县| 丰镇市| 田阳县| 渝中区| 特克斯县| 射阳县| 康马县| 敦煌市| 郯城县| 西青区| 铜鼓县| 花莲市| 北宁市| 诸城市| 镇江市|