RHEL6 KVM虚拟化创建桥接网卡-网桥

本文介绍如何通过创建虚拟网桥实现KVM虚拟机的网络桥接,使虚拟机能够直接访问外部网络,并详细展示了配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于KVM虚拟化不多做介绍

默认情况下KVM虚拟化只有NAT类型的链接方式,如果作为一般测试机而言足矣,但是如果用做服务器的话就很纠结了。

在wmware中,nat的一般是虚拟网卡8,将虚拟机的网卡桥接到虚拟网卡8即可实现NAT,虚拟网卡1是仅本机,虚拟网卡2是桥接

在wmware esxi中可以随便创建虚拟交换机,可以随便桥接,也可以建私有的虚拟网络

而在KVM中只能NAT和创建私有的虚拟网络,桥接就需要改动宿主主机的网络配置了


不多废话下边进行操作

[root@CWG network-scripts]# cat ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="54:04:A6:A7:FF:6C"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="9b1c6600-538a-410d-8c93-144598dc5fa4"
IPADDR="192.168.0.100"
NETMASK="255.255.255.0"
GATEWAY="192.168.0.1"
DNS1="202.106.46.151"
DNS2="202.106.195.68"
BRIDGE="br0"                                   //添加这么一句话 “br0”为要创建的虚拟网桥的命名

然后创建配置文件ifcfg-br0,如果加入的不是br0,而是sw0的话就创建ifcfg-sw0,如果创建命名是aaa的话创建ifcfg-aaa

我的BRIDGE的命名是br0则创建如下内容

[root@CWG network-scripts]# cat ifcfg-br0

DEVICE="br0"                   //设备名字,必须和BRIDGE=“”里的相同,还要和这个网桥配置文件的名称ifcg-“”这而的相同
TYPE="Bridge"                  //指定类型为网桥
NOBOOT="yes"
BOOTPROTO="static"
IPADDR="192.168.0.100"
NETMASK="255.255.255.0"
GATEWAY="192.168.0.1"
DNS1="202.106.46.151"
DNS2="202.106.195.68"
DELAY="0"                    //监控流量里的mac地址,一方便维护mac地址表


然后service network restart

[root@CWG hc]# ifconfig
br0       Link encap:Ethernet  HWaddr 54:04:A6:A7:FF:6C  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::5604:a6ff:fea7:ff6c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:119 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:5310 (5.1 KiB)
[root@CWG network-scripts]# brctl  show
bridge name    bridge id        STP enabled    interfaces
br0        8000.5404a6a7ff6c    no        eth0                                             //可见br0是继承了eth0参数的网桥,则KVM的虚拟机可以桥接到这个网桥上guest可以访问外网,外网也可以访问guest了
virbr0        8000.525400aef573    yes        virbr0-nic
virbr1        8000.525400c3b070    yes        virbr1-nic


KVM虚拟机的桥接成功的共享了物理网卡!也可以一片网卡创建一个网桥,这样可以减轻一片网卡的负载!


##############################################

本文有笔者原创

作者:john

转载请注明出处

