Linux CentOS7 安装KVM桥接网络连通局域网

公司新买的服务器让我在CentOS7搭建kvm,记录一下历经两天的踩坑日子,也希望能够帮助到你。

简单介绍一下什么是KVM

KVM 是 Kernel-based Virtual Machine(基于内核的虚拟机)的缩写,是一种开源的虚拟化解决方案,允许在 Linux 操作系统上创建和管理虚拟机。KVM 利用 Linux 内核提供的虚拟化技术,通过将虚拟化功能整合到 Linux 内核中,实现高性能的虚拟化环境。

KVM 的主要特点包括:

  1. 硬件虚拟化支持:KVM 利用处理器的硬件虚拟化功能(如 Intel VT 或 AMD-V 技术),实现更高效的虚拟机性能和更好的隔离。

  2. Linux 内核集成:KVM 作为 Linux 内核的一部分,无需额外的内核模块,因此具有更好的稳定性和性能。

  3. 支持多种架构:KVM 可以在 x86、x86-64、ARM 等架构上运行,支持多样化的硬件平台。

  4. 强大的管理工具:KVM 提供了一系列管理工具,如 virt-managervirshqemu-img,方便用户创建、配置和管理虚拟机。

  5. 灵活性和可扩展性:KVM 可以满足各种应用场景的需求,支持不同的虚拟化配置,如桥接网络、NAT 网络、存储池等。

总的来说,KVM 是一种强大的虚拟化技术,广泛应用于服务器虚拟化、云计算和开发测试环境中。它提供了高性能、稳定性和灵活性,使得用户可以轻松地构建和管理虚拟化环境。

步骤一:准备工作

通过上面的介绍,应该知道KVM是需要硬件支持的,不然会很慢。。。

  • 查看系统内核版本
    hostnamectl

 

  •  查看是否支持虚拟化
    lscpu
    # 或者
    grep -E "svm|vmx" /proc/cpuinfo 
    
    我这里使用的是lscpu

    使用 grep -E "svm|vmx" /proc/cpuinfo 搜索cpu信息是否包含vmx或svm

    1. 如果输出中包含 svm 或 vmx,则表示 CPU 支持虚拟化技术。
    2. svm 对应 AMD 的虚拟化技术(AMD-V)。
    3. vmx 对应 Intel 的虚拟化技术(VT-x)。
  • 查看是否加载KVM
    lsmod | grep kvm




    如果没有这样的输出说明没有加载执行以下命令
    modprobe kvm

  • 关闭selinux 
    # 暂时 
    setenforce 0
    
    # 永久 
    vim /etc/sysconfig/selinux 
    # 把这行改为 disable
    SELINUX=disabled
  •  最后要检查硬件虚拟化是否已经在 BIOS 中启用,这个非常重要,否则在创建虚拟机的时候报错,且非常慢。。。

    1. 重启计算机并进入 BIOS 设置。通常,在计算机开机时按下相应的按键(如 F2、Delete、F12 等,具体取决于计算机品牌)可以进入 BIOS 设置界面。

    2. 在 BIOS 设置中,查找一个类似于 "Virtualization Technology"、"Intel VT-x"、"AMD-V" 或类似的选项。这个选项可能位于不同的菜单中,取决于你的主板制造商和BIOS版本。

    3. 确保该选项被启用。如果能找到这样一个选项,并且它的状态是“Enabled”(已启用),那么硬件虚拟化就已经在 BIOS 中启用了。

    4. 保存设置。在确认硬件虚拟化已启用后,保存 BIOS 设置并重新启动计算机。

步骤二:安装 KVM 软件包

这边需要联网下载,如果没有配置网络的自行百度,下载慢的换个源。。。

  1. 安装相关软件包
    yum install qemu-kvm qemu-img \
    	virt-manager libvirt libvirt-python virt-manager \
    	libvirt-client virt-install virt-viewer -y
  2. 设置开机启动
    systemctl start libvirtd
    systemctl enable libvirtd

步骤三:配置网络桥接

  1. 安装 bridge-utils 软件包

    sudo yum install bridge-utils
  2. 查看网卡信息,备份网卡,并修改网卡配置

    # 查看网络信息 一般第一个网卡 我这里是em1
    ifconfig
    
    # 进入到网络配置目录
    cd /etc/sysconfig/network-scripts/
    
    # 备份网卡
    cp ifcfg-em1 ifcfg-em1.bak
    
    # 拷贝一份新网卡文件作为桥接网卡
    cp ifcfg-em1 ifcfg-br1
    
    # 编辑 原网卡
    vim ifcfg-em1
    
    # 编辑 桥接网卡
    vim ifcfg-br1

    原网卡配置:

    TYPE=Ethernet
    DEVICE=em1
    UUID=c8d686a6-629a-4869-af51-77d95e9f198
    NAME=em1
    ONBOOT=yes
    BRIDGE="br1"
    BOOTPROTO=none

    桥接网卡配置:

    DEVICE=br1
    ONBOOT=yes
    PREFIX=24
    TYPE=Bridge
    BOOTPROTO=none
    IPADDR=192.168.1.231
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
  3. 重启网络服务以使更改生效:
    sudo systemctl restart network
    查看配置情况

