CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

摘要:KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式。Bridge方式的配置原理和步骤。Bridge方式适用于服务器主机的虚拟化。NAT方式适用于桌面主机的虚拟化。

NAT的网络结构图:
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

Bridge的网络结构见图:

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

一、Bridge方式

问题

客户机安装完成后,需要为其设置网络接口,以便和主机网络,客户机之间的网络通信。事实上,如果要在安装时使用网络通信,需要提前设置客户机的网络连接。

KVM客户机网络连接有两种方式:

  • 用户网络(User Networking):让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机,性能上也需要大的调整。NAT方式。
  • 虚拟网桥(Virtual Bridge):这种方式要比用户网络复杂一些,但是设置好后客户机与互联网,客户机与主机之间的通信都很容易。Bridge方式。

本文主要解释Bridge方式的配置。

Bridge方式原理

Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机

桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况。

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

如上图,网桥的基本原理就是创建一个桥接接口br0,在物理网卡和虚拟网络接口之间传递数据。

Bridge方式的适用范围

服务器主机虚拟化。

网桥方式配置步骤

1、编辑修改网络设备脚本文件,增加网桥设备br0

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=static
IPADDR=10.0.112.39
NETMASK=255.255.255.0
GATEWAY=10.0.112.1
DEFROUTE=yes
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

上述配置将虚拟网卡配置在了10.0.112.* 网段。如果不需要静态地址,可以把配置地址的相关项屏蔽。如:

DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=dhcp

2、编辑修改网络设备脚本文件,修改网卡设备eth0

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE=Ethernet
BOOTPROTO=none
BRIDGE="br0"
NAME="System eth0"
HWADDR=44:37:E6:4A:62:AD
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

NM_CONTROLLED这个属性值,根据RedHat公司的文档是必须设置为“no”的(这个值为“yes”表示可以由服务NetworkManager来管理。NetworkManager服务不支持桥接,所以要设置为“no”。),但实际上发现设置为“yes”没有问题。通讯正常。

3、重启网络服务

service network restart

4、校验桥接接口

#brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.4437e64a62ad       no              eth0

客户机配置

客户机安装时注意,网络要选择用br0桥接方式。

图形化的方式:

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

文本方式:

编辑修改虚拟机配置文件/etc/libvirt/qemu/v1.xml,增加如下内容

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
<interface type='bridge'>
      <mac address='52:54:00:da:c3:dc'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

虚拟机启动后,验证网络接口是否正常:

# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.4437e64a62ad       no              eth0
                                                                              vnet0

NAT方式的影响

网桥方式的配置与虚拟机支持模块安装时预置的虚拟网络桥接接口virbr0没有任何关系,配置网桥方式时,可以把virbr0接口(即NAT方式里面的default虚拟网络)删除。

virsh net-destroy default
virsh net-undefine default
service libvirtd restart

二、NAT方式

问题

客户机安装完成后,需要为其设置网络接口,以便和主机网络,客户机之间的网络通信。事实上,如果要在安装时使用网络通信,需要提前设置客户机的网络连接。

KVM 客户机网络连接有两种方式:

  • 用户网络(User Networking):让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机,性能上也需要大的调整。NAT方式。
  • 虚拟网桥(Virtual Bridge):这种方式要比用户网络复杂一些,但是设置好后客户机与互联网,客户机与主机之间的通信都很容易。Bridge方式。

本文主要解释NAT方式的配置。

NAT方式原理

NAT方式是KVM安装后的默认方式。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。

检查当前的网络设置:

#virsh net-list --all
Name State Autostart
-----------------------------------------
default active yes

default是宿主机安装虚拟机支持模块的时候自动安装的。

检查当前的网络接口:

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
#ifconfig
eth0      Link encap:Ethernet  HWaddr 44:37:E6:4A:62:AD  
          inet6 addr: fe80::4637:e6ff:fe4a:62ad/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:987782 errors:0 dropped:0 overruns:0 frame:0
          TX packets:84155 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:109919111 (104.8 MiB)  TX bytes:12695454 (12.1 MiB)
          Interrupt:17 

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:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:240 (240.0 b)  TX bytes:240 (240.0 b)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:B9:B0:96  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2126 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:100387 (98.0 KiB)

virbr0-nic Link encap:Ethernet  HWaddr 52:54:00:B9:B0:96  
          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:500 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

其中virbr0是由宿主机虚拟机支持模块安装时产生的虚拟网络接口,也是一个switch和bridge,负责把内容分发到各虚拟机。

