日志分类

qemu-bridge 网络搭建

qemu-bridge 网络搭建:

#apt-get install uml-utilities

安装uml-utilities,User Mode Linux 是Linux内核的一种移植,这个包能够提供一些虚拟化的工具,而这里我们将用到网卡的虚拟化工具tunctl:

#apt-get install bridge-utils

这个就更不用说了,想要实现网桥,那么就需要安装网桥的工具了,brctl就是这个包来提供的哦~

然后把所有需要使用tap0虚拟网卡的同志加入uml-net组里使其具有访问/dev/net/tun的权限

#gpasswd   -a <user> uml-net

Note: 把<user>换成你用虚拟机的所有用户,不要照抄哦~

(你可以看到ls -l /dev/net/tun)

crw-rw—- 1 root uml-net 10, 200 2008-08-05 16:11 /dev/net/tun

否则会:"
warning: could not open /dev/net/tun: no virtual network emulation
Could not initialize device ‘tap’
"
修改了以后可能需要重新登录才能生效,如果不想那样,那就
#chmod 666 /dev/net/tun
就可以了,不过感觉不那么好..

很多人就奇怪怎么不能初始化呢,问题就在权限上了~

初始化tap0网卡给用户:

#tunctl -u <User>    -t tap0

-u 用户名
-t设备名,谁说一定要是tap0来着?你用love007当网卡我也没意见阿~,但默认的是tap0,这也是网上教程泛滥的原因吧

确认一下:
#/sbin/ifconfig tap0
tap0      Link encap:Ethernet  HWaddr AA:2D:FF:82:4A:3F
          inet6 addr: fe80::a82d:ffff:fe82:4a3f/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:65 errors:0 dropped:0 overruns:0 frame:0
          TX packets:83 errors:0 dropped:317 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:6588 (6.4 KiB)  TX bytes:9300 (9.0 KiB)

OK!好了~

用完了还可以删除它哦,很多教程没有说这个,呵呵
# tunctl -d tap0
Set ‘tap0′ nonpersistent

这样就把虚拟网卡给删除了~
#ifconfig tap0
tap0: error fetching interface information: Device not found
很简单吧?

然后就是修改Debian的网络配置文件 /etc/network/interface

首先说明一下我机器的情况:我这里是主机使用的网桥是br0,,机器上有2块网卡,分别是eth1,eth2(没有eth0,升级以后就被修改了…)其中eth2是连接internet的,eth1有时带笔记本过来插上就用,很方便,而tap0留给qemu或者其他虚拟机都可以

#vi /etc/network/interface

auto lo
iface lo inet loopback

auto br0
iface br0 inet static
address 192.168.1.103
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
broadcast 192.168.1.255

bridge_ports   eth1   eth2  tap0
bridge_maxwait  4

bridge_fd       9
bridge_maxage   12
bridge_stp      off

如果想要这样配置还需要一个前提 就是安装了ifupdown(好像一般都安装了…你可用确认一下$dpkg -l ifupdown )但我还是提一下,否则需要在rc.local里面写命令(用ifconfig和brctl),但其实原理是一样的

Note:
br0的配置就是把它当一个普通的网卡,参数配好,然后从外面看你的主机的时候会看到的是br0也就是大网桥的地址,机器上所有的服务所使用的IP也是这个IP,当然你有其他配置就另说了,我是指的默认配置的话,从外面来看br0就像你这个机器的实际网卡一样

bridge_ports  这个就是需要加入网桥的网卡了,这里根据我的情况是eth1(笔记本连入时需要的网卡),eth2(主internet网卡),tap0(虚拟机网卡),如果你有多个虚拟机或多个网卡,都写这吧~一开机就初始化了,呵呵~方便

bridge_maxwait
这个是启动网桥时最大等待时间,有时如果应用程序需要绑定特定网卡时就需要等待网桥完全启动以后,否则可能会出现绑定错误哦

bridge_fd
设置网桥的转发延迟,默认是15,可以修改的小一点,其他的不设置也应该没什么问题

然后保存

qemu启动网络的时候总回去运行/etc/qemu-ifup
但我们现在已经在主机上把网络环境构建好了,所以不运行它也没问题,所以我们

#cp qemu-ifup qemu-ifup.bak

备份一下,以防万一

#vi qemu-ifup

写入以下内容,主要是不想让以前的东西起作用

#!/bin/sh
echo "Executing /etc/qemu-ifup…"

然后

$mkdir -p $HOME/bin
$vi $HOME/bin/qemu-start

加入:

#!/bin/sh

ARGS="-hda /home/yexing/nfs/debian_bak.img -boot c -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 -m 256 -localtime"

echo "Starting QEMU with…"
echo $ARGS
echo "…."
exec qemu $ARGS

这样就不用记那么多难记的命令了,
然后

$qemu-start &

就可以运行拉~:)

Note:
-boot :表示从硬盘启动
-net nic:表示使用网卡,如果不加的话,会建立一个单独的网卡
-net tap 表示使用主机tap 网络,也就是我们前面建立的虚拟网络拉~
里面的vlan不用加也是可以的,ifname是tap网络的网卡名字,最好写上告诉系统的tap0网卡
-m 表示使用多少M的内存

更多的选项我也不是很明白
man qemu
看一下好了

为了每次启动的时候都能自动加载,讲以下2行加入到/etc/rc.local里:
#vi /etc/rc.local

/usr/sbin/tunctl -t tap0 -u <User>

/sbin/ifconfig tap0 up

/usr/sbin/brctl addif br0 tap0

<User>是用qemu虚拟机的用户名
前一句是建立tap0这个虚拟网卡,后一句是讲其加入到br0这个网桥里去

OK!大功告成!

对了还要把$HOME/bin 加入到你的$PATH里去,别忘了!

有问题,联系yexingok  { at }   gmail.com

相关文章:

  1. Qemu模拟器安装
  2. 一个提权技巧和两个本地后门技巧
  3. Linux命令行常用命令总结
  4. inittab文件解析
  5. 定时执行crontab使用方法详解

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>