虚拟化技术之网络桥接

虚拟机的网络

        首先虚拟机的网络,虚拟机创建出来后,希望和主机通信,和其他外网中的主机通信,也希望和其他的虚拟机通信,该用什么方式呢?
    大多数人都会想到NAT,桥接,Host-Only。
虚拟化技术之网络桥接_第1张图片

桥接:

      特点:虚拟机可以和外界通信,虚拟机之间可以通信,虚拟机可以跟真机通信。
      虚拟机需要虚拟一个网卡设备。我们知道,物理机上都有一个物理网卡,而这个物理网卡就连接到交换机上。而这个物理网卡一定是被真机试用的。那怎么实现虚拟机去和外界通信的。桥接的意思就是
      将真机的网卡桥接。将这个真机网卡当做交换机,这个交换机工作在混杂模式下。什么帧数据都接收。现在真机网卡成了交换机了。现在外界的主机要与我的真机通信。我真机网卡当做了交换机,并虚拟了一个网卡接收给真机的数据。当然,如果目标MAC是虚拟机的网卡的MAC。那么数据就发往这个虚拟机。如果,虚拟机上线了,虚拟机将自己的MAC通告,信息传给真机网卡的交换机,交换机转发信息。局域网内的其他主机接到信息,就好像虚拟机和自己处在同一个局域网内一样。
虚拟化技术之网络桥接_第2张图片


仅主机:(vmnet1)
      特点:虚拟机之间可以通信,虚拟机可以和真机通信,但是虚拟机不能与外界通信。
      真机先虚拟一块网卡,VMware再虚拟一个交换机。虚拟机的各个虚拟网卡连接到这个虚拟交换机上,然后再将真机虚拟出的网卡接到这个虚拟交换机上,就可以实现虚拟机之间加上真机的通信了。ps:如果真机的网卡可以与真机的虚拟网卡通信并转发数据包,那么就可以实现虚拟机与外部局域网通信,这叫路由模型。这时,虚拟机把网关指向真机的虚拟网卡上的地址就OK了。(但路由这不常用,除非静态路由)
     虚拟化技术之网络桥接_第3张图片

NAT:(vmnet8)
      特点:虚拟机之间可以通信,虚拟机之间可以通信,虚拟机与真机可以通信。     
      虚拟一个网卡VMnat8,虚拟机的网关应该都指向VMnet8.当虚拟机与外部局域网通信时,源地址被真机修改成了真机的IP地址,局域网的其他主机也以为是我的真机与他们在通信。所以回复数据包的时候,目标IP是我真机的IP。真机收到请求再地址转换,以达到通信的目的。
虚拟化技术之网络桥接_第4张图片
  
在Linux上创建桥设备

首先最开始的网络信息如下:
[root@localhost network-scripts]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:02:2B:7E  
          inet addr:192.168.217.131  Bcast:192.168.217.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe02:2b7e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:301 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:48584 (47.4 KiB)  TX bytes:4344 (4.2 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:453 errors:0 dropped:0 overruns:0 frame:0
          TX packets:453 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:87716 (85.6 KiB)  TX bytes:87716 (85.6 KiB)

第一,要注意。桥接的话,不支持NetworkManager去管理桥设备,所以创建桥设备,必须关掉NetworkManager。
[root@localhost network-scripts]# chkconfig --list|grep NetworkManager
NetworkManager 	0:off	1:off	2:off	3:off	4:off	5:off	6:off
[root@localhost network-scripts]# service NetworkManager status
NetworkManager is stopped
[root@localhost network-scripts]# 
所以之前必须记住关掉NetworkManager。

第二,想要管理桥设备必须安装必须的桥管理工具。(真正的实现实是由内核tap模块)
[root@localhost network-scripts]# yum -y install bridge-utils
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
rhel6                                                    | 3.9 kB     00:00 ... 
Setting up Install Process
Package bridge-utils-1.2-10.el6.x86_64 already installed and latest version
Nothing to do


通过修改配置文件的方式修改桥接。

配置文件ifcfg-br0
DEVICE="br0"
NM_CONTROLLED="no"
BOOTPROTO="none"
IPADDR=192.168.217.131
NETMASK=255.255.255.0
GATEWAY=192.168.217.2
IPV6INIT="no"
ONBOOT="yes"
TYPE="Bridge"
USERCTL="no"
配置物理网卡的配置文件ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
NM_CONTROLLED=no
IPV6INIT="yes"
ONBOOT="yes"
TYPE="Ethernet"
BRIDGE="br0"

重启网络服务。
[root@localhost network-scripts]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
Bringing up interface br0:  Determining if ip address 192.168.217.131 is already in use for device br0...
                                                           [  OK  ]
查看网络信息。
[root@localhost network-scripts]# ifconfig 
br0       Link encap:Ethernet  HWaddr 00:0C:29:02:2B:7E  
          inet addr:192.168.217.131  Bcast:192.168.217.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe02:2b7e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:875 (875.0 b)  TX bytes:1074 (1.0 KiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:02:2B:7E  
          inet6 addr: fe80::20c:29ff:fe02:2b7e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:348 errors:0 dropped:0 overruns:0 frame:0
          TX packets:84 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:57691 (56.3 KiB)  TX bytes:5706 (5.5 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:574 errors:0 dropped:0 overruns:0 frame:0
          TX packets:574 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:111480 (108.8 KiB)  TX bytes:111480 (108.8 KiB)


使用命令查看当前的桥设备。
[root@localhost network-scripts]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000c29022b7e	no		eth0

启用STP的功能
[root@localhost network-scripts]# brctl stp br0 on
[root@localhost network-scripts]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000c29022b7e	yes		eth0

基于命令行的实现。

添加一个桥设备
[root@monitor ~]# brctl addbr br0
[root@monitor ~]# 
[root@monitor ~]# ifconfig -a
br0       Link encap:Ethernet  HWaddr C6:50:BC:BE:88:68  
          BROADCAST 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:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:7E:C9:4F  
          inet addr:192.168.217.129  Bcast:192.168.217.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe7e:c94f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14062 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7065 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:20762199 (19.8 MiB)  TX bytes:392006 (382.8 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:18 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1064 (1.0 KiB)  TX bytes:1064 (1.0 KiB)

拆掉eth0上的IP
[root@monitor ~]# ifconfig eth0 0 up
[root@monitor ~]# 
[root@monitor ~]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:7E:C9:4F  
          inet6 addr: fe80::20c:29ff:fe7e:c94f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14192 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7084 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:20772188 (19.8 MiB)  TX bytes:394136 (384.8 KiB)

为br0添加eth0网卡
[root@monitor ~]# brctl addif br0 eth0

为br0添加地址相关内容。
[root@monitor ~]# ifconfig br0 192.168.217.129/24 up
[root@monitor ~]# route add default gw 192.168.217.2
[root@monitor ~]# 
[root@monitor ~]# ifconfig 
br0       Link encap:Ethernet  HWaddr 00:0C:29:7E:C9:4F  
          inet addr:192.168.217.129  Bcast:192.168.217.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe7e:c94f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:582 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:26772 (26.1 KiB)  TX bytes:606 (606.0 b)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:7E:C9:4F  
          inet6 addr: fe80::20c:29ff:fe7e:c94f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14868 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7091 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:20814087 (19.8 MiB)  TX bytes:394562 (385.3 KiB)

查看。
[root@monitor ~]# brctl stp br0 on
[root@monitor ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000c297ec94f	yes		eth0








你可能感兴趣的:(运维)