(1)Bridged方式
用這種方式,虛擬系統的IP可設置成與本機系統在同一網段,虛擬系統至關於網絡內的一臺獨立的機器,與本機共同插在一個Hub上,網絡內其餘機器可訪問虛擬系統,虛擬系統也可訪問網絡內其餘機器,固然與本機系統的雙向訪問也不成問題。
(2)NAT方式
這種方式也能夠實現本機系統與虛擬系統的雙向訪問。但網絡內其餘機器不能訪問虛擬系統,虛擬系統可經過本機系統用NAT協議訪問網絡內其餘機器。
NAT方式的IP地址配置方法:虛擬系統先用DHCP自動得到IP地址,本機系統裏的VMwareservices會爲虛擬系統分配一個IP,以後若是想每次啓動都用固定IP的話,在虛擬系統裏直接設定這個IP便可。
(3)host-only方式
顧名思義這種方式只能進行虛擬機和主機之間的網絡通訊,既網絡內其餘機器不能訪問虛擬系統,虛擬系統也不能訪問其餘機器。
(4)not use方式
既是不使用網絡,虛擬系統爲一個單機。
通常來講,Bridged方式最方便好用。但若是本機系統是win2000而網線沒插(或者根本沒有網卡),網絡極可能不可用(大部分用PCI網卡的機器都如此),此時就只能用NAT方式或host-only,以前所說的那兩塊虛擬網卡就是適應這兩種網絡準備的。
vmware虛擬機的網絡設置
虛擬機的網絡設置(原理篇)
在正式開始以前,我想有必要先來學習一些必要的網絡知識。不然,在不懂得任何原理的狀況下依葫蘆畫瓢雖然可解一時之須要,但遇到具體狀況改變的狀況下就只能乾瞪眼了。因爲篇幅限制,這裏只講和VMware設置有關的一點簡單網絡知識。
1,什麼是網絡?
Internet是指「互連網」,好象這句話說的有點多餘,不過確實有不少人對他有錯誤的理解,「互連網」是指一個個網絡互連,而不是像有些人想象的那樣把一臺臺電腦雜亂無章的互連。當咱們須要用電腦和遠方的電腦通信的時候,先把本地電腦組成一個網絡,固然,遠方的電腦也要組成一個網絡,在把這兩個網絡「互連」起來,組成「互連網」。用電話線和MODEM撥號上網的時候是經過電話線先把本身的電腦連到ISP(Internet ServiceProvider 網絡服務提供商)的網絡中,再通過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,還有在虛擬系統上的虛擬網卡 \"AMDPCNET Family PCI Ethernet Adapter\"
請注意,vmnet1和vmnet8是主系統上虛擬設備,用ifconfig命令能夠看到,而\"AMDPCNET Family PCI Ethernet Adapter\"是虛擬系統上的虛擬設備,在安裝完虛擬系統後能夠在設備管理器中看到,前兩個隸屬於真實系統,是你的真實電腦中的設備,後一個隸屬於虛擬系統,是虛擬電腦中的設備,不要搞混淆。
--------------- -------------- --------------
| 網絡A | | 路由器 | | 網絡B |
| | | | | |
| □--|-----------|--□ □--|----------|--□ |
| 1 | | 2 3 | | 4 |
--------------- -------------- --------------
---------------- ------------------------- --------------
| 虛擬系統 | | 主系統(路由器) | | 真實網絡 |
| | | | | |
| □--|-----------|--□ □<--->□-----|------|--□ |
|AMD PCNET卡 | |vmnet1vmnet8 真實網卡 | | 4 |
---------------- ------------------------- --------------
圖二
讓咱們來和上面的網絡和路由器的關係作一個比對。
能夠看到要想虛擬系統和主系統通訊必須使AMD PCNET 網卡和vmnet1組成一個網絡。
而vmnet1原本就在主系統中,系統能夠直接訪問,因此主系統又充當了路由器的功能,只要有這兩個虛擬設備主系統和虛擬系統就能夠通信。
關鍵在於三點:
1.肯定網卡AMD PCNET和vmnet1的網絡號相同。
2.在虛擬系統裏設置網絡屬性,把網關地址設爲vmnet1的地址。
3.開啓主系統的路由功能,使它成爲一臺路由器。
事實上,若是你只須要虛擬系統和主系統通訊,而不須要和主系統所在的真實網絡上的其餘主機通訊的話只要知足第一點就能夠了。由於知足第一點,主系統和虛擬系統就在同一網絡中了,不須要路由器即可通訊。可是大多數狀況下咱們須要虛擬系統和主系統所在的真實網絡通訊,這就須要知足其餘兩點了。
4、虛擬機的網絡設置(實施篇)
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。所以咱們須要啓動虛擬系統,設置網絡屬性,把虛擬系統的網卡\"AMDPCNET 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上的網卡就等於傳送到了真實網卡上,而後數據包再經過真實網卡發送到真實網絡,整個過程請看圖二。若是你的系統上有兩塊以上的真實網卡,在安裝的時候安裝程序會詢問把虛擬網卡對應到哪一個真實網卡上。能夠根據實際狀況選擇。
把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 UG0 0 0 eth0
-------------------------------------------------------------------------------
默認狀況下啓動網絡設備的時候系統會把該設備的IP地址添加到路由表中,若是沒有的話能夠從新啓動一下網絡服務:
#service network restart
再來開啓路由功能:
# echo 1 > /proc/sys/net/ipv4/ip_forward
至此,linux的路由功能已經打開,你的linux系統已經成了一臺路由器,鏈接着虛擬的網絡和真實網絡。虛擬網絡和真實網絡間就能夠通訊了。出於安全考慮,若是有必要的話還須要用iptables命令來設置一下路由規則。
5、Windows下的虛擬機網絡設置。
在Windows下的虛擬機的網絡設置大體和linux下的相同,只不過須要安裝額外的路由軟件,在Windows平臺上有不少這樣的軟件能夠用,好比 SysGateWinGate等,若是用的是Windows2000 Server 或者是Windows NTServer 的話能夠用系統自帶的「路由和遠程訪問」軟件。具體的設置就不祥述了,相信只要懂了其中的原理就不難找到合適的解決方案了。若是你的電腦硬件足夠的好,有1G以上的內存和2G以上的CPU的話,那你也能夠同時運行幾臺虛擬機,把這幾臺虛擬機組成一個網絡,這樣在一臺電腦上就能夠有一個功能強大的網絡實驗平臺了。
Vmware(虛擬機工做站)網絡配置
vmware經過虛擬網絡組件把虛擬機器同真實的物理網絡鏈接起來。
虛擬網絡組件主要有以下幾種:
交換機:跟真實的交換機同樣,它容許把多個網絡組件鏈接起來,在vmware軟件安裝時根據須要自動安裝,最多容許掛接9個交換機,名稱分別爲VMnet0-8。其中有3個已經默認分配給網橋(VMnet0),宿主機虛擬網絡適配器(VMnet1)和網絡地址轉換NAT設備(VMnet8)。
經過在虛擬機的「Editingthis machine settings」的網絡適配器條目,能夠把虛擬機器鏈接到未被分配的交換機。
網橋:網橋把虛擬機器鏈接到你的宿主機所在的局域網LAN上。其實現的方式就是把虛擬機器上的虛擬適配器鏈接到你的宿主機上的物理網絡適配器上。建立虛擬機的嚮導中若是選擇了「typical」或者「Usingbridged networking」的網絡鏈接方式,那麼網橋會自動生成。
上面圖中給出了網橋鏈接方式下虛擬機網絡適配器與宿主機物理適配器之間的關係。這是讓虛擬機訪問宿主機所在網絡的最容易的一種方式。這種狀況下虛擬機須要本身獨立的標識,好比TCP/IP網絡中就須要本身的IP地址,這個IP地址從網絡管理員處得到,還有其它的一些網絡細節都須要手工設置。網橋方式下虛擬機跟宿主機同樣是本地網絡中的一個獨立體,如同一個物理的機器同樣。若是在vmware中同時運行多個虛擬機,那麼每一個虛擬機都應該有一個獨立的IP地址。
宿主機上的虛擬適配器:就是出如今宿主機上的供vmware工做站使用的一個虛擬的網絡適配器。容許虛擬機與宿主機通訊,可是這個虛擬適配器不會鏈接到任何外部的網絡,只有在宿主機上創建起特殊的軟件諸如代理服務器才能把虛擬適配器和物理適配器鏈接起來。實際上虛擬機只和宿主機進行網絡鏈接,這種方式也稱爲host-only。
在建立虛擬機的嚮導中選擇了自定義網絡設置,而且選擇了「UseHost-only networking」,那麼這種網絡鏈接方式就會被自動創建起來。此時,宿主機操做系統能夠看到有一個虛擬的網絡適配器。宿主機與虛擬機能夠通訊。很適合創建一個與外部網絡隔絕的獨立私有TCP/IP網絡。虛擬機的IP地址由虛擬的DHCP服務器提供。這種鏈接方式結合Windows2000/XP/2003上的網絡共享的特性,就能夠容許虛擬機鏈接到外部Internet。
網絡地址轉換設備:若是宿主機只有一個IP地址可用於外部物理網絡的鏈接,那麼使用NAT能夠把虛擬機鏈接到外部網絡。
若是在建立虛擬機的嚮導中選擇自定義網絡設置,並選擇「Use networkaddress translation」,那麼這樣的鏈接就會被建立。若是宿主機所在網絡不能給該虛擬機一個IP地址,那麼NAT就是最容易的一種讓虛擬機訪問宿主機網絡的方式。因爲虛擬機沒有外部物理網絡的IP地址,所以vmware在宿主機上創建一個獨立的私有網絡,經過虛擬的DHCP服務器得到ip地址。NAT可以把多個虛擬機的網絡數據加以區分並在虛擬機與外部物理網絡之間進行傳送。NAT方式下許多標準的TCP/IP協議均可以在虛擬機上使用,好比HTTP/FTP/TELET等。可是默認狀況下外部網絡上的計算機不能鏈接到虛擬機上,所以虛擬機不能提供諸如WEB瀏覽這樣的服務。
DHCP服務器:爲虛擬機提供一個IP地址,只適用於NAT和host-only(指虛擬機只和宿主機進行網絡鏈接)。
網絡適配器:當用嚮導生成一個虛擬機時,爲虛擬機創建一個虛擬網絡適配器。在虛擬機的操做系統中,能夠看到一個名稱爲AMD PCNETPCI適配器。在vmware的適配器設置中,能夠創建最多3個虛擬網絡適配器。
配置虛擬機上網
通常主機上網有兩種方式,一是本機在局域網環境中,多臺計算機經過交換機訪問Internet,則交換機是撥號主機而不是本機,那麼主機(交換機)就有一個IP地址,這種狀況相似辦公室的電腦。另一種方式是本機直接撥號上網,如家庭電腦。根據本機不一樣的上網方式,其虛擬的計算機上網設置方法也有所區別,咱們分開來介紹。
1、局域網環境
局域網環境下設置虛擬機上網其實很是簡單,例如筆者的Windows XP系統計算機在局域網內分配的IP地址是192.168.0.2,而局域網環境下交換機的主機IP地址是192.168.0.1,那麼VMware虛擬的Windows2000系統能夠把它看做是局域網內的一臺計算機,給它分配一個IP地址爲192.168.0.4便可。
設置過程:
首先在VMware程序的「虛擬機」菜單下打開「設置」命令窗口,而後在硬件設置中選擇「以太網」設置一下虛擬機使用的網卡,這裏選擇「自定義VMnet0默認橋接」便可。
接下來在虛擬機Windows2000系統中設置網絡鏈接屬性,在Windows2000系統桌面上選中「網上鄰居」點擊右鍵打開「屬性」窗口,而後選擇「本地鏈接」點擊右鍵打開其屬性窗口,選中「Internet協議(TCP/IP)」點擊屬性按鈕,設置虛擬機的IP地址,如咱們上面爲它分配了虛擬機在局域網的地址爲「192.168.0.4」,默認網關輸入局域網主機的IP地址,首選DNS服務器指定爲局域網主機的IP地址(圖1)。設置好後肯定。
打開虛擬機Windows2000的IE瀏覽器,輸入一個網址訪問檢測是否能正常訪問Internet了。
2、本機撥號上網
若是用本機撥號上網,那麼與局域網環境就不一樣了,本機沒有一個IP地址,虛擬機該如何設置本身的IP上網呢?VMware虛擬運行環境有一個虛擬網絡(虛擬局域網)的功能,在VMware中配置一下虛擬網絡的主機IP,虛擬機(即Windows2000系統)就能夠利用虛擬網絡主機的網關訪問Internet了。
設置過程:
首先在VMware程序「編輯」菜單下選擇「虛擬網絡設置」命令,而後虛擬網絡編輯器窗口的「摘要」選項卡下看到VMware可以模擬的網絡類型,其中有「虛擬網絡8」。
下面要添加一個虛擬網絡的網卡硬件,在「主機虛擬適配器」選項卡下添加名爲「VMnet8」的虛擬網絡,點擊「添加」按鈕,選擇VMnet8添加。
接着在「NAT」選項卡下查看虛擬的主機「VMnet8」的網關IP地址,VMware默認設置的網關IP地址是192.168.59.2,咱們也能夠本身修改它。
一樣咱們要在「虛擬機設置」中定義一下「以太網」的硬件設備,這裏選擇網絡鏈接的方式是「自定義VMnet8(NAT)」。
最後在虛擬機的「Internet協議(TCP/IP)」中設置當前環境下的虛擬計算機IP、網關、子網掩碼,如分配這臺虛擬機的IP爲192.168.59.3,網關是上一步在「NAT」中設定的網關IP,而後單擊「肯定」按鈕完成設置。
如今打開虛擬機的IE瀏覽器,輸入網址即可在虛擬機中訪問Internet,享受衝浪的樂趣了
vmware,qemu各類方式上網設置
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設置與主機相同。
例如 vmnet8ip: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
固然-s172.16.245.0/24 也要根據實際狀況修改
qemu兩種上網方式:
user modenetwork :
這種方式實現虛擬機上網很簡單,相似vmware裏的nat,qemu啓動時加入-user-net參數,虛擬機裏使用dhcp方式,便可與互聯網通訊,可是這種方式虛擬機與主機的通訊不方便。
tap/tunnetwork :
這種方式要比user mode複雜一些,可是設置好後虛擬機<-->互聯網虛擬機<-->主機通訊都很容易
這種方式設置上相似vmware的host-only,qemu使用tun/tap設備在主機上增長一塊虛擬網絡設備(tun0),而後就能夠象真實網卡同樣配置它.
首先內核中支持tap/tuns設備:
DeviceDrivers --->
Networkingsupport --->
[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@LFSnet]#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@LFSnet]#
將它cp到當前內核的模塊目錄的相應位置:
[root@LFSnet]#cp /usr/src/linux/drivers/net/tun.ko /lib/modules/`uname-r`/kernel/drivers/net
從新創建模塊依賴關係:
[root@LFSnet]#depmod
如今就能夠加載它了 :
[root@LFSnet]#modprobe tun
檢查一下:
[root@LFSnet]#lsmod |grep tun
tun 8704 0
[root@LFSnet]#
OK. 成功不從新編譯整個內核加入特殊模塊支持
若是你的xx卡不被內核支持,又能夠編譯成模塊,本身怕從新編譯內核後出問題就能夠用這個辦法只編譯本身須要的模塊,而後手動安裝到相應位置,再加載它。
這樣編譯速度要也比編譯整個內核快,不會對系統有任何損害,就可使用上XX卡嘍。^_^
要注意三點:
1.內核源碼必須與當前內核版本徹底一致,不然編譯出的模塊是不能用的。
2.注意只makemodules(編譯模塊),沒有makemodules_install(自動安裝模塊到/lib/modules下)
3.加載新編譯的模塊前必須先運行depmod,不然modprobe找不到它
其實使用當前內核配置文件(/boot/config-[kernel-version]),只加入本身須要的模塊,不作任何其餘改,makemodules_install應該也不會有問題的。
不過最穩妥的辦法仍是手動安裝它,控制權在本身手裏更踏實嘛 :-)
OK,轉回qemu上網問題
若是使用udev管理設備(一般2.6.x內核的發行版都已經使用udev),當modprobetun後就會自動創建/dev/net目錄,並建立出tun設備,作好相關連接:
[root@LFSnet]#ls -l /dev/net/tun
lrwxrwxrwx1 root root 6 Mar 25 15:35 /dev/net/tun -> ../tun
[root@LFSnet]#
若是很不幸,你沒看到它,就須要本身手動作這些工做了
[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 Linkencap:Ethernet HWaddr 0A3:8A:5D:97:CD
inetaddr:172.20.0.1 Bcast:172.20.255.255 Mask:255.255.0.0
UPBROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RXpackets:0 errors:0 dropped:0 overruns:0 frame:0
TXpackets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0txqueuelen:500
RX bytes:0(0.0 b) TX bytes:0 (0.0 b)
[root@LFS~]#
如今就能夠啓動qemu配置虛擬機網絡參數了,和vmwarehost-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,虛擬機<--->主機虛擬機<---->互聯網通訊都完成啦 linux