Chinaunix首页 | 论坛 | 博客
  • 博客访问: 111372
  • 博文数量: 29
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-11 15:42
个人简介

多少人爱你青春欢畅的时辰, 爱你的美丽假意和真心, 只有一个人爱你那朝圣者的灵魂, 爱你衰老了的连上痛苦的皱纹.

文章分类

全部博文(29)

文章存档

2018年(1)

2015年(2)

2014年(26)

我的朋友

分类: 虚拟化

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

brctl 网桥工具


[root@xenserver ~]# brctl --help

Usage: brctl [commands]

commands:

        addbr                            add bridge

        delbr                            delete bridge

        addif        add interface to bridge

        delif        delete interface from bridge

        setageing       

        setbridgeprio            set bridge priority

        setfd           

        sethello        

        setmaxage

        setpathcost set path cost

        setportprio set port priority

        show                                     show a list of bridges

        showmacs                 show a list of mac addrs

        showstp                 show bridge stp info

        stp {on|off}        turn stp on/off


==================================================================


        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;



阅读(1058) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~