几个虚拟机管理模块产生的接口关系如下图:

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

从图上可以看出,虚拟接口和物理接口之间没有连接关系,所以虚拟机只能在通过虚拟的网络访问外部世界,无法从网络上定位和访问虚拟主机

virbr0是一个桥接器,接收所有到网络192.168.122.*的内容。从下面命令可以验证:

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400b9b096       yes             virbr0-nic

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

同时,虚拟机支持模块会修改iptables规则,通过命令可以查看:

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
# iptables -t nat -L -nv
Chain PREROUTING (policy ACCEPT 16924 packets, 2759K bytes)
pkts bytes target     prot opt in     out     source               destination
Chain POSTROUTING (policy ACCEPT 2009 packets, 125K bytes)
pkts bytes target     prot opt in     out     source               destination        
 421 31847 MASQUERADE  all  --  *      *       192.168.122.0/24    !192.168.122.0/24   ----------->这条是关键,它配置了NAT功能。
Chain OUTPUT (policy ACCEPT 2011 packets, 125K bytes)
pkts bytes target     prot opt in     out     source               destination        

    
# iptables -t filter -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination        
 1    74 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           udp dpt:53    ---->由libvirt脚本自动写入
 0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           tcp dpt:53    ---->由libvirt脚本自动写入
 3   984 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           udp dpt:67    ---->由libvirt脚本自动写入
 0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           tcp dpt:67    ---->由libvirt脚本自动写入
178K  195M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED    ---->iptables的系统预设
 2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0                ---->iptables的系统预设
1148  216K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0                ---->iptables的系统预设
 1    60 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22  ---->iptables的系统预设
16564 2721K REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited ---->iptables的系统预设
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination        
3726 3485K ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24    state RELATED,ESTABLISHED  ---->由libvirt脚本自动写入
3491  399K ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0                ---->由libvirt脚本自动写入
 0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0                ---->由libvirt脚本自动写入
 0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable  ---->由libvirt脚本自动写入
 0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable  ---->由libvirt脚本自动写入
 0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited  ---->iptables的系统预设
Chain OUTPUT (policy ACCEPT 181K packets, 138M bytes)
pkts bytes target     prot opt in     out     source               destination
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

如果没有default的话,或者需要扩展自己的虚拟网络,可以使用命令重新安装NAT。

NAT方式的适用范围

桌面主机虚拟化。

创建步骤

virsh net-define /usr/share/libvirt/networks/default.xml

此命令定义一个虚拟网络,default.xml的内容:

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
<network>
  <name>default</name>
  <bridge name="virbr0" />
  <forward/>
  <ip address="192.168.122.1" netmask="255.255.255.0">
    <dhcp>
      <range start="192.168.122.2" end="192.168.122.254" />
    </dhcp>
  </ip>
</network>
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

也可以修改xml,创建自己的虚拟网络。

标记为自动启动:

#virsh net-autostart default
Network default marked as autostarted

启动网络:

#virsh net-start default
Network default started

网络启动后可以用命令brctl show查看和验证。

修改/etc/sysctl.conf中参数,允许ip转发:

net.ipv4.ip_forward=1

客户机安装

客户机安装时注意,网络要选择用NAT方式。

图形化的方式:

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

文本方式:

编辑修改虚拟机配置文件/etc/libvirt/qemu/v1.xml,增加如下内容

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
    <interface type='network'>
      <mac address='52:54:00:4f:1b:07'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

虚拟机启动后,验证网络接口是否正常:

# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400b9b096       yes             virbr0-nic
                                                                                 vnet0

Bridge方式的影响

Bridge方式配置出来的接口对NAT方式没有影响,因为NAT方式并没有使用物理网卡。但作为客户机,只能选择其中的一种。

三、桥接补充

如果我们搭建的环境是必须使用虚拟化的,或者说虚拟化是我们搭建这套环境的主要目的之一,那么我们在进行系统安装的时候将所有的虚拟化组件全部安装上,避免后期出现安装不全或者某些服务依赖关系没有解决好,这样排错的时间远远高于安装时候多装几个包的时间。

在我们安装好虚拟化组件(RHEL6.0之后,系统自带的均是KVM,已经没有XEN虚拟化的支持了),会自动生成一个virbr0这样的桥接设备

[root@clovemzone ~]# brctl  show 
bridge name    bridge id        STP enabled    interfaces 
virbr0      8000.5254007543ce    yes          virbr0-nic

