中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

QEMU的網(wǎng)絡配置方法解析

2019-05-28    來源:愛站科技

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

使用qemu上網(wǎng)是一件頭疼的事,很多人在網(wǎng)上搜索了方法之后都不可用,其實qemu上網(wǎng)的主要方式是在host上配置好網(wǎng)橋,將tap設備添加到網(wǎng)橋上,在起qemu虛擬機的時候用tap作為網(wǎng)絡設備,現(xiàn)在我們?nèi)タ纯碤EMU的網(wǎng)絡配置方法解析。

qemu兩種上網(wǎng)方式:

user mode network :

這種方式實現(xiàn)虛擬機上網(wǎng)很簡單,類似vmware里的nat,qemu啟動時加入-user-net參數(shù),虛擬機里使用dhcp方式,即可與互聯(lián)網(wǎng)通信,但是這種方式虛擬機與主機的通信不方便。

tap/tun network :

這種方式要比user mode復雜一些,但是設置好后 虛擬機<-->互聯(lián)網(wǎng) 虛擬機<-->主機 通信都很容易

這種方式設置上類似vmware的host-only,qemu使用tun/tap設備在主機上增加一塊虛擬網(wǎng)絡設備(tun0),然后就可以象真實網(wǎng)卡一樣配置它.

首先內(nèi)核中支持tap/tuns設備:

Device Drivers? --->?
???? Networking support? --->
??????? [M] Universal TUN/TAP device driver support

如果當前內(nèi)核沒有支持,可以重新只編譯相應模塊加入,方法很簡單:

將當前內(nèi)核配置文件cp到內(nèi)核源碼目錄下:

[root@LFS ~]#cp /boot/config-[kernel-version] /usr/src/linux 
[root@LFS ~]#cd /usr/src/linux

配置內(nèi)核,將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到當前內(nèi)核的模塊目錄的相應位置:

[root@LFS net]#cp /usr/src/linux/drivers/net/tun.ko /lib/modules/`uname -r`/kernel/drivers/net

重新建立模塊依賴關系:

[root@LFS net]#depmod

現(xiàn)在就可以加載它了 :

[root@LFS net]#modprobe tun

檢查一下:

[root@LFS net]#lsmod |grep tun
tun           8704 0
[root@LFS net]#

OK. 成功不重新編譯整個內(nèi)核加入特殊模塊支持

如果你的xx卡不被內(nèi)核支持,又可以編譯成模塊,自己怕重新編譯內(nèi)核后出問題就可以用這個辦法只編譯自己需要的模塊,然后手動安裝到相應位置,再加載它。

這樣編譯速度要也比編譯整個內(nèi)核快,不會對系統(tǒng)有任何損害,就可以使用上XX卡嘍。^_^

要注意三點:

1.內(nèi)核源碼必須與當前內(nèi)核版本完全一致,否則編譯出的模塊是不能用的。

2.注意只make modules(編譯模塊),沒有make modules_install(自動安裝模塊到/lib/modules下)

3.加載新編譯的模塊前必須先運行depmod,否則modprobe找不到它

其實使用當前內(nèi)核配置文件(/boot/config-[kernel-version]),只加入自己需要的模塊,不做任何其他改,make modules_install應該也不會有問題的。

不過最穩(wěn)妥的辦法還是手動安裝它,控制權(quán)在自己手里更踏實嘛 :-)

OK,轉(zhuǎn)回qemu上網(wǎng)問題 :)

如果使用udev管理設備(通常2.6.x內(nèi)核的發(fā)行版都已經(jīng)使用udev),當modprobe tun后就會自動建立/dev/net目錄,并創(chuàng)建出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,相關設備已經(jīng)準備好了,還需要一個tun/tap的初始化腳本 :

/etc/qemu-ifup :
#!/bin/sh
/sbin/ifconfig $1 172.20.0.1

再給予qemu-ifup x執(zhí)行權(quán)限放在/etc下就可以了。

這個腳本只能root用戶執(zhí)行,如果需要普通用戶使用qemu,就需要改成sudo /sbin/ifconfig .....再設置sudo相關權(quán)限。

啟動qemu后,它會在主機上增加一塊虛擬網(wǎng)絡設備(tun0):

[root@LFS ~]#ifconfig tun0
tun0   Link encap:Ethernet HWaddr 0A:D3: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 ~]#

現(xiàn)在就可以啟動qemu配置虛擬機網(wǎng)絡參數(shù)了,和vmware host-only一樣:

ip與tun0相同網(wǎng)段,gateway為tun0 ip 其余參數(shù)與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一樣,這樣只實現(xiàn)了虛擬機<---->主機間通信,還需要設置router,nat才可以連上互聯(lián)網(wǎng)

[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,虛擬機<--->主機 虛擬機<---->互聯(lián)網(wǎng)通信 都完成啦

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持西部數(shù)碼技術(shù)頻道。

標簽: [db:TAGG]

版權(quán)申明:本站文章部分自網(wǎng)絡,如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:我們在使用Linux時需改掉的命令習慣

下一篇:Ubuntu系統(tǒng)如何安裝Ruby