【无标题】

下载好 HCL 模拟器后,网络设备启动常见问题与解决

在本机系统版本 Win11 家庭版环境下,启动设备(显示"启动失败")通常是由虚拟化冲突引起的:

  • 关闭 Hyper-V 相关功能:在"启用或关闭 Windows 功能"中,取消勾选"虚拟机平台"和"适用于 Linux 的 Windows 子系统 (WSL)"。
  • 禁用内核隔离:进入"Windows 安全中心"->"设备安全性"->"内核隔离",关闭"内存完整性"开关并重启。
  • 强制关闭 Hypervisor :若上述无效,以管理员身份运行 CMD,执行命令 bcdedit /set hypervisorlaunchtype off 并重启电脑。
  • CLI 窗口无响应 :如果启动后命令行只有绿色方块,通常是因为设备还在加载内核,需等待 1~2 分钟并多次敲击回车键激活交互界面。

网络设备设置与配置

本实验采用两台 MSR36-20 路由器、一个 Host 主机、一个 PC 机组成的拓扑。

右键设备-启动-启动成功-打开命令端口(在 HCL 模拟器内,非本机 cmd 窗口)

各设备配置命令记录如下:

路由器 1 (MSR36-20_1) - 模拟内网网关

powershell 复制代码
<H3C> system-view #进入系统视角,权限更高
[H3C] sysname MSR1 #更改名称,方便区分
[MSR1] interface GigabitEthernet 0/1  # 进入0/1接口连接MSR3
[MSR1-GigabitEthernet0/1] ip address 10.0.0.1 255.255.255.0 #设置0/1接口的ip,前ip,后子网掩码

路由器 3 (MSR36-20_3) - 模拟中间跳板

powershell 复制代码
<H3C> system-view
[H3C] sysname MSR3
[MSR3] interface GigabitEthernet 0/0  # 进入0/0接口连接MSR1
[MSR3-GigabitEthernet0/0] ip address 10.0.0.2 255.255.255.0 # 提醒:即使是连接在同一条线上的不同路由器的两个接口,也拥有不一样的ip地址
[MSR3] interface GigabitEthernet 0/1  # 进入0/1接口连接物理主机 Host_1
[MSR3-GigabitEthernet0/1] ip address 192.168.56.10 255.255.255.0 # 192.168.56.10为MSR3接口0/1的ip地址,并不等于Host_1的ip地址

⚠️注意:若查看虚拟网卡(本机)IP地址

  • 方法一:可以搜索栏搜索"查看网络连接",找到虚拟网卡,双击并点击"详细信息"查看
  • 方法二:打开本机 cmd 命令行(管理员身份),输入 ipconfig即可查看各个网卡的 ip

物理主机接入点 Host_1

接口绑定 :双击 Host_1,在网卡绑定中选择 VirtualBox Host-Only Ethernet Adapter

验证设备间的连通性(Ping)

在配置完成后,通过以下步骤验证虚拟链路是否畅通

  1. 验证 MSR1 与 MSR3 互通 : 在 MSR3 的命令行输入 ping 10.0.0.1,若收到回复说明两台路由器间链路正常。
  2. 验证层级逻辑 : 若要执行 ip addressping 命令,必须确保处于正确的视图(如接口视图或用户视图),否则会提示 Unrecognized command

验证物理主机连接情况

  1. **查看物理机 IP **: 通过上面已陈述的方法,得到 VirtualBox Host-Only Network 网卡的 IP 为 192.168.56.1,掩码 255.255.255.0
  2. 桥接测试 : 打开物理机的命令提示符 (CMD),输入 ping 192.168.56.10(MSR3 接口 0/1 的 ip)。
  3. 渗透实验准备 : 一旦 Ping 通,物理机即可通过该虚拟网卡,利用 Nmap 扫描 192.168.56.10 或直接 Telnet 登录虚拟路由器,从而完成"本地电脑对虚拟设备"的渗透测试 Demo。

常用命令

  • 查看拓扑中各个网络设备和接口的 ip 地址:display ip interface brief

测试 demo

  1. 将写好的脚本 demo_1.py 保存至 E:\python_workspace\information_center\demo_1
python 复制代码
import socket


def check_ip_port_reachable(ip,port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(2)
    try:
        sock.connect((ip, port))  # 尝试连接端口判断可达性
        print(f"{ip} 可达")
        sock.close()
        return True
    except:
        print(f"{ip} 不可达")
        return False

if __name__ == "__main__":
    switch_ip = "192.168.56.10"
    port=23
    check_ip_port_reachable(switch_ip, port)
  1. 确认连通性 :在物理机(Host_1)终端(cmd)中确认可以 ping192.168.56.10
  2. 执行脚本 :执行脚本 python demo_1.py

发现未有端口开放。 因为:未开放端口通信。我们以开放Telnet 服务做测试 。Telnet 是一种"远程登录服务/协议" ,Telnet 默认使用 23 端口通信 ,故开启 Telnet 后,设备内部会启动: 一个"监听 23 端口的程序"。 我们再次运行脚本扫描,就会看到,23 号端口是开放状态

网络通信里:

  • IP 地址决定:
    👉 "找到哪台设备"
  • 端口决定:
    👉 "找到设备里的哪个服务"
  • 所以 192.168.1.10:23 表示------》连接这台设备(MSR3)上的 Telnet 服务
  1. 开放路由 MSR3 的端口:开启 Telnet 远程登录,并设置登录密码和权限。 打开 MSR3 终端,输入以下命令:

开启 Telnet 远程管理 → 设置密码 h3c123456 → 登录后给管理员权限

powershell 复制代码
<MSR3> system-view
[MSR3] telnet server enable   # 开启这台设备的 Telnet 服务(允许别人通过 Telnet 远程连进来管理这台设备)
[MSR3] user-interface vty 0 4 # 进入 VTY 虚拟终端线路 0 到 4 的配置界面,0 4 表示一共配置 5 个远程登录口
[MSR3-line-vty0-4] authentication-mode password # 把远程登录方式设置为:密码认证。也就是说,别人想 Telnet 进来,要先输入密码
[MSR3-line-vty0-4] set authentication password simple h3c123456 # 密码需至少包含两种字符,simple 表示密码以明文方式直接设置
[MSR3-line-vty0-4] user-role network-admin # 给通过 Telnet 登录上来的人分配:network-admin 权限。意思是登录后拥有网络管理员级别的管理能力

来自:华为配置指南 _通过Telnet登录设备-配置VTY用户界面的认证方式

  1. 再次运行脚本得到结果:
相关推荐
weixin_459753941 小时前
c++如何利用filesystem--relative计算两个文件之间的相对路径【详解】
jvm·数据库·python
jekc8681 小时前
金蝶云星空调用第三方接口
开发语言·python
才兄说1 小时前
机器人二次开发机器狗巡检?自动生成巡检日志
python
专注VB编程开发20年1 小时前
json和python元组,列表,字典对比
开发语言·python·json·php
m0_596749091 小时前
Golang怎么实现队列数据结构_Golang如何用切片实现先进先出的队列【方法】
jvm·数据库·python
梦想不只是梦与想1 小时前
python 中的进制
python·进制转换
knight_9___1 小时前
大模型project面试3
人工智能·python·语言模型·面试·大模型·agent
m0_591364731 小时前
如何编写带默认值的SQL存储过程_简化前端调用接口设计
jvm·数据库·python
iAm_Ike1 小时前
如何处理SQL存储过程存储过程循环陷阱_优化逻辑结构
jvm·数据库·python