在CentOS系统中部署KVM(Kernel-based Virtual Machine)虚拟化技术时,双网卡的配置是提升网络性能和灵活性的关键步骤,合理的双网卡配置不仅能实现虚拟机的高效通信,还能满足不同网络场景的需求,如内外网隔离、负载均衡等,本文将详细介绍在CentOS系统中为KVM虚拟机配置双网卡的完整流程,包括网络环境准备、虚拟网络创建、虚拟机网卡绑定及常见问题处理。

网络环境准备
在配置双网卡前,需确保宿主机系统的网络环境已正确设置,CentOS系统通常默认使用NetworkManager管理网络,建议先关闭NetworkManager,改用传统的network服务以简化配置,通过systemctl stop NetworkManager和systemctl disable NetworkManager命令禁用该服务,随后编辑/etc/sysconfig/network-scripts/目录下的网卡配置文件(如ifcfg-eth0、ifcfg-eth1),确保两块物理网卡分别配置为静态IP或动态获取(DHCP),并设置正确的网关和DNS,eth0配置为内网网卡(192.168.1.100/24),eth1配置为外网网卡(203.0.113.100/24),两块网卡均需设置ONBOOT=yes确保开机自启。
创建虚拟网络 bridge
KVM虚拟机默认使用NAT模式,但为实现双网卡直连物理网络,需创建bridge网桥,首先安装bridge-utils工具包:yum install -y bridge-utils,然后创建两个网桥文件,如ifcfg-br0和ifcfg-br1,分别对应内外网物理网卡,以br0为例,配置文件内容如下:
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
ONBOOT=yes
DELAY=0
接着修改物理网卡eth0的配置文件,将其IP地址清除,并添加BRIDGE=br0参数,使eth0成为br0的从设备,对eth1和br1执行相同操作,重启网络服务后,通过brctl show命令可验证网桥是否创建成功。
虚拟机双网卡配置
在创建虚拟机时,需为虚拟机添加两块虚拟网卡,使用virt-install命令时,可通过--network参数指定不同的网络源。

virt-install --name vm1 --ram 2048 --vcpus 2 \
--disk path=/var/lib/libvirt/images/vm1.img,size=20 \
--network bridge=br0,model=virtio \
--network bridge=br1,model=virtio \
--cdrom /path/to/CentOS.iso
上述命令中,两块虚拟网卡分别桥接到br0和br1,使用virtio模型以提升性能,若通过图形界面创建虚拟机,在“添加硬件”步骤中选择“网络设备”,并分别关联br0和br1网桥。
虚拟机内部网络配置
虚拟机启动后,其内部会识别为两块独立的网卡(如eth0和eth1),进入虚拟机系统,编辑对应的网卡配置文件,分别设置IP地址,eth0配置为192.168.1.101/24(与br0同一网段),eth1配置为203.0.113.101/24(与br1同一网段),配置完成后,重启网络服务或使用ifup eth0、ifup eth1命令激活网卡,通过ping命令测试内外网连通性,确保虚拟机可通过两块网卡分别访问不同网络。
高级配置: bonding与VLAN
若需进一步提升网络冗余或带宽,可在宿主机端配置网卡bonding,将两块物理网卡(eth0和eth1)绑定为一个逻辑接口(如bond0),并设置mode为0(平衡负载)或1(容错模式),随后将bond0作为网桥的物理接口,替代单独的eth0或eth1,对于VLAN隔离需求,可在网桥上添加VLAN子接口,例如vlan100,并配置独立的IP地址,实现虚拟机的多VLAN通信。
常见问题处理
在配置过程中,可能会遇到网桥无法启动、虚拟机无法获取IP等问题,若网桥创建失败,需检查物理网卡是否已正确设置为从设备,并确保网桥配置文件中的IP地址与原物理网卡一致,虚拟机无法上网时,可通过tcpdump抓包分析网络流量,检查网桥防火墙规则(如iptables是否放行转发流量),确保虚拟机网卡驱动为virtio,并关闭宿主机的SELinux或配置相应策略,避免权限问题影响网络通信。

相关问答FAQs
Q1: 如何验证KVM虚拟机的双网卡是否正常工作?
A1: 在虚拟机内部使用ip addr命令查看两块网卡是否已识别并分配IP地址,然后通过ping命令测试内外网连通性。ping 192.168.1.1测试内网,ping 8.8.8.8测试外网,若均能通信,则双网卡配置正常,可在宿主机端使用brctl show查看网桥状态,确认虚拟机网卡是否已正确桥接。
Q2: 虚拟机双网卡配置后,如何实现内外网流量分离?
A2: 可通过配置路由表实现流量分离,在虚拟机中,使用ip route add default via 内网网关 dev eth0和ip route add default via 外网网关 dev eth1命令添加默认路由,并根据源IP策略指定出口。ip rule add from 内网IP table 100和ip route add default via 内网网关 table 100,使特定流量通过内网网卡转发,可使用防火墙(如iptables)的mangle表标记数据包,结合路由策略实现精细控制。