• Centos7 离线安装 KVM,并安装 Csr1000v


    最近需要在客户环境搭建 csr1000v,客户环境不能联网,同时使用 kvm 管理。所以需要离线安装 kvm,在利用 kvm 安装 csr100v ,中间遇到不少坑,现记录如下。

    所有安装步骤是在 root 用户的基础上完成。

    准备好的 kvm 安装包和 csr1000v 安装包所在地址:

    ip: 10.124.205.51 
    user: root/cisco123
    [root@localhost temp]# cd /opt/temp
    [root@localhost temp]# ls
    csr1000v-universalk9.16.12.04.qcow2  kvm_pkg.tar.gz
    

    整体安装思路如下:

    1. Linux 环境准备,检验系统版本以及是否具有虚拟化功能
    2. 离线安装 kvm
    3. kvm 安装 csr1000v
    4. 配置 KVM 相关网络

    Linux 环境准备#

    检查 Linux 版本及内核是否一致,因为涉及到离线安装:

    [root@localhost kvm_offile_pkg]# cat /etc/centos-release
    CentOS Linux release 7.9.2009 (Core)
    
    [root@localhost kvm_offile_pkg]# uname -r
    3.10.0-1160.el7.x86_64
    

    关闭 Selinux

    setenforce 0
    vim /etc/selinux/config
    SELINUX=disabled
    

    检查虚拟化功能是否开启

     cat /proc/cpuinfo | egrep "vmx|svm"
    

    如果看到 vmx 或者 svm,表示虚拟化功能正常打开。

    或者也可通过如下命令, 看到 VT-x 表示正常:

    [root@localhost ~]# lscpu | grep Virtualization
    Virtualization:      VT-x
    Virtualization type: full
    

    离线安装 kvm#

    找一台可联网,相同版本的 linux 服务器,使用 yum 离线下载 kvm 相关包:

    yum install --downloadonly --downloaddir=/opt/kvm qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools bridge-utils virt-install virt-viewer
    

    将其打包后导入离线服务器:

    tar -czvf kvm_pkg.tar.gz kvm
    

    在离线服务器解压并安装:

    tar -xzvf kvm_pkg.tar.gz
    
    # 使用 ls 查看,共有 250 个安装包
    ls -l | grep "^-" | wc -l
    
    # 安装:
    yum localinstall -y {Path}/kvm/*.rpm
    

    启动 kvm

    systemctl enable libvirtd
    systemctl start libvirtd
    

    查看 kvm 版本信息:

    yum info qemu-kvm
    /usr/libexec/qemu-kvm --version
    

    kvm 安装 csr1000v#

    将下载好的 csr1000v 镜像导入服务器

    # 将安装包导入到 /var/lib/libvirt/images 文件夹下
    mv csr1000v-universalk9.16.12.04.qcow2 /var/lib/libvirt/images
    

    安装 csr1000v

     virt-install                    \
         --connect=qemu:///system   \
         --name=csr_1000v           \
         --os-type=linux            \
         --os-variant=rhel4         \
         --arch=x86_64              \
         --cpu host-model                 \
         --vcpus=1,sockets=1,cores=1,threads=1   \
         --hvm                      \
         --ram=4096                 \
         --import                   \
         --disk path=/var/lib/libvirt/images/csr1000v-universalk9.16.12.04.qcow2,bus=ide,format=qcow2   \
         --network bridge=virbr0,model=virtio                        \
         --noreboot
         
         
     # --name 可以起一个自定义的名字
    

    安装成功可看到如下内容:

    打开 csr1000v

    virsh --connect qemu:///system start csr_1000v
    

    连接 csr1000v, 等等其启动完成

    virsh console csr_1000v
    

    看到如下内容,表示启动成功:

    配置 KVM 网络#

    宿主机访问 kvm#

    获取虚拟机有 DHCP 的分配 IP:

    [root@localhost ~]# virsh net-dhcp-leases default
     Expiry Time          MAC address        Protocol  IP address                Hostname        Client ID or DUID
    -------------------------------------------------------------------------------------------------------------------
     2022-04-01 15:43:42  52:54:00:0d:86:d9  ipv4      192.168.122.130/24        Router          00:63:69:73:63:6f:2d:35:32:35:34:2e:30:30:32:62:2e:34:31:30:36:2d:47:69:31
    

    如果手动配置的 IP 可以通过如下脚本来获取, 通过 mac 地址,反查 arp 表,获取分配的 ip.

    #!/bin/bash
    running_vms=`virsh list |grep running`
    echo -ne "共有`echo "$running_vms"|wc -l`个虚拟机在运行.\n"
    for i in `echo "$running_vms" | awk '{ print $2 }'`;do
    mac=`virsh dumpxml $i |grep "mac address"|sed "s/.*'\(.*\)'.*/\1/g"`
    ip=`arp -ne |grep "$mac" |awk '{printf $1}'`
    printf "%-30s %-30s\n" $i $ip
    done
    
    [root@localhost net-util]# bash list_vm_ip.sh
    共有2个虚拟机在运行.
    csr_1000v                      192.168.122.130
    new_csr_1000v                  192.168.122.131
    

    由于本身是桥接到 br0 网卡上,可和宿主直接通信:

    所以可在 router 配置 telnet 登录:

    外网访问 KVM#

    上面的网络情况做到了,可以使用宿主机为 csr1000v 配置。但如果想从外部网络中,访问设备就无法做到了。

    这时就需要新创建一个的网桥,然后和 kvm 的网卡相连接。

    先介绍下网络环境:

    机器名 IP 描述
    宿主机 10.124.205.51 存储 kvm 的物理机
    csr1000v 10.124.205.52 用 kvm 启动的虚机
    测试机器 10.124.205.14 用于测试能否访问到 kvm 虚机

    整体思路如下:

    1. 记录当前宿主机可以访问外网的网卡信息,比如 IP,网关等
    2. 新建一个网桥
    3. 将新建的网桥和原来的网卡想关联
    4. 修改 kvm 虚机文件
    5. 进入 csr1000v 绑定真实 IP
    6. 测试

    首先记录当前物理网卡信息:

    使用 ip addr 找到带有 IP 的真实网卡,比如我这里是 ens192:

    2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:50:56:bb:93:c4 brd ff:ff:ff:ff:ff:ff
        inet 10.124.205.51/24 brd 10.124.207.255 scope global noprefixroute ens192
           valid_lft forever preferred_lft forever
        inet6 fe80::eb4d:e564:a48:1835/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
    

    记录对应配置文件的有效信息:

    cat /etc/sysconfig/network-scripts/ifcfg-ens192
    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="none"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens192"
    UUID="94a5dbcf-1d42-4fe1-ad0a-6f9743f0f033"
    DEVICE="ens192"
    ONBOOT="yes"
    IPADDR="10.124.205.51"
    PREFIX="24"
    GATEWAY="10.124.205.254"
    DNS1="64.104.14.184"
    DNS2="208.67.222.222"
    IPV6_PRIVACY="no"
    

    这里将一些有用的信息,拷贝出来。之后新建网桥需要用到:

    IPADDR="10.124.205.51"
    PREFIX="24"
    GATEWAY="10.124.205.254"
    DNS1="64.104.14.184"
    DNS2="208.67.222.222"
    

    关闭网络

    systemctl stop NetworkManager
    

    因为要新建一个网桥,为了防止同名的情况,先查看下, 没有叫 br0 的网桥:

    brctl show
    

    创建新网桥,添加之前准备好的信息:

    vim /etc/sysconfig/network-scripts/ifcfg-br0
    
    DEVICE=br0
    ONBOOT=yes
    TYPE=Bridge
    NM_CONTROLLED=yes
    BOOTPROTO=static
    IPADDR="10.124.205.51"
    PREFIX="24"
    GATEWAY="10.124.205.254"
    DNS1="64.104.14.184"
    DNS2="208.67.222.222"
    

    更新原始 ens192 网卡信息,与新网桥建立连接, 记得把原始文件备份

    vim /etc/sysconfig/network-scripts/ifcfg-ens192
    
    NAME="ens192"
    DEVICE="ens192"
    ONBOOT="yes"
    TYPE=Ethernet
    ONBOOT=yes
    BRIDGE=br0
    

    重启网络:

    systemctl restart network
    

    查看网卡是否生效:

    原始 IP 转移到新网卡上:

    重启 kvm:

    systemctl restart libvirtd
    

    修改 kvm csr1000v 配置文件

    virsh edit  csr_1000v
    
    将 interface 关联的网卡,改成新网卡。
    
    <interface type='bridge'>
          <mac address='52:54:00:0d:86:d9'/>
          <source bridge='br0'/>
          <model type='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
     </interface>
    
    其中 type 需要改变为 bridge,bridge 绑定的名字需要改成 `br0`
    

    重启 csr1000v

    virsh reboot  csr_1000v
    

    查看 csr_1000v 的网卡是否挂载到 br0 上:

    这时进入到设备中,正常配置有效的 ip,因为是桥接的模式,外网就可以正常访问了。

    这里配置 IP 为 10.124.205.52, 从另外一台物理机上可以正常 ping 通:

    #

    之前使用 kvm 安装 csr1000v 后,发现使用 console 无法登录到 router 里面,一直卡在 Escape character is '^]'

    使用官网文档,配置 tcp 串口依然不好用。最后是通过在 router 里面配置 platform console serial 这句话得以用 console 访问。

    目前还存在一个问题,就是想给 router 默认刷一些 day0 配置进去,但安装官网创建 iso 镜像的方式也不太好用,后续研究后补充。

    参考#

    cisco install csr1000v

  • 相关阅读:
    Xshell传输文件
    Jenkins的使用GIT(4)
    华为Hcia-数通学习(更改策略)
    xss的绕过
    信号量Semaphore详解
    【Linux】Linux环境基础开发工具使用
    苹果平板不用原装笔可以吗?值得入手的几款ipad触控笔
    PHP 与底层 linux 命令 混合开发 类
    跨域问题的分析
    精简docker的导出镜像
  • 原文地址:https://www.cnblogs.com/michael9/p/16088899.html