文章 18
评论 0
浏览 56170
Cisco CSR1000v通用调试分析方法

Cisco CSR1000v通用调试分析方法

STEP0 默认安装CSR1KV

使用官方的提供的OVA或者ISO镜像安装,虚拟机使用vmware

STEP1修改分区中的文件

csr1000v安装完成后,应该会有多个分区,其中两个分区是不加密的,加密分区用来存储配置、数据库、许可证等信息。

分区加密挂载点作用
/dev/sda1No/bootflashbootflash
/dev/sda2Lucks/nvram作为nvram使用
/dev/sda5No/variedgrub目录,rpboot、mono等pkg文件
/dev/sda6Lucks/csl_p_0许可证、序列号、udi等信息
/dev/sda7Lucks/csl_p_1许可证、序列号、udi等信息
/dev/sda8Lucks/csl_s_0许可证、序列号、udi等信息
/dev/sda9Lucks/csl_s_1许可证、序列号、udi等信息

我们需要修改其中两个不加密的分区的内容,这需要底层权限,但是现在默认安装号的CSR1000V并不直接提供底层shell访问,我们可以采用挂载启动一个live系统,在live系统中修改分区中的文件。

挂一个ubuntu live系统上去

image.png

添加rommon_vars文件

在/dev/sda5也就是/varied分区或者叫做/boot分区中添加一个rommon_vars文件
内容是:

SR_INIT_SHELL=aux_do_system_shell
SR_INIT_DEBUG=1
SR_TRACE=DEBUG
SR_NOWATCHDOG=1
DEBUG_CONF=/bootflash/debug.conf

修改linux内核启动命令(可选)

修改/dev/sda5分区中的grub配置文件,对于grub来说配置文件是grub目录下的menu.lst文件;对于grub2,配置文件是grub目录下的grub.cfg文件。
根据需要修改原始的CSR1000V linux内核启动命令:

  • 删掉VMCONSOLE
  • 修改console=为console=ttyS0,115200
  • 添加nokaslr
  • 添加norandmaps

保存所有文件,然后退出live系统

STEP2 给虚拟机添加两个串口设备

类似下图,一般来说至少添加两个,一个用来作为路由器的console口,一个作为路由器的aux口,其中因为rommon_vars的作用,aux口在系统启动后可以直接用于底层shell访问

image.png

这两个虚拟机的串口设备被vmware连接到了两个命名管道,使用xshell添加连接时填入管道文件的名称(在端口号输入框)即可。

在启动之后,第二个虚拟串口在csr1000v启动后,会自动进入底层shell,image.png

STEP3 CSR1000V底层linux与外界的网络通信

由于CSR1000V采用了netmap/dpdk框架,初始化安装的虚拟机网络设备会被qfp接管,导致底层linux系统无法使用这些网络接口,那么有两种解决办法:

  1. 修改虚拟机的VMX配置文件,将其中一个网卡的virtualdev类型更改,对于vmware来说,常见的virtualdev有e1000系列,vmxnet系列,virtio系列等,对于比较新的CSR1000V,可以采用这种方法。默认安装的配置文件中,网卡类型会被设置为vmxnet3,更改为e1000后,e1000驱动的网卡不会被qfp进程接管。
  2. 在启动时,通过底层shell命令给一个网卡配置ip,并设为启动状态,则该网卡不会被qfp接管,对于老版本的csr1000v试用

之后,除了上一步结束可以通过虚拟串口访问底层shell,还可以通过telnet连接csr1000v的底层shell了。
同样的,ida的调试器、gdb也都可以用在csr1000v上,并通过网络通信进行远程调试。

调试开始


标题:Cisco CSR1000v通用调试分析方法
作者:erlkonig
地址:https://zzuhacker.cn/articles/2022/04/16/1650095654813.html

记录精彩的程序人生

取消