抢先体验 EVE-NG v7|v6 付费功能免费开放!Traffic Filters 直观观测负载均衡流量切换
前言
长期以来,EVE-NG 都是网络从业者公认的仿真利器,能够完整模拟华为、华三、思科、锐捷等多厂商硬件设备,是考证练习、网络架构调试验证的核心工具。早在 v6 版本,官方就上线了 Traffic Filters 流量可视化功能,依靠实时拓扑流量线条,把看不见的数据转发、故障切换过程直观呈现,大幅降低复杂组网实验的理解难度。但该功能仅对付费专业版开放,绝大多数普通用户只能望而却步。
近日,从 EVE-NG 亚太区独家代理商 EmulatedLab 社区获悉,即将正式发布的 EVE-NG v7 专业版大幅放宽权限,以往 v6 专业版必须购买授权才能使用的全部专属功能,如今无需付费授权即可免费使用,Traffic Filters 流量可视化也包含在内。该功能解决了复杂网络实验难以直观观测流量走向的痛点,在 @hbugs001 的协助下,我提前拿到 v7 体验版。本文以 Keepalived+LVS 高可用 Nginx 集群为例,完整实测 Traffic Filters,带你感受新版本的实操价值。
一、实验准备
1.1 环境要求
EVE-NG 平台
- EVE-NG v7(即将发布,本实验基于 v7 测试版验证;v6 专业版亦可完成全部实验);
- EVE-NG 建议配置:CPU ≥ 16 核、内存 ≥ 32 GB、SSD ≥ 500 GB(5 台 openEuler 24.03 节点同时运行);
- 浏览器:Chrome / Edge 最新版(用于访问 EVE-NG Web 控制台)。
虚拟节点规划
| 主机名 | 角色 | 数量 | 系统 | CPU 内存 |
|---|---|---|---|---|
| lvs1 | LVS+Keepalived 主节点 | 1 | openEuler 24.03 LTS | 2 VCPU 4GB |
| lvs2 | LVS+Keepalived 备节点 | 1 | openEuler 24.03 LTS | 2 VCPU 4GB |
| nginx1 | 后端 Nginx 节点 1 | 1 | openEuler 24.03 LTS | 2 VCPU 4GB |
| nginx2 | 后端 Nginx 节点 2 | 1 | openEuler 24.03 LTS | 2 VCPU 4GB |
| client | 客户端测试节点 | 1 | openEuler 24.03 LTS | 2 VCPU 4GB |
网络规划
| 网段 | 用途 | 关键 IP |
|---|---|---|
| 业务网段 192.168.10.0/24 | 客户端访问、LVS 对外服务、VIP 漂移 | lvs1.ens4=192.168.10.11、lvs2.ens4=192.168.10.12、VIP=192.168.10.100、client=192.168.10.10 |
| 后端网段 172.29.129.0/24 | LVS 与 Nginx 内部通信、nginx 默认网关 | lvs1.ens3 / lvs2.ens3 / nginx1 / nginx2 全部为 DHCP 自动获取(实际:172.29.129.190 / 189 / 124 / 247),后端浮动 VIP=172.29.129.100 |
1.2 实验拓扑图

