KVM虚拟机网络配置方式 (Bridge方式 Nat方式)

Summary

使用libvirt安装完qemu kvm虚拟机,但是发现虚拟机不能上网,虚拟机想要上网,有很多中方法。
我们称Guest机器为虚拟机,Host机器为开机运行的真实机器。

KVM虚拟机网络配置一般的两种方式:

  • NAT (默认上网) 虚拟机利用host机器的ip进行上网.对外显示一个ip
  • Bridge 将虚拟机桥接到host机器的网卡上,guest和host机器都通过bridge上网.对外不同的ip

NAT 的网络结构图:

这里写图片描述

Bridge 的网络结构图:
这里写图片描述

简单介绍 (Host-Only也是网络配置的一种方式,这里只说它的概念)

桥接

桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段。所以当我们要在局域网使用虚拟机,对局域网其他pc提供服务时,例如提供ftp,提供ssh,提供http服务,那么就要选择桥接模式。

例如
大学宿舍里有一个路由器,宿舍里四个人连接这个路由器,路由器的wanip就不理会了,
这个ip是动态获取的,而lanip默认是192.168.1.1,子网掩码是255.255.255.0。
而其他四个人是自动获取ip,假设四个人的ip是:
A:192.168.1.100/255.255.255.0, 
B:192.168.1.101/255.255.255.0,
C:192.168.1.102/255.255.255.0, 
D:192.168.1.103/255.255.255.0
那么虚拟机的ip可以设置的ip地址是192.168.1.2-192.168.1.99,192.168.1.104-192.168.1.254
(网络地址全0和全1的除外,再除去ABCD四个人的ip地址)
那么虚拟机的ip地址可以设置为192.168.1.98/255.255.255.0,设置了这个ip地址,
ABCD这四个人就可以通过192.168.1.98访问虚拟机了,如果虚拟机需要上外网,
那么还需要配置虚拟机的路由地址,就是192.168.1.1了,这样,虚拟机就可以上外网了,
但是,上网我们一般是通过域名去访问外网的,所以我们还需要为虚拟机配置一个dns服务器,
我们可以简单点,把dns服务器地址配置为google的dns服务器:8.8.8.8,到此,虚拟机就可以上网了。

NAT

NAT模式中,就是让虚拟机借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。
NAT模式中,虚拟机的网卡和物理网卡的网络,不在同一个网络,虚拟机的网卡,是提供的一个虚拟网络。
NAT和桥接的比较:
(1) NAT模式和桥接模式虚拟机都可以上外网。
(2) 由于NAT的网络在一个虚拟网络里,所以局域网其他主机是无法访问虚拟机的,而宿主机可以访问虚拟机,虚拟机可以访问局域网的所有主机,因为真实的局域网相对于NAT的虚拟网络,就是NAT的虚拟网络的外网,不懂的人可以查查NAT的相关知识。
(3) 桥接模式下,多个虚拟机之间可以互相访问;NAT模式下,多个虚拟机之间也可以相互访问。
如果你建一个虚拟机,只是给自己用,不需要给局域网其他人用,那么可以选择NAT,毕竟NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,只要虚拟机的网路配置是DHCP,那么你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可,就可以让虚拟机联网了。

例如
你想建多个虚拟机集群,作为测试使用,而宿主机可能是一个笔记本,ip不固定。
这种应用场景,我们需要采用nat模式了,但是我们要考虑一个问题,
虚拟机之间是需要互访的,默认采用dhcp,虚拟机的ip每次重启,ip都是不固定的,
所以我们需要手工设置虚拟机的ip地址。 但是我们对虚拟机网卡所在的虚拟网络的信息还一无所知,
例如虚拟机网络的路由地址,子网掩码,所以我们需要先查下nat虚拟网络的信息。(可以用#ifconfig 查看)
例如子网ip显示为192.168.233.0,子网掩码是255.255.255.0,那路由地址呢,其实就是网关IP了,
都是同个东西,这里是192.168.233.2。
接下来就好办了,在对应的虚拟机设置好ip,子网掩码,路由地址就可以上外网了,至于dns可以设置为8.8.8.8.

Host-Only
在Host-Only模式下,虚拟网络是一个全封闭的网络,它唯一能够访问的就是主机。其实Host-Only网络和NAT网络很相似,不同的地方就是Host-Only网络没有NAT服务,所以虚拟网络不能连接到Internet。主机和虚拟机之间的通信是通过VMware Network Adepter VMnet1虚拟网卡来实现的。
  Host-Only的宗旨就是建立一个与外界隔绝的内部网络,来提高内网的安全性。这个功能或许对普通用户来说没有多大意义,但大型服务商会常常利用这个功能。如果你想为VMnet1网段提供路由功能,那就需要使用RRAS,而不能使用XP或2000的ICS,因为ICS会把内网的IP地址改为192.168.0.1,但虚拟机是不会给VMnet1虚拟网卡分配这个地址的,那么主机和虚拟机之间就不能通信了。
  

NAT方式

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

NAT方式原理

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

检查当前的网络设置:
这里写图片描述
default是宿主机安装虚拟机支持模块的时候自动安装的。

检查当前的网络接口:
这里写图片描述

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

几个虚拟机管理模块产生的接口关系如下图:
这里写图片描述
从图上可以看出,虚拟接口和物理接口之间没有连接关系,所以虚拟机只能在通过虚拟的网络访问外部世界,无法从网络上定位和访问虚拟主机。

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

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

iptables -t nat -L -nv
iptables -t filter -L -nv

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

NAT方式的适用范围
桌面主机虚拟化。

创建步骤

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

此命令定义一个虚拟网络,default.xml的内容:
这里写图片描述
也可以修改xml,创建自己的虚拟网络。
标记为自动启动:
这里写图片描述
启动网络:

virsh net-start default

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

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

net.ipv4.ip_forward=1
安装客户机时注意:网络要选择用NAT方式。

文本方式安装:(这里不介绍图形化界面)
编辑修改虚拟机配置文件 /etc/libvirt/qemu/v1.xml,增加如下内容:

<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>

虚拟机启动后,验证网络接口是否正常:
这里写图片描述

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

Bridge方式

Bridge方式原理

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

桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况。
这里写图片描述
如上图,网桥的基本原理就是创建一个桥接接口br0,在物理网卡和虚拟网络接口之间传递数据。

Bridge方式的适用范围
服务器主机虚拟化。

网桥方式配置步骤

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

# 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

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

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

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

DEVICE=”eth0”
NM_CONTROLLED=”no”
ONBOOT=”yes”
TYPE=Ethernet
BOOTPROTO=none
BRIDGE=”br0”
NAME=”System eth0”
HWADDR=44:37:E6:4A:62:AD

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桥接方式。

文本方式:(同样只介绍文本方式)
编辑修改虚拟机配置文件 /etc/libvirt/qemu/v1.xml,增加如下内容

<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>

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

# 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
  • 10
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值