Kvm虚拟机NAT、桥接网络模式配置

网桥概念

网桥工作在OSI模型中的第二层,即链路层。完成数据帧(frame)的转发,主要目的是在连接的网络间提供透明的通信。网桥的转发是依据数据帧中的源地址和目的地址来判断一个帧是否应转发和转发到哪个端口。帧中的地址称为“MAC”地址或“硬件”地址,一般就是网卡所带的地址。

网桥的作用是把两个或多个网络互连起来,提供透明的通信。网络上的设备看不到网桥的存在,设备之间的通信就如同在一个网上一样方便。由于网桥是在数据帧上进行转发的,因此只能连接相同或相似的网络(相同或相似结构的数据帧),如以太网之间、以太网与令牌环(token ring)之间的互连,对于不同类型的网络(数据帧结构不同),如以太网与X.25之间,网桥就无能为力了。

网桥扩大了网络的规模,提高了网络的性能,给网络应用带来了方便,在以前的网络中,网桥的应用较为广泛。但网桥互连也带来了不少问题:一个是广播风暴,网桥不阻挡网络中广播消息,当网络的规模较大时(几个网桥,多个以太网段),有可能引起广播风暴(broadcasting storm),导致整个网络全被广播信息充满,直至完全瘫痪。第二个问题是,当与外部网络互连时,网桥会把内部和外部网络合二为一,成为一个网,双方都自动向对方完全开放自己的网络资源。这种互连方式在与外部网络互连时显然是难以接受的。问题的主要根源是网桥只是最大限度地把网络沟通,而不管传送的信息是什么。
In the case of isolated, nat, and routed networks, DHCP and DNS are provided on the virtual network by libvirt, and the IP range can be determined by examining the virtual network config with ‘virsh net-dumpxml [networkname]’. There is one virtual network called ‘default’ setup out of the box which does NAT’ing to the default route and has an IP range of 192.168.122.0/255.255.255.0. Each guest will have an associated tun device created with a name of vnetN, which can also be overridden with the element (see overriding the target element).
有关概念的详细介绍,请参看http://blog.csdn.net/gsl371/article/details/78662258

网桥配置

图形方法

通过virt-manager的图形界面方式配置nat或桥接网络还是比较直观和简单的,方法是:
运行virt-manager,选择edit-connection detail
选择virtual network 标签
选择“+”添加,根据提示选择nat或是路由方式,以实现和外部互通;或者孤立网络模式,孤立网络模式可以通过添加host的物理网卡,实现直接和外部互通。

命令方式

下面重点介绍如何通过virsh命令方式实现这两种网络模式配置。具体是nat还是桥接或是路由和隔离模式,取决于你选择的xml模版,下面以Nat为例;其他雷同。

复制配置文件

首先复制一份已存在的网络的xml文件,做适当修改,比如

[root@vmhost networks]# cp default.xml testnet.xml

[root@vmhost networks]# vi  testnet.xml

修改后如下:

<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh net-edit testnet
or other application using the libvirt API.
-->

<network>
  <name>testnet</name>
  <uuid>a7884784-5f15-4832-8c49-79b194c592cf</uuid>
  <forward dev='em2' mode='nat'>
    <interface dev='em2'/>
  </forward>
  <bridge name='virbr4' stp='on' delay='0'/>
  <mac address='72:54:00:7e:c8:55'/>
  <domain name='testnet'/>
  <ip address='192.169.100.1' netmask='255.255.255.0'>
  </ip>
</network>

定义网络

[root@vmhost networks]# vi testnet.xml
[root@vmhost networks]# virsh net-define testnet.xml
Network testnet defined from testnet.xml

创建网络

[root@vmhost networks]# virsh net-create testnet.xml
Network testnet created from testnet.xml

查看网络,没有自动启动

[root@vmhost networks]# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 isbridge             active     yes           yes
 osbridge             active     yes           yes
 testnet              active     no            yes

添加自动启动


[root@vmhost networks]# virsh net-autostart testnet
Network testnet marked as autostarted

[root@vmhost networks]# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 isbridge             active     yes           yes
 osbridge             active     yes           yes
 testnet              active     yes           yes

查看网桥

发现网桥virbr4,已自动生成

[root@vmhost network-scripts]# brctl show
bridge name     bridge id               STP enabled     interfaces
testbr0         8000.000000000000       yes
virbr1          8000.5254007ec855       yes             virbr1-nic
                                                        vnet0
                                                        vnet1
virbr2          8000.525400ed6f8b       yes             virbr2-nic
virbr4          8000.7254007ec855       yes             virbr4-nic

配置虚拟机网络接口

查看虚拟机现有的接口
[root@vmhost network-scripts]# virsh domiflist BlockNode
Interface  Type       Source     Model       MAC
-------------------------------------------------------
macvtap2   direct     em2        rtl8139     52:54:00:85:06:17
删除这个接口
[root@vmhost network-scripts]# virsh detach-interface BlockNode direct --mac 52:54:00:85:06:17 --config
Interface detached successfully

重启这个虚拟机,接口已被删除,

[root@vmhost network-scripts]# virsh domiflist BlockNode
Interface  Type       Source     Model       MAC
-------------------------------------------------------
重新添加虚拟机的接口

[root@vmhost ~]# virsh attach-interface BlockNode network testnet --target ens3
Interface attached successfully

–target指定了vm的tun/tap接口的名字,并被添加到了网络的虚拟网桥中。–mac选项可以指定vm中已存在interface的mac,直接可用。

查看虚拟机的接口卡


[root@vmhost networks]# virsh domiflist BlockNode
Interface  Type       Source     Model       MAC
-------------------------------------------------------
ens3       network    testnet    rtl8139     52:54:00:44:86:8c

已经有了你重新命名,新分配的mac的接口卡,但是还没有ip地址,进入虚拟机可以查看到

[root@localhost ~]# nmcli
virbr0: connected to virbr0
        bridge, 52:54:00:EA:83:29, sw, mtu 1500
        inet4 192.168.122.1/24

ens3: connecting (getting IP configuration) to ens3
        "Realtek RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (QEMU Virtual Machine)"
        ethernet (8139cp), 52:54:00:44:86:8C, hw, mtu 1500

给虚拟机指定静态IP的命令行方法目前还没有看到,一般是通过dhcp的方式分配ip;只有启动虚拟机后进去设置了


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页