<think>我们正在处理用户关于在Linux上部署KVM虚拟化系统并安装Windows虚拟机及调试网络的问题。根据引用内容,我们可以整合以下步骤:1.**环境准备**:确保CPU支持硬件虚拟化,并开启相关设置。2.**安装KVM及相关工具**:在CentOS(或其他Linux发行版)上安装KVM、libvirt等软件包。3.**启动并验证服务**:启动libvirtd服务,并验证KVM模块是否加载。4.**创建虚拟机**:使用virt-manager图形工具或virt-install命令行工具创建虚拟机。5.**安装Windows**:为虚拟机分配资源并加载Windows镜像进行安装。6.**网络配置与调试**:配置虚拟网络,并解决Windows虚拟机的网络连接问题。现在,我们将按照这些步骤详细说明。###1.检查硬件虚拟化支持首先,确认CPU支持硬件虚拟化(IntelVT-x或AMD-V),并已在BIOS中开启。在Linux终端执行:```bashegrep-c'(vmx|svm)'/proc/cpuinfo```如果输出大于0,则表示支持。同时检查KVM模块是否加载:```bashlsmod|grepkvm```若未加载,则手动加载:```bashsudomodprobekvmsudomodprobekvm-intel#Intel处理器#或sudomodprobekvm-amd#AMD处理器```###2.安装KVM及相关软件包在基于RPM的系统(如CentOS)上,使用yum或dnf安装:```bashsudoyuminstall-yqemu-kvmlibvirtvirt-installvirt-viewervirt-manager```-`qemu-kvm`:KVM虚拟化的后端模拟器-`libvirt`:管理虚拟化平台的库和守护进程-`virt-install`:命令行创建虚拟机的工具-`virt-viewer`:连接虚拟机控制台的工具-`virt-manager`:图形化管理工具###3.启动并启用libvirtd服务```bashsudosystemctlstartlibvirtdsudosystemctlenablelibvirtd```验证状态:```bashsudosystemctlstatuslibvirtd```###4.创建Windows虚拟机####方法1:使用virt-manager(图形界面)-运行`virt-manager`,点击“创建新虚拟机”。-选择“本地安装介质”(上传的WindowsISO镜像)。-分配内存、CPU和磁盘空间(建议至少20GB磁盘和2GB内存)。-在安装前,确保选择正确的操作系统类型(Windows10等)。-开始安装,按Windows安装向导操作。####方法2:使用virt-install(命令行)```bashsudovirt-install\--namewin10-vm\--memory2048\--vcpus2\--disksize=20\--cdrom/path/to/windows10.iso\--os-typewindows\--os-variantwin10\--networknetwork=default\--graphicsvnc```-`--cdrom`:指定WindowsISO镜像路径。-`--os-variant`:可通过`osinfo-queryos`查询支持的变体,此处设为`win10`。-`--graphicsvnc`:使用VNC连接图形界面(也可用spice)。###5.网络配置与调试KVM默认创建一个名为`default`的NAT网络(使用virbr0网桥)。虚拟机通过NAT访问外部网络,但外部无法直接访问虚拟机。####调试网络问题:1.**检查虚拟机是否获取IP**:-在Windows虚拟机中,打开命令提示符,运行`ipconfig`查看是否获得IP(通常来自192.168.122.0/24网段)。-若未获得IP,检查Windows网络适配器驱动(KVM使用e1000或virtio网卡)。建议使用virtio-win驱动(需额外下载ISO并加载)。2.**安装virtio-win驱动**:-从[Fedora项目](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso)下载virtio-win驱动镜像。-在virt-manager中,将驱动ISO附加到虚拟机的CDROM,然后在Windows设备管理器中更新网卡驱动。3.**配置端口转发(如需从外部访问)**:编辑默认网络:```bashvirshnet-editdefault```在`<ip>`段内添加`<forwardmode='nat'>`(如果不存在),并添加端口转发规则:```xml<ipaddress='192.168.122.1'netmask='255.255.255.0'><dhcp><rangestart='192.168.122.2'end='192.168.122.254'/></dhcp><portprotocol='tcp'port='3389'><!--转发RDP端口--><mapto='192.168.122.100'port='3389'/></port></ip>```重启网络:`virshnet-destroydefault`后`virshnet-startdefault`。4.**使用桥接网络(推荐)**:若需虚拟机直接暴露在局域网中,可创建桥接网络:-创建桥接接口(如br0),绑定物理网卡-在virt-manager中,将虚拟机网络源改为“桥接设备”,并选择br0。###总结通过以上步骤,我们完成了KVM的安装、Windows虚拟机的创建及网络调试。关键点在于:-确保硬件虚拟化支持。-使用virtio驱动提升Windows虚拟机性能。-根据需求选择NAT(默认)或桥接网络。[^1]:引用自CentOS上安装KVM的指南。[^2]:KVM的工作原理和应用场景。[^3]:KVM命令行安装虚拟机的方法。[^4]:在KVM上安装Windows的具体操作步骤。§§相关问题§§1.如何为KVM虚拟机配置PCI设备直通?2.如何在无图形界面的Linux服务器上通过命令行管理KVM虚拟机?3.KVM中如何实现虚拟机快照和备份?</think>### 在Linux上部署KVM虚拟化及安装Windows虚拟机 #### **一、环境准备** 1. **硬件检查** - 确认CPU支持虚拟化(终端执行): ```bash egrep -c '(vmx|svm)' /proc/cpuinfo # 输出>0表示支持 lsmod | grep kvm # 检查KVM模块是否加载 ``` - 若未加载: ```bash sudo modprobe kvm sudo modprobe kvm-intel # Intel CPU # 或 sudo modprobe kvm-amd # AMD CPU ``` 2. **关闭防火墙** ```bash sudo systemctl stop firewalld sudo systemctl disable firewalld ``` #### **二、安装KVM及相关组件** ```bash # CentOS/RHEL sudo yum install -y qemu-kvm libvirt virt-install virt-viewer virt-manager # Ubuntu/Debian sudo apt install -y qemu-kvm libvirt-daemon-system virtinst virt-manager ``` - **关键组件**: - `qemu-kvm`:虚拟化核心 - `libvirt`:管理虚拟机的API和守护进程 - `virt-manager`:图形化管理工具 3. **启动服务** ```bash sudo systemctl start libvirtd sudo systemctl enable libvirtd sudo systemctl status libvirtd # 确认状态为active (running) ``` #### **三、创建Windows虚拟机** 1. **准备资源** - Windows ISO镜像(如`win10.iso`) - 磁盘空间(建议≥20GB) 2. **命令行创建虚拟机** ```bash sudo virt-install \ --name Win10-VM \ --memory 4096 \ --vcpus 4 \ --disk size=20,format=qcow2 \ --cdrom /path/to/win10.iso \ --os-variant win10 \ --network network=default \ --graphics spice ``` 3. **图形化操作(推荐)** ```bash virt-manager # 启动图形工具 ``` - 步骤: 1. 新建虚拟机 → 选择ISO镜像 2. 分配内存/CPU(建议4GB+内存,2+核心) 3. 创建磁盘(选择`qcow2`格式) 4. 网络选择**NAT模式**(默认`default`网络) #### **四、安装Windows注意事项** 1. **驱动问题** - **virtio-win驱动**(关键!解决网卡/磁盘识别问题): - 下载地址:[Fedora VirtIO Drivers](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso) - 在virt-manager中: `虚拟机详情 → 添加硬件 → CDROM → 挂载virtio-win.iso` - 安装过程中加载驱动: - 磁盘控制器选**Red Hat VirtIO SCSI controller** - 网卡选**Red Hat VirtIO Ethernet Adapter** 2. **性能优化** - 虚拟机XML配置中添加: ```xml <features> <hyperv> <relaxed state='on'/> <vapic state='on'/> <spinlocks state='on' retries='8191'/> </hyperv> </features> ``` #### **五、网络配置与调试** 1. **默认网络检查** ```bash virsh net-list --all # 确认default网络已激活 ifconfig virbr0 # 查看NAT网桥IP(通常192.168.122.1) ``` 2. **Windows网络调试** - **问题:虚拟机无法上网** - 检查Windows设备管理器 → 网卡驱动是否正常(需virtio驱动) - 在Windows中执行: ```powershell ipconfig /all # 查看是否获取到192.168.122.x的IP ping 192.168.122.1 # 测试到宿主机连通性 ``` - **解决方案**: ```bash # 宿主机重启libvirt网络 sudo virsh net-destroy default sudo virsh net-start default ``` 3. **端口转发(外部访问)** 编辑网络配置: ```bash virsh net-edit default ``` 在`<ip>`标签内添加(示例转发RDP端口): ```xml <forward mode='nat'> <port start='3389' end='3389' protocol='tcp'/> </forward> ``` #### **六、高级网络方案(桥接模式)** ```bash # 创建桥接网络(以eth0为例) sudo nmcli con add type bridge ifname br0 con-name br0 sudo nmcli con add type bridge-slave ifname eth0 master br0 sudo nmcli con up br0 # 虚拟机使用桥接网络 virt-manager → 虚拟机详情 → NIC设备 → 选择主机设备br0 ``` - **效果**:虚拟机获得与宿主机同网段的IP,可直接被外部访问。 [^1]: KVM在CentOS的安装流程和基础配置。 [^2]: KVM虚拟化原理与网络隔离机制。 [^3]: 命令行创建KVM虚拟机的关键参数说明。 [^4]: Windows虚拟机安装过程中的驱动加载步骤。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值