virbr0默认使用的是NAT方式跟虚拟机网卡进行通讯,在实际生产环境中我们多数情况下面使用桥接Bridge的方式进行物理机跟虚拟机的通讯,删除这个virbr0的方法在上面已经说明,这篇文章主要讲述Bridge的简单实现原理以及实际配置方法。 

假设我们的物理机上有一块有线网卡,在系统中显示为eth0,我们搭建将其配置成桥接设备br0

我们经常所说的Bridge设备其实就是网桥设备,也就相当于现在的二层交换机,用于连接同一网段内的所有机器,所以我们的目的就是将网络设备eth0配置成br0,此时br0就成为了所谓的交换机设备,我们物理机的eth0也是连接在上面的。

[root@clovemzone ~]# brctl  show 
bridge name      bridge id    STP enabled  interfaces 
br0          8000.0025903afe42    no      eth0

我们创建两个虚拟机之后,所有的虚拟机网卡均连接br0,此时查看br0上面连接的设备

[root@clovemzone ~]# brctl  show 
bridge name      bridge id    STP enabled  interfaces 
br0          8000.0025903afe42    no      eth0 
                                            vnet0 
                                            vnet1

为了让大家了解的更加透彻,可以通过下图并结合实际操作进行简单分析

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

1、查看物理机网卡设备信息图1所示

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
[root@master ~]# ip addr show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
    inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff 
    inet 192.168.3.176/24 brd 192.168.3.255 scope global eth0 
    inet6 fe80::5054:ff:fea7:b756/64 scope link 
      valid_lft forever preferred_lft forever
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

2、配置桥接设备br0

[root@master ~]# rpm -q bridge-utils    //查看桥接软件是否安装 
bridge-utils-1.2-9.el6.x86_64 
[root@master ~]# brctl  show 
bridge name    bridge id    STP enabled    interfaces 

此时无任何桥接设备,我们可以手动添加也可以在 文件中进行添加生效。

(1)、手动添加

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
[root@master ~]# brctl  addbr br0 
[root@master ~]# brctl  show 
bridge name    bridge id    STP enabled    interfaces 
br0            8000.000000000000        no 
[root@master ~]# brctl  addif br0 eth0 
[root@master ~]# brctl  show 
bridge name  bridge id        STP enabled  interfaces 
br0        8000.000000000000        no        eth0
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

删除eth0上面的ip地址,将br0上面添加上固定ip地址

[root@master ~]# ip addr del dev eth0 192.168.3.176/24        //删除eth0上的IP地址 
[root@master ~]# ifconfig  br0 192.168.3.176/24 up              //配置br0的IP地址并启动设备 
[root@master ~]# route add default gw 192.168.3.1              //重新加入默认网关

查看配置是否生效

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
[root@master ~]# route      //查看默认网关 
Kernel IP routing table 
Destination    Gateway        Genmask        Flags Metric Ref    Use Iface 
192.168.3.0    *              255.255.255.0  U    0      0        0 br0 
default        192.168.3.1    0.0.0.0        UG    0      0        0 br0 
[root@master ~]# ip addr show    //查看eth0跟br0的IP信息 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
    inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff 
    inet6 fe80::5054:ff:fea7:b756/64 scope link 
      valid_lft forever preferred_lft forever 
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff 
    inet 192.168.3.176/24 brd 192.168.3.255 scope global br0 
    inet6 fe80::5054:ff:fea7:b756/64 scope link 
      valid_lft forever preferred_lft forever 
[root@master ~]# ping 192.168.3.1 -w2        //测试同一网段连接是否成功,判断网卡IP是否绑定正确
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data. 
64 bytes from 192.168.3.1: icmp_seq=1 ttl=255 time=3.45 ms 
64 bytes from 192.168.3.1: icmp_seq=2 ttl=255 time=4.20 ms 
--- 192.168.3.1 ping statistics --- 
2 packets transmitted, 2 received, 0% packet loss, time 2000ms 
rtt min/avg/max/mdev = 3.457/3.832/4.208/0.380 ms 
[root@master ~]# ping 192.168.1.1 -w2  //测试不同网段连接是否成功,判断网关是否添加成功 
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=2.38 ms 
64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=7.64 ms 
--- 192.168.1.1 ping statistics --- 
2 packets transmitted, 2 received, 0% packet loss, time 2000ms 
rtt min/avg/max/mdev = 2.381/5.011/7.642/2.631 ms
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

