EVE-NG v7 重磅更新:付费功能全免费,流量可视化人人可用 前言长期以来EVE-NG 都是网络从业者公认的仿真利器能够完整模拟华为、华三、思科、锐捷等多厂商硬件设备是考证练习、网络架构调试验证的核心工具。早在 v6 版本官方就上线了 Traffic Filters 流量可视化功能依靠实时拓扑流量线条把看不见的数据转发、故障切换过程直观呈现大幅降低复杂组网实验的理解难度。但该功能仅对付费专业版开放绝大多数普通用户只能望而却步。近日从 EVE-NG 亚太区独家代理商 EmulatedLab 社区获悉即将正式发布的 EVE-NG v7 专业版大幅放宽权限以往 v6 专业版必须购买授权才能使用的全部专属功能如今无需付费授权即可免费使用Traffic Filters 流量可视化也包含在内。该功能解决了复杂网络实验难以直观观测流量走向的痛点在 hbugs001 的协助下我提前拿到 v7 体验版。本文以 KeepalivedLVS 高可用 Nginx 集群为例完整实测 Traffic Filters带你感受新版本的实操价值。一、实验准备1.1 环境要求EVE-NG 平台EVE-NGv7即将发布本实验基于 v7 测试版验证v6 专业版亦可完成全部实验EVE-NG 建议配置CPU ≥ 16 核、内存 ≥ 32 GB、SSD ≥ 500 GB5 台 openEuler 24.03 节点同时运行浏览器Chrome / Edge 最新版用于访问 EVE-NG Web 控制台。虚拟节点规划主机名角色数量系统CPU 内存lvs1LVSKeepalived主节点1openEuler 24.03 LTS2 VCPU 4GBlvs2LVSKeepalived备节点1openEuler 24.03 LTS2 VCPU 4GBnginx1后端 Nginx 节点 11openEuler 24.03 LTS2 VCPU 4GBnginx2后端 Nginx 节点 21openEuler 24.03 LTS2 VCPU 4GBclient客户端测试节点1openEuler 24.03 LTS2 VCPU 4GB网络规划网段用途关键 IP业务网段 192.168.10.0/24客户端访问、LVS 对外服务、VIP 漂移lvs1.ens4192.168.10.11、lvs2.ens4192.168.10.12、VIP192.168.10.100、client192.168.10.10后端网段 172.29.129.0/24LVS 与 Nginx 内部通信、nginx 默认网关lvs1.ens3 / lvs2.ens3 / nginx1 / nginx2 全部为 DHCP 自动获取实际172.29.129.190 / 189 / 124 / 247后端浮动 VIP172.29.129.1001.2 实验拓扑图Cloud 用于 NAT 访问互联网默认网段172.29.129.0/24具有 DHCP。VRRP 心跳lvs1与lvs2通过业务网段Sw1互发 VRRP 通告协商主备两个 VIP 都跟着 Master 漂移业务 VIP192.168.10.100漂在 lvs1 / lvs2 的ens4拓扑图中标注于 lvs1 e1 旁后端浮动 VIP172.29.129.100漂在 lvs1 / lvs2 的ens3拓扑图中标注于 lvs1 e0 旁作为 nginx 的稳定默认网关。Internet 是 EVE-NG 内置 nat0 类型的 Network 网络对象采用 NAT 转发模式为实验拓扑内所有设备提供外网访问通道默认网段为 172.29.129.0/24。实验中 openEuler 虚拟机需要联网下载 yum 软件源因此组网拓扑必须添加该 Internet 对象才能正常联网。逻辑网段业务网段192.168.10.0/24客户端与 LVS 业务网卡所在的对外服务网段VIP192.168.10.100浮动在 lvs1 / lvs2 的ens4上后端网段172.29.129.0/24LVS 与 Nginx 节点之间的内部通信网段172.29.129.100作为浮动 VIP 充当 nginx 的稳定默认网关避免 lvs1/lvs2 切换时 nginx 还要手动改网关。LVS 通过ens3将请求转发至 Nginx1 / Nginx2。1.3 节点系统初始配置所有 5 个节点都执行# 关 firewalld / SELinux(避免拦截实验流量)systemctl disable--nowfirewalld setenforce0sed-is/^SELINUXenforcing/SELINUXpermissive//etc/selinux/config# 改主机名(对应节点执行对应命令)hostnamectl set-hostname lvs1# lvs2 / nginx1 / nginx2 / client仅 lvs1 / lvs2 额外执行# 启用 IP 转发(LVS NAT 模式必须)echonet.ipv4.ip_forward 1/etc/sysctl.confsysctl-p# 加载 IPVS 内核模块 开机自载modprobe ip_vs ip_vs_rr ip_vs_wrr ip_vs_shcat/etc/modules-load.d/ipvs.confEOF ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh EOF1.4 业务软件安装lvs1 / lvs2 执行yuminstall-yipvsadm keepalivednginx1 / nginx2 执行此时默认网关还是 DHCP 分配的 172.29.129.254够装 nginxyuminstall-ynginxechoNginx Node 1 by grbj.cn/usr/share/nginx/html/index.html# nginx2 改 Node 2systemctlenable--nownginxcurl-shttp://127.0.0.1/# 验证:应该输出 Nginx Node 1 by grbj.cnclient 执行yuminstall-ycurl网关时序说明:nginx 节点装好后默认网关仍是172.29.129.254外网路由器必须在后续步骤中将它改为浮动 VIP172.29.129.100否则 nginx 回包会绕过 LVS形成流量环路。二、实验配置2.1 节点网络配置LVS 节点lvs1 改成 .11lvs2 改成 .12# ens3 后端网卡:DHCP 但屏蔽 .254 默认路由(避免 LVS 自身发出的包被外网路由器劫持)nmcli con mod ens3 ipv4.method auto ipv4.never-defaultyesautoconnectyesnmcli con up ens3# ens4 业务网卡:静态nmcli con mod ens4 ipv4.addresses192.168.10.11/24 ipv4.method manual ipv4.never-defaultyesnmcli con up ens4Nginx 节点nginx1 改成 .247# 静态 IP,网关指向 LVS 后端浮动 VIP(响应报文走浮动网关才能回 LVS,否则形成流量环路)nmcli con mod ens3 ipv4.addresses172.29.129.124/24 ipv4.gateway172.29.129.100\ipv4.method manual autoconnectyesnmcli con up ens3Client 节点# 网关必须指向业务 VIP 192.168.10.100,不能指 lvs1 物理 IP(.11),否则 lvs1 故障时 client 全断网nmcli con mod ens3 ipv4.addresses192.168.10.10/24 ipv4.gateway192.168.10.100\ipv4.method manual nmcli con up ens32.2 LVS 主/备 Keepalived 配置1 网卡检测脚本两台 LVS 都要cat/usr/local/bin/check_intf.shEOF #!/bin/bash IF$1 [ -z $IF ] { echo Usage: $0 iface 2; exit 2; } [ $(cat /sys/class/net/$IF/operstate 2/dev/null) up ] exit 0 || exit 1 EOFchmod755/usr/local/bin/check_intf.sh2/etc/keepalived/keepalived.conf主备共用只改 3 行global_defs { router_id LVS_MASTER script_user root enable_script_security } vrrp_script check_ens3 { script /usr/local/bin/check_intf.sh ens3 interval 2 weight -30 fall 3 rise 2 } vrrp_script check_ens4 { script /usr/local/bin/check_intf.sh ens4 interval 2 weight -30 fall 3 rise 2 } # VI_1 业务 VIP 绑 ens4 vrrp_instance VI_1 { state MASTER interface ens4 virtual_router_id 51 priority 110 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.10.100/24 dev ens4 label ens4:1 } track_script { check_ens3 check_ens4 } notify_master /bin/true notify_backup /bin/true notify_fault /bin/true } # VI_2 后端浮动 VIP 绑 ens3(nginx 默认网关,必须和 VI_1 同步漂移) vrrp_instance VI_2 { state BACKUP interface ens3 virtual_router_id 52 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 2222 } virtual_ipaddress { 172.29.129.100/24 dev ens3 label ens3:1 } track_script { check_ens3 check_ens4 } notify_master /bin/true notify_backup /bin/true notify_fault /bin/true } virtual_server 192.168.10.100 80 { delay_loop 6 lb_kind NAT lb_algo rr persistence_timeout 50 protocol TCP real_server 172.29.129.124 80 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 80 nb_get_retry 3 delay_before_retry 3 } } real_server 172.29.129.247 80 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 80 nb_get_retry 3 delay_before_retry 3 } } }主备差异只改这 3 行:位置lvs1(主)lvs2(备)router_idLVS_MASTERLVS_BACKUPVI_1.stateMASTERBACKUPVI_1.priority110100VI_2 主备都state BACKUPpriority 100靠 IP 大小决出192.168.10.12192.168.10.11lvs2 抢得。2.3 启动lvs1 / lvs2 执行# 关掉 keepalived 自动重启(故障测试时 stop 不会被立刻拉起)sed-is/^Restart.*/Restartno//usr/lib/systemd/system/keepalived.service systemctl daemon-reloadtouch/etc/sysconfig/ipvsadm systemctlenable--nowkeepalivedsleep8# 等 VRRP 协商验证 lvs1主ipvsadm-Lnip-4addr show|grep-E192.168.10.100|172.29.129.100三、EVE-NG 启用 Traffic Filters 流量可视化在 EVE-NG 实验拓扑界面点击左侧“Traffic Filters”。点击“NEW FILTER”添加过滤规则。配置两个过滤参数。Filter 1端口 80 包大小 80 字节 HTTP 业务流量Filter Title:tcp port 80 and greater 80Filter Expression:tcp port 80 and greater 80Timeout (milliseconds): 500Filter Color:#00ff00绿色Filter 2端口 80 包大小 80 字节 TCP 握手/挥手:Filter Title:tcp port 80 and less 80Filter Expression:tcp port 80 and less 80Timeout (milliseconds): 500Filter Color:#0000FF蓝色要点greater 80/less 80是 EVE-NG Traffic Filters 扩展 BPF针对链路层 packet size总字节数。两条规则分开可以把 HTTP 业务包80 字节带 payload和 TCP 控制包80 字节SYN/FIN/ACK用不同颜色区分让流量视图更清晰。四、实验验证4.1 正常业务调度验证客户端循环访问 VIP看后端轮询。foriin$(seq110);doecho--- request #$i---curl-shttp://192.168.10.100/sleep0.5done观察 Traffic Filters 视图。流量路径客户端192.168.10.0/24 → SW1 → LVS-MASTERens4 持 192.168.10.100ens3 持 172.29.129.100 → Nginx1172.29.129.124/Nginx2172.29.129.247。流量线条交替闪烁直观体现轮询调度统计面板展示数据包数量。4.2 主LVS节点故障切换验证手动将 Sw1 到 lvs1 的链路停止模拟 lvs1 故障。等 5-10s 让 VRRP 协商完成。客户端验证业务不中断。# 在 client 执行foriin12345;docurl-s--max-time3-wcode%{http_code} time%{time_total}s\nhttp://192.168.10.100/sleep0.5doneTraffic Filters 现象业务 VIP192.168.10.100与后端浮动 VIP172.29.129.100同步漂移至 lvs2因为两个 VIP 都在 VI_1/VI_2 的 track_script 里跟踪同一对 ens3/ens4流量自动切换至client → Sw1 → lvs2ens4 持 192.168.10.100 → Sw2 → nginx1/2链路业务无中断Nginx 默认网关指向 172.29.129.100后端浮动 VIP始终跟随主节点切换确保响应报文回程路径正确nginx → 172.29.129.100lvs2 ens3 → lvs2 ens4 → client。恢复主节点服务高 priority 110 会自动抢回4.3 后端Nginx节点故障验证将 Sw2 到 nginx1 的链路停止模拟下线 Nginx1 服务。等 6s 让 LVS TCP_CHECK 判定故障delay_loop 6× 1 轮 6s。Traffic Filters 现象。LVS 健康检测判定 Nginx1172.29.129.124 失效该节点链路流量线条消失所有请求统一转发至 Nginx2172.29.129.247客户端 curl 全部返回Nginx Node 2。五、实验总结在此之前Traffic Filters 一直是 EVE-NG 专业版的专属特权不少想做可视化实验的爱好者、学生、中小企业只能放弃或是额外承担授权成本。而 EVE-NG v7 直接取消付费门槛让所有人都能零成本使用流量可视化这一次更新彻底拓宽了模拟器的使用边界。很多人固化认为 EVE-NG 只是网工刷题、调试交换路由的工具但 Traffic Filters 免费开放后它早已不再局限于传统网络场景。后端开发可以直观看懂负载均衡调度逻辑安全从业者能够搭建低成本流量分析靶场运维新人可快速理解集群故障漂移甚至产品、测试等非技术人员也能依托动态拓扑快速听懂底层业务流转逻辑。过去想要复现集群故障、流量切换流程要么采购昂贵商用可视化平台要么冒险在线上环境测试成本与风险双双拉满。如今仅靠一台普通服务器部署 EVE-NG v7就能搭建完整可视化实验环境。本次 LVSKeepalived 高可用集群只是其中一个典型案例借助 Traffic Filters我们还能拓展微服务链路追踪、渗透流量溯源、多区域业务容灾等大量跨界实验。如果你还在用传统方式反复刷新页面、翻查日志判断流量走向不妨试试新版 EVE-NG 的 Traffic Filters。曾经收费解锁的可视化能力现在人人可用也让这款老牌模拟器拥有了完全不一样的使用方式挖掘出远超网络仿真之外的全新价值。