多少人爱你青春欢畅的时辰, 爱你的美丽假意和真心, 只有一个人爱你那朝圣者的灵魂, 爱你衰老了的连上痛苦的皱纹.
分类: 虚拟化
2014-07-16 12:42:45
eth0(本地物理网卡)<---br0(桥)--->tap0,tap1….(tap是给kvm guest使用的接口)
#yum install tunctl
1、创建桥
[shell]
#一般一个机器一个桥即可
sudo brctl addbr br0
multi bridge is available but no truly cakes
[/shell]
2、创建若干tap
[shell]
#KVM需要几个虚拟网卡,就几个
sudo tunctl -t tap0 -u liheyuan
sudo tunctl -t tap1 -u liheyuan
……
[/shell]
3、把eth0,tapX绑定到br0上
[shell]
#eth0肯定要绑定 不然没法上网,tap若干个绑定
sudo brctl addif br0 eth0
sudo brctl addif br0 tap0
sudo brctl addif br0 tap1
ovs-vsctl add-port br0 eth0
……
[/shell]
4、把br0设置成原来eth0的IP,eth0设置为混杂模式
[shell]
sudo ifconfig br0 192.168.1.33
sudo ifconfig eth0 0.0.0.0 promisc
[/shell]
5、启动所有的tapX
[shell]
#br0是默认启动的,tapX不是
sudo ifconfig tap0 up
sudo ifconfig tap1 up
……
[/shell]
6、修改默认网关
[shell]
#改默认网关,不然只能内网通信!
sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.1
[/shell]
7、KVM启动
[shell]
#tap0 guest的eth0
-net nic,name=k1,macaddr=00:11:22:33:66:55
-net tap,vlan=0,name=k1,ifname=tap0,script=no,downscript=no
#tap1 guest的eth1
-net nic,name=k2,macaddr=00:11:22:33:66:56
-net tap,vlan=1,name=k2,ifname=tap1,script=no,downscript=no
[/shell]
参数顺序很重
qemu-system-x86_64 -m 4096 -smp 4 -net nic,vlan=0,macaddr=52:54:00:12:34:58,name=k1 -net tap,vlan=0,name=k1,ifname=weblampNIC1,script=no,downscript=no -net nic,vlan=1,macaddr=52:54:00:12:34:59,name=k2 -net tap,vlan=1,name=k2,ifname=weblampNIC2,script=no,downscript=no -vnc :14 -hda /root/kvm_demo/weblamp.img -daemonize
登录CentOS 后,qemu启动命令中的ifname=tap1, 和手工创建的tap1需要对应
1.检查已连接网卡
[root@CentOSKVM01 ~]# ls /sys/class/net/
br0 em1.11 em2 em4 ovs-system tap1 tap3
em1 em1.12 em3 lo tap0 tap2
启动网卡
ifconfig em2/em4/em1.11
配置网卡,vim /etc/sysconfig/network-scripts/ifcfg-em1
如过没有uuid,需要生成一个
#uuidgen
[root@xenserver ~]# brctl --help
Usage: brctl [commands]
commands:
addbr
delbr
addif
delif
setageing
setbridgeprio
setfd
sethello
setmaxage
setpathcost
setportprio
show show a list of bridges
showmacs
showstp
stp
==================================================================
addbr bridge的名称 #添加bridge;
delbr bridge的名称 #删除bridge;
addif bridge的名称 device的名称 #添加接口到bridge;
delif bridge的名称 device的名称 #从bridge中删除接口
setageing bridge的名称 时间 #设置老化时间,即生存周期
setbridgeprio bridge的名称 优先级 #设置bridge的优先级
setfd bridge的名称 时间 #设置bridge转发延迟时间
sethello bridge的名称 时间 #设置hello时间
setmaxage bridge的名称 时间 #设置消息的最大生命周期
setpathcost bridge的名称 端口 权重 #设置路径的权值
setportprio bridge的名称 端口 优先级 #设置端口的优先级
show #显示bridge列表
showmacs bridge的名称 #显示MAC地址
showstp bridge的名称 #显示bridge的stp信息
stp bridge的名称 {on|off} #开/关stp
设置linux让网桥运行 配置网桥
我们需要让linux知道网桥,首先告诉它,我们想要一个虚拟的以太网桥接口:(这将在主机bridge上执行,不清楚的看看测试场景)
root@bridge:~> brctl addbr br0
其次,我们不需要STP(生成树协议)等。因为我们只有一个路由器,是绝对不可能形成一个环的。我们可以关闭这个功能。(这样也可以减少网络环境的数据包污染):
root@bridge:~> brctl stp br0 off
经过这些准备工作后,我们终于可以做一些立竿见影的事了。我们添加两个(或更多)以太网物理接口,意思是:我们将他们附加到刚生成的逻辑(虚拟)网桥接口br0上。
root@bridge:~> brctl addif br0 eth0
root@bridge:~> brctl addif br0 eth1
现在,原来我们的两个以太网物理接口变成了网桥上的两个逻辑端口。那两个物理接口过去存在,未来也不会消失。要不信的话,去看看好了。 .现在他们成了逻辑网桥设备的一部分了,所以不再需要IP地址。下面我们将这些IP地址释放掉
root@bridge:~> ifconfig eth0 down
root@bridge:~> ifconfig eth1 down
root@bridge:~> ifconfig eth0 0.0.0.0 up
root@bridge:~> ifconfig eth1 0.0.0.0 up
好了!我们现在有了一个任何IP地址都没有的box w/o了。 好了,这下如果你想通过TP配置你的防火墙或路由器的话,你就只能通过本地的控制端口了。你不会告诉我你的机器上连串行端口都没有吧?
注:上面红色部分其实是可选的,在试验中,我发现,就算不把原有的网卡地址释放掉,网桥也能工作!但是,为了更规范,或者说为了避免有什幺莫名其妙的问题,最好还是按要求做,执行这四步吧!
最后,启用网桥 root@bridge:~> ifconfig br0 up
可选: 我们给这个新的桥接口分配一个IP地址
root@bridge:~> ifconfig br0 10.0.3.129
或者把最后这两步合成一步:
root@bridge:~> ifconfig br0 10.0.3.129 up
就是多一个up!
这下我们做完了 。
关闭网桥命令
brctl delif ena eth1;
brctl delif ena eth0;
ifconfig ena down;
brctl delbr ena;