Cloud 用于 NAT 访问互联网,默认网段:172.29.129.0/24,具有 DHCP。
VRRP 心跳:lvs1 与 lvs2 通过业务网段(Sw1)互发 VRRP 通告,协商主备,两个 VIP 都跟着 Master 漂移:
- 业务 VIP
192.168.10.100漂在 lvs1 / lvs2 的ens4(拓扑图中标注于 lvs1 e1 旁); - 后端浮动 VIP
172.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/24:LVS 与 Nginx 节点之间的内部通信网段,172.29.129.100作为浮动 VIP 充当 nginx 的稳定默认网关(避免 lvs1/lvs2 切换时 nginx 还要手动改网关)。LVS 通过ens3将请求转发至 Nginx1 / Nginx2。
1.3 节点系统初始配置
所有 5 个节点都执行:
# 关 firewalld / SELinux(避免拦截实验流量)
systemctl disable --now firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
# 改主机名(对应节点执行对应命令)
hostnamectl set-hostname lvs1 # lvs2 / nginx1 / nginx2 / client
仅 lvs1 / lvs2 额外执行:
# 启用 IP 转发(LVS NAT 模式必须)
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
# 加载 IPVS 内核模块 + 开机自载
modprobe ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh
cat > /etc/modules-load.d/ipvs.conf << 'EOF'
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
EOF
1.4 业务软件安装
lvs1 / lvs2 执行:
yum install -y ipvsadm keepalived
nginx1 / nginx2 执行(此时默认网关还是 DHCP 分配的 172.29.129.254,够装 nginx):
yum install -y nginx
echo "Nginx Node 1 by grbj.cn" > /usr/share/nginx/html/index.html # nginx2 改 Node 2
systemctl enable --now nginx
curl -s http://127.0.0.1/ # 验证:应该输出 "Nginx Node 1 by grbj.cn"
client 执行:
yum install -y curl
网关时序说明:nginx 节点装好后,默认网关仍是
172.29.129.254(外网路由器),必须在后续步骤中将它改为浮动 VIP172.29.129.100,否则 nginx 回包会绕过 LVS,形成流量环路。
二、实验配置
2.1 节点网络配置
LVS 节点(lvs1 改成 .11,lvs2 改成 .12)
# ens3 后端网卡:DHCP 但屏蔽 .254 默认路由(避免 LVS 自身发出的包被外网路由器劫持)
nmcli con mod ens3 ipv4.method auto ipv4.never-default yes autoconnect yes
nmcli con up ens3
# ens4 业务网卡:静态
nmcli con mod ens4 ipv4.addresses 192.168.10.11/24 ipv4.method manual ipv4.never-default yes
nmcli con up ens4
Nginx 节点(nginx1 改成 .247)
# 静态 IP,网关指向 LVS 后端浮动 VIP(响应报文走浮动网关才能回 LVS,否则形成流量环路)
nmcli con mod ens3 ipv4.addresses 172.29.129.124/24 ipv4.gateway 172.29.129.100 \
ipv4.method manual autoconnect yes
nmcli con up ens3
Client 节点
# 网关必须指向业务 VIP 192.168.10.100,不能指 lvs1 物理 IP(.11),否则 lvs1 故障时 client 全断网
nmcli con mod ens3 ipv4.addresses 192.168.10.10/24 ipv4.gateway 192.168.10.100 \
ipv4.method manual
nmcli con up ens3
2.2 LVS 主/备 Keepalived 配置
(1) 网卡检测脚本(两台 LVS 都要)
cat > /usr/local/bin/check_intf.sh << 'EOF'
#!/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
EOF
chmod 755 /usr/local/bin/check_intf.sh
(2) /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_id |
LVS_MASTER |
LVS_BACKUP |
VI_1.state |
MASTER |
BACKUP |
VI_1.priority |
110 |
100 |
VI_2 主备都 state BACKUP + priority 100,靠 IP 大小决出(192.168.10.12 > 192.168.10.11,lvs2 抢得)。
2.3 启动
lvs1 / lvs2 执行:
# 关掉 keepalived 自动重启(故障测试时 stop 不会被立刻拉起)
sed -i 's/^Restart=.*/Restart=no/' /usr/lib/systemd/system/keepalived.service
systemctl daemon-reload
touch /etc/sysconfig/ipvsadm
systemctl enable --now keepalived
sleep 8 # 等 VRRP 协商
验证 lvs1(主):
ipvsadm -Ln
ip -4 addr show | grep -E "192.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 80 - Filter Expression:
tcp port 80 and greater 80 - Timeout (milliseconds): 500
- Filter Color:
#00ff00(绿色)
Filter 2(端口 80 + 包大小 < 80 字节 = TCP 握手/挥手):
- Filter Title:
tcp port 80 and less 80 - Filter Expression:
tcp port 80 and less 80 - Timeout (milliseconds): 500
- Filter Color:
#0000FF(蓝色)

