ToB企服应用市场:ToB评测及商务社交产业平台

标题: KVM网络全解析:四种模式让你轻松驾御虚拟机网络 [打印本页]

作者: 没腿的鸟    时间: 2024-8-20 09:10
标题: KVM网络全解析:四种模式让你轻松驾御虚拟机网络

KVM网络类型先容

KVM 包含四种网络类型:
隔离模式

在隔离模式下,虚拟机之间可以相互通讯,但不能与宿主机或外部网络通讯。

Linux 在虚拟机中的网卡都包含前半段和后半段,前半段在虚拟机上,后半段在宿主机上。 eth0 在 Guest1 虚拟机上的网卡,对应的后半段为 vnet0,在 Guest1 上所有发往 eth0 的数据就直接发往 vnet0 了,也可以将 vnet0 看作是一张网卡。
Guest1 和 Guest2 如何通讯
在宿主机中创建一个虚拟交换机,让 vnet0 和 vnet1 分别为虚拟交换机的一个接口,交换机也可以叫做 bridge,只要两个虚拟网卡的前半段 IP 地址在同一个网段内,就可以相互通讯,这就是隔离模式。
路由模式及 NAT 模式

路由模式将虚拟机的网络报文通过路由器转发,不会改变源地址。NAT 模式则通过 NAT 网关将源地址转换为物理网卡地址,实现虚拟机与外部网络通讯。

在该模式下,虚拟机可以通过虚拟路由器(virbr0)连接到外部网络。在 NAT 模式下,虚拟机发送的报文通过 NAT 网关转发,外部网络无法直接访问虚拟机,但虚拟机可以访问外部网络。
桥接模式

在桥接模式下,宿主机会虚拟出一张虚拟网卡作为宿主机本身的通讯网卡,而宿主机的物理网卡则成为桥装备(交换机)。所以虚拟机相当于在宿主机所在局域网内的一个独立的主机,它的行为和宿主机是划一职位的,没有依存关系。

NAT 网络

NAT 网络是虚拟机默认的网络,安装好 KVM 后就会有一个网卡。
  1. virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  2.     inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
  3.     ether 52:54:00:72:d3:68 txqueuelen 1000 (Ethernet)
  4.     RX packets 147745 bytes 8418411 (8.0 MiB)
  5.     RX errors 0 dropped 0 overruns 0 frame 0
  6.     TX packets 246399 bytes 3673149 (350.2 MiB)
  7.     TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
复制代码
默认使用的地址是: 192.168.122.0 网段,该 virbr0 IP 地址也是使用 NAT 网络虚拟机的网关,虚拟机上网是通过防火墙配置 NAT 转换规则实现的。
virbr0 是一个桥接器,接收所有到网络 192.168.122.* 的内容。从下面命令可以验证:
  1. brctl show
  2. bridge name bridge id       STP enabled  interfaces
  3. virbr0       8000.525400e6456c  yes          virbr0-nic
复制代码
同时,虚拟机支持模块会修改 iptables 规则,通过命令可以查察:
  1. iptables -t nat -L -nv
  2. Chain PREROUTING (policy ACCEPT 16924 packets, 2759K bytes)
  3. pkts bytes target  prot opt in  out source  destination
  4. Chain POSTROUTING (policy ACCEPT 2009 packets, 125K bytes)
  5. pkts bytes target  prot opt in  out source  destination
  6. 421 31847 MASQUERADE  all -- * * 192.168.122.0/24 !192.168.122.0/24  ---->这条是关键,它配置了 NAT 功能。
  7. Chain OUTPUT (policy ACCEPT 2011 packets, 125K bytes)
  8. pkts bytes target  prot opt in  out source  destination
复制代码
  1. iptables -t filter -L -nv
  2. Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
  3. pkts bytes target  prot opt in  out source  destination
  4. 1 74 ACCEPT  udp  -- virbr0 * 0.0.0.0/0  udp dpt:53
复制代码
创建步骤
  1. virsh net-define /usr/share/libvirt/networks/default.xml
复制代码
此命令界说一个虚拟网络,default.xml 的内容:
  1. <network>
  2.   <name>default</name>
  3.   <bridge name='virbr0'/>
  4.   <forward/>
  5.   <ip address='192.168.122.1' netmask='255.255.255.0'>
  6.     <dhcp>
  7.       <range start='192.168.122.2' end='192.168.122.254'/>
  8.     </dhcp>
  9.   </ip>
  10. </network>
复制代码
也可以修改 xml,创建自己的虚拟网络。
标记为主动启动
  1. virsh net-autostart default
  2. Network default marked as autostarted
复制代码
启动网络
  1. virsh net-start default
  2. Network default started
复制代码
网络启动后可以用命令 brctl show 查察和验证
修改 /etc/sysctl.conf 中参数,答应 IP 转发:
  1. net.ipv4.ip_forward=1
复制代码
桥接网络

桥接网络答应虚拟机像物理主机一样接入物理网络,实现虚拟机与物理网络中的其他装备直接通讯。下面是配置桥接网络的具体步骤,以CentOS操纵系统为例。
详细表明


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4