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;只有启动虚拟机后进去设置了


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KVM 宿主机下创建的虚拟机,可以使用桥接模式NAT 模式或者直接连接宿主机物理网卡的模式来进行网络配置。以下是在 Linux KVM 宿主机下创建的虚拟机网络配置方法: 1. 桥接模式 桥接模式可以使虚拟机直接通过宿主机的物理网卡连接到网络,可以使虚拟机获得独立的 IP 地址。具体步骤如下: 1. 在宿主机上创建一个虚拟网桥,使用以下命令: ``` brctl addbr br0 ifconfig br0 up ``` 2. 将宿主机的物理网卡连接到虚拟网桥,使用以下命令: ``` brctl addif br0 eth0 ``` 其中,`eth0` 是宿主机的物理网卡名称。 3. 在虚拟机中,指定网络接口桥接模式,使用以下命令: ``` virsh edit <vm-name> ``` 在 XML 配置文件中添加以下内容: ``` <interface type='bridge'> <mac address='52:54:00:xx:xx:xx'/> <source bridge='br0'/> <model type='virtio'/> </interface> ``` 其中,`<mac address='52:54:00:xx:xx:xx'/>` 是虚拟机的 MAC 地址,`<source bridge='br0'/>` 是连接到虚拟网桥 `br0`。 4. 在虚拟机配置 IP 地址和网关,使用以下命令: ``` sudo ip addr add <ip-address>/<netmask> dev eth0 sudo ip route add default via <gateway-ip-address> ``` 其中,`<ip-address>` 是虚拟机的 IP 地址,`<netmask>` 是虚拟机的子网掩码,`<gateway-ip-address>` 是宿主机的 IP 地址。 2. NAT 模式 NAT 模式可以使虚拟机通过宿主机的 IP 地址访问网络,但无法直接从外部访问虚拟机。具体步骤如下: 1. 在虚拟机中,指定网络接口NAT 模式,使用以下命令: ``` virsh edit <vm-name> ``` 在 XML 配置文件中添加以下内容: ``` <interface type='network'> <mac address='52:54:00:xx:xx:xx'/> <source network='default'/> <model type='virtio'/> </interface> ``` 其中,`<mac address='52:54:00:xx:xx:xx'/>` 是虚拟机的 MAC 地址。 2. 在虚拟机配置 IP 地址和网关,使用以下命令: ``` sudo ip addr add <ip-address>/<netmask> dev eth0 sudo ip route add default via <gateway-ip-address> ``` 其中,`<ip-address>` 是虚拟机的 IP 地址,`<netmask>` 是虚拟机的子网掩码,`<gateway-ip-address>` 是宿主机的 IP 地址。 3. 直接连接物理网卡模式 直接连接物理网卡模式可以使虚拟机通过宿主机的物理网卡访问网络,但需要在虚拟机中手动配置 IP 地址和网关。具体步骤如下: 1. 在虚拟机中,指定网络接口为直接连接物理网卡模式,使用以下命令: ``` virsh edit <vm-name> ``` 在 XML 配置文件中添加以下内容: ``` <interface type='direct'> <mac address='52:54:00:xx:xx:xx'/> <source dev='eth0'/> <model type='virtio'/> </interface> ``` 其中,`<mac address='52:54:00:xx:xx:xx'/>` 是虚拟机的 MAC 地址,`<source dev='eth0'/>` 是连接到宿主机的物理网卡。 2. 在虚拟机中手动配置 IP 地址和网关,使用以下命令: ``` sudo ip addr add <ip-address>/<netmask> dev eth0 sudo ip route add default via <gateway-ip-address> ``` 其中,`<ip-address>` 是虚拟机的 IP 地址,`<netmask>` 是虚拟机的子网掩码,`<gateway-ip-address>` 是宿主机的 IP 地址。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值