KVM网络类型先容
KVM 包含四种网络类型:
- 隔离模式:虚拟机之间组建网络,该模式无法与宿主机通讯,无法与其他网络通讯,相当于虚拟机只是连接到一台交换机上。
- 路由模式:相当于虚拟机连接到一台路由器上,由路由器(物理网卡)同一转发,但不会改变源地址。
- NAT 模式:在路由模式中,虚拟机可以访问其他主机,但其他主机的报文无法到达虚拟机,而 NAT 模式则将源地址转换为路由器(物理网卡)地址,这样其他主机也知道报文来自谁人主机,在 Docker 环境中常常被使用。
- 桥接模式:在宿主机中创建一张虚拟网卡作为宿主机的网卡,而物理网卡则作为交换机。
隔离模式
在隔离模式下,虚拟机之间可以相互通讯,但不能与宿主机或外部网络通讯。
Linux 在虚拟机中的网卡都包含前半段和后半段,前半段在虚拟机上,后半段在宿主机上。 eth0 在 Guest1 虚拟机上的网卡,对应的后半段为 vnet0,在 Guest1 上所有发往 eth0 的数据就直接发往 vnet0 了,也可以将 vnet0 看作是一张网卡。
Guest1 和 Guest2 如何通讯:
在宿主机中创建一个虚拟交换机,让 vnet0 和 vnet1 分别为虚拟交换机的一个接口,交换机也可以叫做 bridge,只要两个虚拟网卡的前半段 IP 地址在同一个网段内,就可以相互通讯,这就是隔离模式。
路由模式及 NAT 模式
路由模式将虚拟机的网络报文通过路由器转发,不会改变源地址。NAT 模式则通过 NAT 网关将源地址转换为物理网卡地址,实现虚拟机与外部网络通讯。
在该模式下,虚拟机可以通过虚拟路由器(virbr0)连接到外部网络。在 NAT 模式下,虚拟机发送的报文通过 NAT 网关转发,外部网络无法直接访问虚拟机,但虚拟机可以访问外部网络。
桥接模式
在桥接模式下,宿主机会虚拟出一张虚拟网卡作为宿主机本身的通讯网卡,而宿主机的物理网卡则成为桥装备(交换机)。所以虚拟机相当于在宿主机所在局域网内的一个独立的主机,它的行为和宿主机是划一职位的,没有依存关系。
NAT 网络
NAT 网络是虚拟机默认的网络,安装好 KVM 后就会有一个网卡。
- virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
- ether 52:54:00:72:d3:68 txqueuelen 1000 (Ethernet)
- RX packets 147745 bytes 8418411 (8.0 MiB)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 246399 bytes 3673149 (350.2 MiB)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
复制代码 默认使用的地址是: 192.168.122.0 网段,该 virbr0 IP 地址也是使用 NAT 网络虚拟机的网关,虚拟机上网是通过防火墙配置 NAT 转换规则实现的。
virbr0 是一个桥接器,接收所有到网络 192.168.122.* 的内容。从下面命令可以验证:
- brctl show
- bridge name bridge id STP enabled interfaces
- virbr0 8000.525400e6456c yes virbr0-nic
复制代码 同时,虚拟机支持模块会修改 iptables 规则,通过命令可以查察:
- 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 udp dpt:53
复制代码 创建步骤:
- virsh net-define /usr/share/libvirt/networks/default.xml
复制代码 此命令界说一个虚拟网络,default.xml 的内容:
- <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>
复制代码 也可以修改 xml,创建自己的虚拟网络。
标记为主动启动:
- virsh net-autostart default
- Network default marked as autostarted
复制代码 启动网络:
- virsh net-start default
- Network default started
复制代码 网络启动后可以用命令 brctl show 查察和验证。
修改 /etc/sysctl.conf 中参数,答应 IP 转发:
桥接网络
桥接网络答应虚拟机像物理主机一样接入物理网络,实现虚拟机与物理网络中的其他装备直接通讯。下面是配置桥接网络的具体步骤,以CentOS操纵系统为例。
- 给物理网卡设置 IP 信息:
使用 nmcli 命令配置物理网卡的 IP 地址、网关和 DNS 服务器。
- nmcli connection add con-name eno1 ifname eno1 ipv4.addresses 192.168.1.200/24 ipv4.method manual ipv4.gateway 192.168.1.1 ipv4.dns 114.114.114.114 type 802-3-ethernet
复制代码 - 创建一个桥接网卡:
使用 nmcli 命令创建桥接网卡,并设置桥接网卡的 IP 地址、网关和 DNS 服务器。
- nmcli connection add con-name br0 ifname br0 type bridge ipv4.method manual ipv4.addresses 192.168.1.200/24 ipv4.gateway 192.168.1.1 ipv4.dns 114.114.114.114 autoconnect yes
复制代码 - 绑定物理网卡:
使用 nmcli 命令将物理网卡绑定到桥接网卡上。
- nmcli connection add type bridge-slave ifname eno1 master br0
复制代码 - 重启见效:
关闭并重新启动物理网卡和桥接网卡以应用配置。
- nmcli connection down eno1
- nmcli connection down br0
- nmcli connection up br0
复制代码 详细表明
- 给物理网卡设置 IP 信息:
首先,需要为物理网卡 eno1 配置 IP 地址、网关和 DNS 服务器。这里使用 nmcli connection add 命令,其中:
- con-name 指定连接名称,这里为 eno1。
- ifname 指定接口名称,这里也是 eno1。
- ipv4.addresses 设置 IP 地址和子网掩码,这里为 192.168.1.200/24。
- ipv4.method 设置为手动配置。
- ipv4.gateway 设置网关地址,这里为 192.168.1.1。
- ipv4.dns 设置 DNS 服务器地址,这里为 114.114.114.114。
- type 指定网络类型,这里为以太网(802-3-ethernet)。
- 创建一个桥接网卡:
然后,创建一个名为 br0 的桥接网卡。使用 nmcli connection add 命令,其中:
- con-name 指定连接名称,这里为 br0。
- ifname 指定接口名称,这里也是 br0。
- type 设置为 bridge,体现这是一个桥接网卡。
- ipv4.method 设置为手动配置。
- ipv4.addresses 设置 IP 地址和子网掩码,这里为 192.168.1.200/24。
- ipv4.gateway 设置网关地址,这里为 192.168.1.1。
- ipv4.dns 设置 DNS 服务器地址,这里为 114.114.114.114。
- autoconnect 设置为 yes,体现主动连接。
- 绑定物理网卡:
将物理网卡 eno1 绑定到桥接网卡 br0 上,使物理网卡成为桥接网卡的一部分。使用 nmcli connection add type bridge-slave 命令,其中:
- ifname 指定物理网卡接口名称,这里为 eno1。
- master 指定桥接网卡名称,这里为 br0。
- 重启见效:
为了使配置见效,需要关闭并重新启动物理网卡和桥接网卡。使用 nmcli connection down 和 nmcli connection up 命令,依次关闭 eno1 和 br0,然后重新启动 br0。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |