eNSP 交换机与电脑不在一个网段?用一台 Windows 双网卡做路由,把实验环境彻底打通
做华为网络实验最憋屈的一刻:设备明明配了 IP、链路也是 up/up,宿主机却
ping100% 丢包,同局域网的电脑连 ARP 都拿不到。查 ACL、查防火墙、查掩码,一晚上过去还是不通。
本文把这件事讲透:为什么"不在一个网段",以及怎么用一台双网卡 Windows 当路由器把它打通。
一、现象:链路是 UP 的,包却一个都过不去
在 eNSP 里给交换机 Vlanif1 配好管理地址:
interface Vlanif1
ip address 192.168.56.10 255.255.255.0
设备侧一切正常:display interface brief 显示 GE0/0/1 up/up,日志也打出
The line protocol IP on the interface Vlanif1 has entered the UP state。
但宿主机这边:
> ping 192.168.56.10
4 个包,100% 丢失
> arp -a
(列表里根本没有交换机的 MAC)
很多人第一反应是查 ACL、查防火墙、查掩码写错------方向全错了。真相在 eNSP 的桥接机制里。
二、先搞懂:为什么"不在一个网段"
第一层:eNSP 里不同设备的"出身"不一样
- AR / WLAN / USG 这些是 VirtualBox 虚拟机,有虚拟网卡,宿主机能直接碰
- S3700 / S5700 / LSW 这些交换机是
eNSP_Switch.exe原生模拟的,没有 VirtualBox 网卡
所以想让宿主机碰到交换机,eNSP 的"云(Cloud)"是唯一桥接方式。而云本身有两个坑:
坑 1:绑定方向搞反(最容易踩)
云有两个口:一个口绑本地网卡 (出方向),另一个口不绑(进方向)。设备必须接在"没绑网卡"的那个口上 。
接反了会发生什么?链路照样 up/up,但宿主机网卡计数一个字节都不涨:
Get-NetAdapterStatistics -Name "VirtualBox Host-Only Network #2"
# RX 计数跑前跑后完全没变 ⇒ 帧根本没上来
判定口诀:RX 计数不涨 = 问题在云/绑定/端口映射层,跟 ACL、路由、防火墙一点关系都没有。
云配置本身还有三个硬要求:
-
端口映射至少要两条端口 (只建一条会报"请选择不同的端口")
-
入端口 ≠ 出端口 ,并勾上「双向通道」
-
配完必须点【确定】------叉掉窗口等于没配
坑 2:这个桥接只对宿主机那一台机器有效
云绑定 VirtualBox Host-Only Ethernet Adapter #2 时,那个 192.168.56.0/24 网段只存在于 Windows 内部 。
同局域网的 Linux 主机路由表里压根没有 56 段,连 ARP 都发不出去------这才是"不在一个网段"的真正原因。
三、解法:让 Windows 当三层路由器
思路很朴素:那台 Windows 一只脚在 192.168.1.94(WLAN),一只脚在 192.168.56.1(Host-Only 网卡) ,
它天生就跨两个网段------让它当网关就行。
① Windows:打开路由转发
# 总闸(协议栈启动时读,最保险是重启一次)
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" `
-Name IPEnableRouter -Value 1 -PropertyType DWord -Force
# 逐网卡开转发(这一半立即生效,两块网卡都要开)
Set-NetIPInterface -InterfaceAlias "WLAN" -Forwarding Enabled
Set-NetIPInterface -InterfaceAlias "VirtualBox Host-Only Network #2" -Forwarding Enabled
# 复核
Get-NetIPInterface -AddressFamily IPv4 | ft InterfaceAlias,Forwarding,ConnectionState
⚠️ 千万别用 ICS(Internet 连接共享) :它会把内网卡强制改成
192.168.137.1,直接毁掉你现有的地址规划;而且 ICS 给的是单向 NAT------对端能出来,你进不去。
② 交换机:加回程路由,并删掉"抢路由"的直连从地址
ip route-static 192.168.1.0 255.255.255.0 192.168.56.1
undo ip address 192.168.1.200 255.255.255.0 sub ← 这一步最容易漏!
为什么必须删那条从地址 :设备上如果还留着 192.168.1.200/24 的直连从地址,
按最长前缀匹配 规则,直连的 /24 会压过静态的 /24 → 设备认为 192.168.1.0/24
是"自己直连的",于是去 ARP 目标地址(而不是交给路由),回包自然出不去。
核验:display ip routing-table 里 192.168.1.0/24 应该显示为
Static ... 192.168.56.1,而不是 Direct。
③ 采集端(Linux)加一条静态路由
sudo ip route add 192.168.56.0/24 via 192.168.1.94
ip route | grep 192.168.56 # 复核
判据就一句:Linux 上 ping 192.168.56.10 通了,链路就成立了。
(临时路由重启即失效,需要持久化就写进 netplan / NetworkManager。)
四、两个"别再折腾"的坑(有实测数据)
| 现象 | 实测读数 | 结论 |
|---|---|---|
| 桥接链路丢包 50~75% | 换成绑 WiFi 还是绑 Host-Only,丢包率一模一样 | 这是 eNSP 抓包注入机制的问题,换网卡、改 IP、查 ACL 全是白工 |
| TCP 却是全通的 | 丢包 75% 的情况下,SSH / Telnet 6/6 全成功(靠重传) | 别拿"SSH 通不通"判断链路质量 |
| UDP 会漏 | SNMP 没有重传机制 | 必须 -r 3 -t 2 重试,并如实告诉用户"能用,但轮询会慢、会漏" |
五、顺手:eNSP 报"错误代码 40"的两条根因
| 报错关键字 | 根因 | 修法 |
|---|---|---|
Raw-mode is unavailable courtesy of Hyper-V |
Win11 的 Hyper-V / 虚拟机平台先占了 CPU 虚拟化 | bcdedit /set hypervisorlaunchtype off + 重启 |
Interface (...) is not a Host-Only Adapter interface |
Host-Only 网卡名与 eNSP 配置不一致(常退化成 ... #2) |
VBoxManage list hostonlyifs 看真名,再对齐 |
决定性复现手法 (1 分钟定位,比翻几个月前的老日志靠谱):建一个空探针虚拟机,
用 VBoxManage startvm 的报错去问 VirtualBox 要真话:
set VBOX_USER_HOME=C:\Users\<你>\.VirtualBox && "C:\ensp\VBoxManage.exe" createvm --name ZZ_Probe --ostype Linux --register
set VBOX_USER_HOME=C:\Users\<你>\.VirtualBox && "C:\ensp\VBoxManage.exe" modifyvm ZZ_Probe --nic1 hostonly --hostonlyadapter1 "VirtualBox Host-Only Ethernet Adapter"
set VBOX_USER_HOME=C:\Users\<你>\.VirtualBox && "C:\ensp\VBoxManage.exe" startvm ZZ_Probe --type headless
六、一条纪律:重开 .topo = 设备恢复出厂
eNSP 每次打开 .topo 都会按 base 镜像重建虚拟机,管理 IP、SSH 用户、VTY 配置全部清空。
固定顺序别搞反 :改 .topo → 让 eNSP 重开(不保存 )→ 再配设备 → save。
所以现场配置一定要脚本化(一条命令跑完 IP + SSH + save),否则每次重开都要重敲一遍。
七、这套结构在真实机房里叫什么
它有个正经名字:带外管理网 + 跨段网关。
设备(交换机/服务器带外口)集中放在独立管理段(如 192.168.56.0/24),
由一台双网卡网关跨到业务网,网管软件只需一条静态路由就能访问全部设备。
你刚搭的这个实验环境,就是它的缩小版。 把这套搞熟,摸真机房的带外网时会有种"这不就是我上周搭的那个吗"的感觉。
小结
- eNSP 里交换机是原生模拟、没有虚拟网卡,只能靠"云"桥接;桥接只对宿主机那台机器有效
- 云的两个坑:设备接没绑网卡的口 、映射要两条且入≠出 + 双向通道 + 点确定
- 打通靠一台双网卡 Windows 当路由器:开转发 + 设备加回程路由(并删掉抢路由的直连从地址)+ 对端加静态路由
- 桥接链路丢包是机制问题,TCP 照样通、UDP 必须重试,别再折腾网卡
- 重开
.topo等于设备恢复出厂,配置放最后一步并脚本化