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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章