要点:
greater 80/less 80是 EVE-NG Traffic Filters 扩展 BPF,针对链路层 packet size(总字节数)。两条规则分开,可以把 HTTP 业务包(>80 字节,带 payload)和 TCP 控制包(<80 字节,SYN/FIN/ACK)用不同颜色区分,让流量视图更清晰。 - Filter Title:
四、实验验证
4.1 正常业务调度验证
- 客户端循环访问 VIP,看后端轮询。
for i in $(seq 1 10); do
echo "--- request #$i ---"
curl -s http://192.168.10.100/
sleep 0.5
done

- 观察 Traffic Filters 视图。

- 流量路径:客户端(192.168.10.0/24) → SW1 → LVS-MASTER(ens4 持 192.168.10.100,ens3 持 172.29.129.100) → Nginx1(172.29.129.124)/Nginx2(172.29.129.247)。
- 流量线条交替闪烁,直观体现轮询调度;
- 统计面板展示数据包数量。
4.2 主LVS节点故障切换验证
-
手动将 Sw1 到 lvs1 的链路停止,模拟 lvs1 故障。
-
等 5-10s 让 VRRP 协商完成。
-
客户端验证业务不中断。
# 在 client 执行
for i in 1 2 3 4 5; do
curl -s --max-time 3 -w "code=%{http_code} time=%{time_total}s\n" http://192.168.10.100/
sleep 0.5
done
- Traffic Filters 现象:

- 业务 VIP
192.168.10.100与后端浮动 VIP172.29.129.100同步漂移至 lvs2(因为两个 VIP 都在 VI_1/VI_2 的 track_script 里跟踪同一对 ens3/ens4); - 流量自动切换至
client → Sw1 → lvs2(ens4 持 192.168.10.100) → Sw2 → nginx1/2链路,业务无中断; - Nginx 默认网关指向 172.29.129.100(后端浮动 VIP),始终跟随主节点切换,确保响应报文回程路径正确(
nginx → 172.29.129.100(lvs2 ens3) → lvs2 ens4 → client)。
- 恢复主节点服务(高 priority 110 会自动抢回):

4.3 后端Nginx节点故障验证
- 将 Sw2 到 nginx1 的链路停止,模拟下线 Nginx1 服务。
- 等 6s 让 LVS TCP_CHECK 判定故障(
delay_loop 6× 1 轮 = 6s)。 - Traffic Filters 现象。

- LVS 健康检测判定 Nginx1(172.29.129.124) 失效,该节点链路流量线条消失;
- 所有请求统一转发至 Nginx2(172.29.129.247);
- 客户端 curl 全部返回
Nginx Node 2。
五、实验总结
在此之前,Traffic Filters 一直是 EVE-NG 专业版的专属特权,不少想做可视化实验的爱好者、学生、中小企业只能放弃,或是额外承担授权成本。而 EVE-NG v7 直接取消付费门槛,让所有人都能零成本使用流量可视化,这一次更新彻底拓宽了模拟器的使用边界。
很多人固化认为 EVE-NG 只是网工刷题、调试交换路由的工具,但 Traffic Filters 免费开放后,它早已不再局限于传统网络场景。后端开发可以直观看懂负载均衡调度逻辑,安全从业者能够搭建低成本流量分析靶场,运维新人可快速理解集群故障漂移,甚至产品、测试等非技术人员,也能依托动态拓扑快速听懂底层业务流转逻辑。
过去想要复现集群故障、流量切换流程,要么采购昂贵商用可视化平台,要么冒险在线上环境测试,成本与风险双双拉满。如今仅靠一台普通服务器部署 EVE-NG v7,就能搭建完整可视化实验环境。本次 LVS+Keepalived 高可用集群只是其中一个典型案例,借助 Traffic Filters,我们还能拓展微服务链路追踪、渗透流量溯源、多区域业务容灾等大量跨界实验。
如果你还在用传统方式反复刷新页面、翻查日志判断流量走向,不妨试试新版 EVE-NG 的 Traffic Filters。曾经收费解锁的可视化能力现在人人可用,也让这款老牌模拟器拥有了完全不一样的使用方式,挖掘出远超网络仿真之外的全新价值。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)