步骤四:创建和启动虚拟机

  1. 使用 virt-install 命令创建虚拟机,配置网络连接为 bridge 模式:

    virt-install --name=CentOS02 --memory=512,maxmemory=1024 \
    --vcpus=2,maxvcpus=4 --os-type=linux --os-variant=rhel7 \
    --location=/home/data/CentOS-7-x86_64-DVD-1804.iso \
    --disk path=/kvm-data/images/CentOS02.img,size=50 --bridge=br0 \
    --graphics=none --console=pty,target_type=serial \
    --extra-args="console=tty0 console=ttyS0"
    
    # 命令说明:
    
    # –name 指定虚拟机的名称
    # –memory 指定分配给虚拟机的内存资源大小
    # maxmemory 指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源
    # –vcpus 指定分配给虚拟机的CPU核心数量
    # maxvcpus 指定可调节的最大CPU核心数量
    # –os-type 指定虚拟机安装的操作系统类型
    # –os-variant 指定系统的发行版本
    # –location 指定ISO镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL
    # –disk path 指定虚拟硬盘所存放的路径及名称,size 则是指定该硬盘的可用大小,单位是G
    # –bridge 指定使用哪一个桥接网卡,也就是说使用桥接的网络模式
    # –graphics 指定是否开启图形
    # –console 定义终端的属性,target_type 则是定义终端的类型
    # –extra-args 定义终端额外的参数
  2. 正常的话会进入到安装界面,我这边是命令安装的,没有图形化界面,比较繁琐,所以跳过安装

  3. 配置虚拟机网络为桥接模式

    # 修改虚拟机的配置 CentOS01 是你虚拟机的名字
    virsh edit CentOS01
    
    
    # 或者
    # 1.进入下面的目录
    cd /etc/libvirt/qemu
     
    # 2.修改虚拟机的配置文件
    vim 虚拟机名称.xml
    
    
    # 以上两个方法都会进入编辑界面
    # 主要修改两个参数 1. type改为bridge桥接模式 2.  network='br1' 改为你桥接网卡的名字
    
    # 示例如下:
        <interface type='bridge'> # 这里改成briage
          <mac address='52:54:00:84:1d:dc'/>
          <source network='br0'/> # 网卡名称
          <model type='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </interface>
    # 最后保存退出
  4. 启动虚拟机
    # virsh start 虚拟机名称
    virsh start CentOS01
    
    # 查看运行的虚拟机
    virsh list
    
    # 进入虚拟机,进入后按回车
    virsh console

  5. 配置虚拟机网网络
    vi /etc/sysconfig/network-scripts/ifcfg-eth0
    
    # 修改一下几项
    BOOTPROTO=static # 该为静态
    ONBOOT=yes # 打开网卡
    # 然后配置你的ip什么的
    IPADDR=192.168.1.232
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS1=8.8.8.8
    DNS2=144.144.144.144
    重启网络
    systemctl restart network
    
  6. 测试
    ping 宿主机

    ping 其他虚拟机

    宿主机ping虚拟机 ctrl + ] 退出虚拟机

 如果ping不通
 

  1. 检查网络配置

    • 确保宿主机和虚拟机的 IP 地址、网关和子网掩码正确配置。确保它们在同一子网内。
    • 检查宿主机和虚拟机的网络接口是否正确连接到桥接接口(例如 br0)。
  2. 检查防火墙设置

    • 确保宿主机和虚拟机的防火墙规则允许通信。你可以尝试禁用防火墙进行测试,验证是否是防火墙导致的问题。如果是,你可以适当调整防火墙规则来允许所需的通信。
  3. 检查网络连通性

    • 在宿主机上执行命令 ping 虚拟机IP地址,确保宿主机能够与虚拟机进行通信。
    • 在虚拟机内部执行命令 ping 宿主机IP地址,确保虚拟机能够与宿主机进行通信。
  4. 检查虚拟机网络设置

    • 确保虚拟机的网络设置正确。例如,在虚拟机的网络设置中选择桥接模式,并指定正确的桥接接口(例如 br0)。
  5. 检查其他网络配置

    • 检查宿主机和虚拟机的 DNS 配置是否正确。你可以尝试手动设置 DNS 来测试连接是否恢复。

 好,记录一下,希望能帮到你~

  • 37
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@做个大人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值