上面是通过命令进行的手动配置方法,但是大家都清楚,这些命令配置的结果在服务器重启之后就不能生效了,要想使得所有配置永久生效,我们还是需要通过配置文件进行配置,然后重启网卡设备,让系统帮我们配置,然后重启之后也是生效的。

通过上面的手动配置方法,大家可以清楚得看到一个桥接设备的配置流程,这个在你写到配置文件里面,然后让系统帮你配置的时候是看不到的 :) ,那么下面我们将所有的配置还原,通过配置文件进行相关自动化配置吧。

还原原始配置

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
[root@master ~]# route delete default            //删除默认网关

[root@master ~]# route -n
Kernel IP routing table
Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
192.168.3.0    0.0.0.0        255.255.255.0  U    0      0        0 br0

[root@master ~]# brctl show 
bridge name        bridge id                STP enabled        interfaces
br0                8000.525400a7b756        no                            eth0
[root@master ~]# brctl  delif  br0    eth0    //断开/删除br0上的eth0设备
[root@master ~]#ifconfig br0 down        //让br0设备停止活动
[root@master ~]#brctl delbr  br0          //删除br0
root@master ~]# brctl show                    //查看br0是否依然存在
bridge name        bridge id                STP enabled        interfaces
[root@master ~]# ifconfig  eth0 192.168.3.176/24    //重新给eth0分配IP地址
root@master ~]# route add default gw 192.168.3.1  //重新加入默认网关
1234567891011 [root@master ~]# ip addr show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
    inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff 
    inet 192.168.3.176/24 brd 192.168.3.255 scope global eth0 
    inet6 fe80::5054:ff:fea7:b756/64 scope link 
      valid_lft forever preferred_lft forever
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

(2)、通过配置文件配置桥接设备

配置文件请自行备份

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
[root@master ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0 
TYPE=Ethernet 
ONBOOT=yes
BRIDGE=br0 
[root@master ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE=br0 
TYPE=Bridge 
ONBOOT=yes
BOOTPROTO=static 
IPADDR=192.168.3.176 
NETMASK=255.255.255.0 
GATEWAY=192.168.3.1 
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

参数详解:

ifcfg-eth0

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
      Device              指定网卡设备名

      TYPE                指定网卡的类型为以太网卡

      ONBOOT        指定网卡是否开机启动,切记要设置为yes

      BRIDGE            指定桥接设备,此处指定为br0设备
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

建议:以上变量(非变量值)均为大写。

ifcfg-br0

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
      Device              指定网卡设备名
      TYPE                指定网卡的类型为桥接
      ONBOOT        指定网卡是否开机启动,切记要设置为yes

      BOOTPROTO 指定网卡启动如何获取IP地址,设置静态
      IPADDR          设置br0绑定的IP地址
      NETMASK      设置子网掩码地址

      GATEWAY      设置网关
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

建议: TYPE变量的变量值按照第一个字母大写,其余字母小写的原则,如Ethernet,Bridge

配置完成之后,重启网络服务

如担心干扰,建议停止NetworkManager 服务,这个服务挺讨厌

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
[root@master ~]# service    NetworkManager stop 
[root@master ~]#chkconfig NetworkManager off 
[root@master ~]# service network restart 
[root@master ~]# ip addr show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
    inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff 
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff 
    inet 192.168.3.176/24 brd 192.168.3.255 scope global br0 
    inet6 fe80::5054:ff:fea7:b756/64 scope link 
      valid_lft forever preferred_lft forever
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

查看桥接设备信息

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解
[root@master ~]# brctl  show 
bridge name  bridge id    STP enabled  interfaces 
br0        8000.525400a7b756    no        eth0 
[root@master ~]# route 
Kernel IP routing table 
Destination    Gateway        Genmask        Flags Metric Ref    Use Iface 
192.168.3.0    *              255.255.255.0  U    0      0        0 br0 
link-local      *              255.255.0.0    U    1004  0        0 br0 
default        192.168.3.1    0.0.0.0        UG    0      0        0 br0
CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

由此,桥接设备br0已经配置成功,当创建虚拟机的时候选择虚拟网卡接口的时候选择br0即可

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解

开始安装虚拟机,此时查看桥接设备br0上面的网卡连接情况:

[root@master ~]# brctl  show 
bridge name      bridge id    STP enabled  interfaces 
br0          8000.0025903afe42    no      eth0 
                                            vnet0 

 

转自:https://www.cnblogs.com/EasonJim/p/8367645.html

上一篇:学习使用stat(1),并用C语言实现


下一篇:内存分析、三种初始化以及数组边界