1.1 二层接口与Vlanif

实验整体拓扑

配置防火墙二层接口与Vlanif

“二层接口+三层VLANIF”的标准配置流程

把防火墙的一个物理接口G1/0/4当成交换机接口来用,接内网PC。内网PC属于VLAN 5,网关是防火墙上的Vlanif5(5.5.5.254)。防火墙再把Vlanif5加入Trust区域,这样内网PC和防火墙之间就能通了。

关键点:G1/0/4二层口(类似交换机),Vlanif5是它的三层网关口(类似交换机的VLANIF接口)。


逐条命令拆解

第1步:创建VLAN 5

vlan 5

含义:在防火墙的“VLAN数据库”里创建一个编号为5的VLAN。这只是逻辑上声明存在VLAN 5,还没把任何接口划进去。

底层逻辑:华为防火墙本质是一个融合设备(路由+交换+安全)。创建VLAN后,防火墙就有了一个“虚拟的二层广播域”。


第2步:将G1/0/4转为二层接口

interface GigabitEthernet1/0/4            
          portswitch

含义portswitch命令将G1/0/4三层模式切换到二层模式

  • 三层模式(默认):接口可以直接配IP地址,像路由器接口。

  • 二层模式:接口只能配VLAN信息,像交换机接口,不能直接配IP。

为什么要这一步:防火墙的物理接口默认是三层口(可以配IP)。如果要把这个接口接PC,并且通过VLAN隔离,必须先把它变成二层口。不敲portswitch,后面所有VLAN配置都不生效。


第3步:配置描述、开启端口

description To-InsidePC
undo shutdown
  • description:给接口加个备注,方便维护。无实际功能。

  • undo shutdown:开启接口。华为接口默认是shutdown状态,必须手动开启。


第4步:配置Access接口并划入VLAN 5

port link-type access
port default vlan 5
  • port link-type access:将接口模式设置为Access模式,只能属于一个VLAN,通常连接终端设备(PC、打印机等)。

  • port default vlan 5:把这个接口的默认VLAN设置为5。也就是说,从这个接口进入的无标签数据帧,都会被标记上VLAN 5;从防火墙发往这个接口的数据帧,也会剥离VLAN标签后发出。

效果:PC接到G1/0/4上,PC不需要知道VLAN(网卡不支持VLAN),但防火墙会自动把PC的流量归入VLAN 5。


第5步:创建Vlanif5三层接口

interface Vlanif5

含义:VLAN是二层概念(广播域),如果要让VLAN内的设备通信,需要一个三层网关。Vlanif5就是这个VLAN 5的虚拟三层接口。

底层逻辑:VLAN 5内的所有二层流量,需要路由时,会走到Vlanif5接口。这个接口就像交换机的“网关接口”。



第8步:将Vlanif5加入Trust区域

firewall zone trust
add interface Vlanif5

含义:把Vlanif5这个三层接口加入Trust区域。

为什么要配:防火墙的安全策略是基于区域的。不把接口加入任何区域,该接口的流量不会经过安全策略处理。通常内网接口加入Trust,外网接口加入Untrust。

注意G1/0/4本身是二层接口,不加入任何区域。只有三层接口(Vlanif5)才加入区域。



问题1:为什么要把Vlanif加入安全区域,而不是把物理口G1/0/4加入?


一、困惑

  1. 为什么要把Vlanif加入安全区域,而不是把物理口G1/0/4加入?

  2. 为什么没有写安全策略,Ping也能通?

这两个问题其实指向同一个答案:在防火墙眼里,流量是从哪个三层接口进来的,那个接口才算是“入口”。










问题2:接口划分区域的知识点


问题3:二层,三层接口跟防火墙安全区域安全策略知识点


一、先记住一条铁律(任何时候不要忘)

防火墙执行安全策略时,只认“三层接口”所属的区域。
也就是说:IP包从哪个三层接口进来,就查那个三层接口的区域。
二层口(没有IP地址的接口)永远不会被防火墙直接当作“入接口”去匹配安全策略。

这条铁律是华为防火墙的底层设计,永远不会变。


二、那么“二层口直接加入区域”是什么意思?

它只是一种配置上的便捷写法,不是底层处理逻辑。

当你在一个二层口上敲了:

firewall zone trust
 add interface GigabitEthernet1/0/4

实际上发生的事情是:

  • 防火墙会自动把这个二层口所属的VLAN对应的Vlanif(如果存在)的区域设为Trust

  • 如果这个VLAN还没有创建Vlanif,这个配置暂时无效(因为没有三层接口可以承载区域)。

  • 一旦你后续创建了Vlanif5,Vlanif5会继承这个二层口的区域设定。

打个比方

  • 二层口 = 一个投票代理人

  • Vlanif = 真正的投票人

  • 你让代理人去投票(配置二层口区域),最终票还是算在真正的投票人头上。如果真正的投票人自己直接投票(Vlanif自己配置区域),代理人的票就作废。


三、为什么老师会说“二层需要划区域”?

因为早期华为防火墙版本(或者某些老师习惯的教学顺序)中,会先配置二层口区域,再创建Vlanif,这样Vlanif会自动继承区域,少敲一条命令。这是一种教学上的简化,不是必须的逻辑。

但现代认证考试和实际运维中,都推荐直接配置Vlanif的区域,因为:

  • 更清晰:一眼看出哪个三层接口属于哪个区域。

  • 避免歧义:如果有多个二层口属于同一个VLAN,各自配了不同区域,以哪个为准?容易乱。

  • 排错更容易:display zone直接看到Vlanif,不需要去查二层口的继承关系。


四、用你的实验具体说明(消除矛盾)

你的实验配置(正确做法):

interface Vlanif5
 ip address 5.5.5.254 24
 firewall zone trust
 add interface Vlanif5
  • 这里物理口G1/0/4没有配置任何区域

  • 数据从G1/0/4进入,上升到Vlanif5,Vlanif5说“我在Trust区域”,安全策略匹配Trust → Local,通。

  • 完全符合铁律:只看三层接口的区域。

另一种配置(也合法,但啰嗦):

interface GigabitEthernet1/0/4
 portswitch
 port default vlan 5
 firewall zone trust
 add interface GigabitEthernet1/0/4
interface Vlanif5
 ip address 5.5.5.254 24
# 注意:Vlanif5没有单独配置区域
  • 这里物理口配了区域,Vlanif没配。

  • 防火墙内部处理时,Vlanif5会继承物理口的Trust区域。

  • 最终效果和上面一模一样。

  • 依然符合铁律:真正被用来匹配安全策略的还是Vlanif5这个三层接口,只是它的区域是从物理口继承来的。


五、为什么我说“物理口不加入任何区域,只有Vlanif加入”?

因为那是最佳实践推荐,不是“物理口不能配区域”。

我那样说的目的是为了避免你混淆,因为很多初学者看到物理口也能配区域,就以为防火墙会把二层口当作安全策略的入接口,那就大错特错了。我直接告诉你“别去管物理口,只配Vlanif”,是为了让你养成正确习惯,少踩坑。

如果你非要问“物理口配区域到底有没有用”

  • 有用,但前提是该VLAN没有Vlanif直接配置区域。

  • 一旦Vlanif自己配了区域,物理口的区域配置就被忽略。

  • 所以最清晰、最不容易出错的写法就是:只配Vlanif的区域,物理口不配


问题4:三层子接口

子接口,就是为了解决你老师提到的“三层需要划区域”里最经典、也最省钱的那个场景:在只有一台二层交换机的环境里,用防火墙的一个物理口,同时给多个部门(VLAN)做网关。 这是一个非常经典的HCIA-Security综合实验。

知识点背景:我们为什么要用子接口?

子接口的存在是为了解决一个实际矛盾:硬件接口太少,但需要划分的网段(VLAN)太多。

假设现在有一个小公司,财务部和市场部需要网络隔离,但他们只有一台二层交换机和一台防火墙。这种情况下,交换机只能做VLAN隔离,而防火墙作为所有PC的网关,就需要同时连接这两个VLAN。但墙上的接口不够了。

“单臂路由”技术就是为了解决这个难题,让一个物理接口“身兼数职”。子接口就是在一个物理口上创建的多个逻辑接口。每个子接口只处理一个VLAN的流量,相当于物理接口被逻辑地“切”成了几块,各自独立工作。

核心定义:什么是子接口?

子接口是基于一个物理以太网接口创建的、能识别和处理带有VLAN Tag数据帧的逻辑三层接口。

它的工作原理是VLAN终结。当交换机通过Trunk口传来一个带VLAN 10标签的数据帧时,防火墙收到后会直接交给G1/0/0.10这个子接口来处理,并在此处剥离VLAN标签,还原出原始的IP包,然后交给CPU进行三层路由。

底层逻辑拆解:数据包的“认亲”之旅

当PC1(财务部,IP 10.1.10.2)想要访问公司内的服务器(市场部,IP 10.1.20.2)时,数据包的处理流程如下:

  1. PC1封装数据帧:源IP 10.1.10.2,目的IP 10.1.20.2;源MAC为自身,目的MAC为其网关10.1.10.254

  2. 交换机处理:从Access口收到无标签帧后,打上VLAN 10的Tag,然后从Trunk口转发给防火墙。

  3. 防火墙接收与分发:防火墙物理口收到带VLAN 10标签的帧,发现VLAN 10,便将该帧交给G1/0/0.10子接口。

  4. 子接口终结VLANG1/0/0.10剥离VLAN标签,还原出原始IP包。

  5. 防火墙查表转发:防火墙根据目的IP 10.1.20.2查找路由表,找到匹配项10.1.20.0/24,出接口为G1/0/0.20子接口。

  6. 再次封装与发送:子接口为数据包添加新的二层头部,打上VLAN 20的标签,通过物理口发回给交换机。

  7. 交换机最终转发:交换机根据VLAN 20的Tag,将帧转发给服务器。

华为设备落地:经典“单臂路由”实验

下面我们以华为eNSP模拟器为例,带你手把手完成这个实验。

1. 实验拓扑

  • 防火墙(FW1):接口G1/0/0连接交换机。

  • 二层交换机(LSW1)

    • GE0/0/1Trunk口,连接防火墙。

    • GE0/0/10Access VLAN 10,连接PC1。

    • GE0/0/20Access VLAN 20,连接PC2。

  • PC1:IP 10.1.10.2/24,网关10.1.10.254

  • PC2:IP 10.1.20.2/24,网关10.1.20.254

 2. 实验配置

第一步:配置二层交换机

<Huawei> system-view
[Huawei] sysname LSW1
[LSW1] vlan batch 10 20 // 创建VLAN 10和20
[LSW1] interface gigabitethernet 0/0/1
[LSW1-GigabitEthernet0/0/1] port link-type trunk // 上联口配置为Trunk
[LSW1-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20 // 允许VLAN 10和20通过
[LSW1-GigabitEthernet0/0/1] quit
[LSW1] interface gigabitethernet 0/0/10
[LSW1-GigabitEthernet0/0/10] port link-type access // 下联PC口配置为Access
[LSW1-GigabitEthernet0/0/10] port default vlan 10 // 划入VLAN 10
[LSW1-GigabitEthernet0/0/10] quit
[LSW1] interface gigabitethernet 0/0/20
[LSW1-GigabitEthernet0/0/20] port link-type access // 下联PC口配置为Access
[LSW1-GigabitEthernet0/0/20] port default vlan 20 // 划入VLAN 20
[LSW1-GigabitEthernet0/0/20] quit

第二步:配置防火墙

<USG> system-view
[USG] sysname FW1
[FW1] interface GigabitEthernet 1/0/0
[FW1-GigabitEthernet1/0/0] undo shutdown // 开启物理接口
[FW1-GigabitEthernet1/0/0] quit

// 配置子接口 .10,处理VLAN 10的流量[reference:4]
[FW1] interface GigabitEthernet 1/0/0.10
[FW1-GigabitEthernet1/0/0.10] vlan-type dot1q 10 // 关键命令:终结VLAN 10的Tag[reference:5]
[FW1-GigabitEthernet1/0/0.10] ip address 10.1.10.254 255.255.255.0 // 配置VLAN 10的网关
[FW1-GigabitEthernet1/0/0.10] quit

// 配置子接口 .20,处理VLAN 20的流量
[FW1] interface GigabitEthernet 1/0/0.20
[FW1-GigabitEthernet1/0/0.20] vlan-type dot1q 20 // 关键命令:终结VLAN 20的Tag
[FW1-GigabitEthernet1/0/0.20] ip address 10.1.20.254 255.255.255.0 // 配置VLAN 20的网关
[FW1-GigabitEthernet1/0/0.20] quit

// 将子接口加入安全区域,并放行ICMP管理流量
[FW1] firewall zone trust
[FW1-zone-trust] add interface GigabitEthernet 1/0/0.10
[FW1-zone-trust] add interface GigabitEthernet 1/0/0.20
[FW1-zone-trust] quit
[FW1] interface GigabitEthernet 1/0/0.10
[FW1-GigabitEthernet1/0/0.10] service-manage ping permit
[FW1-GigabitEthernet1/0/0.10] quit
[FW1] interface GigabitEthernet 1/0/0.20
[FW1-GigabitEthernet1/0/0.20] service-manage ping permit
[FW1-GigabitEthernet1/0/0.20] quit

第三步:配置安全策略

内网PC属于Trust区域,防火墙自己属于Local区域。PC访问自己的网关,本质是Trust → Local的流量。需要配置安全策略放行Ping。

[FW1] security-policy
[FW1-policy-security] rule name trust_to_local_icmp
[FW1-policy-security-rule-trust_to_local_icmp] source-zone trust
[FW1-policy-security-rule-trust_to_local_icmp] destination-zone local
[FW1-policy-security-rule-trust_to_local_icmp] action permit
[FW1-policy-security-rule-trust_to_local_icmp] quit
[FW1-policy-security] quit

第四步:验证结果
配置完成后,分别在PC1和PC2上测试连通性:

  • PC1 Ping 网关(10.1.10.254):能通。这是Trust → Local区域流量,安全策略已放行。

  • PC2 Ping 网关(10.1.20.254):能通。同上。

  • PC1 Ping PC2(10.1.20.2):能通!这表明防火墙成功在不同子接口间转发了流量,实现了跨VLAN三层互通。

  • 查看会话表:执行display firewall session table,你将看到从Trust区域(子接口.10)到Trust区域(子接口.20)的会话。


问题5:IEEE 802 标准

标准工作组 主要职责 你最常见的名字 核心解决问题
802.3 定义有线网络(以太网)的物理层和数据链路层 以太网、网线、光纤 设备如何通过线缆连接和通信
802.11 定义无线局域网(WLAN) Wi-Fi、无线网 设备如何通过无线电波连接和通信
802.1 定义局域网/城域网的架构、桥接和管理 VLAN、STP、LLDP 如何组织和互连多个网络(无论是有线还是无线),并对其进行管理
802.15 定义无线个人局域网(WPAN) 蓝牙、ZigBee 设备如何在短距离内低功耗地连接
802.16 定义无线城域网(WMAN) WiMAX 提供城市级的远距离无线宽带接入


问题6:hybrid的用法

铁律 说明
铁律1 交换机内部处理数据帧时,一律看标签。没有标签的帧,会被打上PVID(端口默认VLAN ID)后再处理。
铁律2 交换机外部的设备(如PC、打印机),绝大多数不认识带标签的帧。你给它一个带802.1Q标签的帧,它直接丢弃。

所以问题来了:交换机内部需要标签来区分VLAN,但外部设备不认识标签。怎么办?

答案:出交换机的时候,把标签撕掉(untagged);进交换机的时候,如果没标签,就给它打上PVID。

这就是Hybrid接口存在的根本原因。


三种接口类型对比(从“标签处理”角度)

接口类型 收到无标签帧时 收到有标签帧时 发出帧时是否带标签
Access 打上PVID 只有标签=PVID才收,否则丢 永远不带标签(全撕掉)
Trunk 一般丢弃(通常不收无标签帧) 标签在允许列表中则收 只有PVID对应的VLAN不带标签,其他VLAN都带标签
Hybrid 打上PVID 标签在允许列表中则收 可以精细控制:哪些VLAN带标签(tagged),哪些VLAN不带标签(untagged)

关键点:Trunk的“不带标签”是固定的,只有PVID对应的那一个VLAN不带标签。
Hybrid的“不带标签”是可配置的,你可以指定多个VLAN在发出时都不带标签。


先灵魂一问:已经有 Access、Trunk 了,为什么还要搞出 Hybrid?

Hybrid 最核心的两条命令(吃透这两句,你就全会了)

port hybrid tagged vlan 10
port hybrid untagged vlan 20

Hybrid 三大「经典必用场景」

int g0/0/1
 port link-type hybrid
 port hybrid pvid vlan 20         // PC无标签上来,默认划入vlan20
 port hybrid untagged vlan 20     // 电脑流量剥标签
 port hybrid tagged vlan 10       // 电话流量保留标签

为什么 Access/Trunk 做不到?

  • Access:只能一个 VLAN,无法同时语音 + 办公
  • Trunk:VLAN20 也会带标签,PC 拒收报文,直接断网


老师的话 底层逻辑 注意事项
一个VLAN只能属于一个VLANIF VLANIF是VLAN的唯一三层网关,多个网关会导致路由冲突 不能为同一VLAN创建多个VLANIF,也不能同时存在VLANIF和同VID的子接口
二层口不需要访问控制 防火墙的访问控制(安全策略、Service-Manage)基于IP,二层口不处理IP,故无效 二层口可以做MAC过滤等二层控制,但与防火墙的“访问控制”概念不同


1.2 Eth-Trunk与子接口

问题:企业里有两台服务器,分别属于VLAN10和VLAN20。它们都接在思科交换机上。防火墙需要同时作为这两个VLAN的网关,并且要求防火墙和交换机之间的链路有冗余带宽聚合(防止单条链路故障,同时提升吞吐量)。传统做法是用两根独立的网线分别跑两个VLAN,但浪费端口且无冗余。怎么办?

核心瓶颈

  • 两根独立链路:一根断,半个网络瘫痪。

  • 普通Trunk:可以跑多VLAN,但没有链路冗余和负载分担。

  • 需要链路聚合(Eth-Trunk/Port-channel)+ VLAN终结(子接口)同时实现。

方案 冗余性 带宽提升 多VLAN支持 防火墙作为网关 跨厂商兼容
单根Trunk ❌ 无 ❌ 无 ✅ 有 ✅ 有 ✅ 可
两根独立Access ✅ 有(每VLAN一根) ❌ 无 ❌ 各VLAN独占链路 ✅ 有 ✅ 可
Eth-Trunk + 子接口 ✅ 有 ✅ 有 ✅ 有 ✅ 有 ⚠️ 需配置一致

结论:只有链路聚合+子接口方案能同时满足冗余、带宽、多VLAN、网关四大需求。跨厂商(华为LACP主动/思科LACP被动)是现网常见场景,必须掌握。


一、实验整体目的

  • 链路聚合:将防火墙的两个物理口捆绑成一个逻辑口Eth-Trunk,提高带宽和冗余。

  • 子接口:在一个Trunk接口上划分多个逻辑子接口,每个子接口对应一个VLAN的网关。

  • 跨厂商互通:华为防火墙与思科交换机通过LACP协议协商Trunk。

  • 服务器接入:交换机下挂两台服务器,分属不同VLAN,都能通过防火墙上网或互访。


二、实验逻辑拓扑与流量路径

       [ 服务器A ]   [ 服务器B ]
         (VLAN10)     (VLAN20)
             |            |
      +------+------------+------+
      |    思科交换机 SW1        |
      |  (Port-channel10 Trunk) |
      +----------E0/2,E0/3------+
                     |
             (Eth-Trunk10)
                     |
      +----------G1/0/2,G1/0/3--+
      |      华为防火墙 USG       |
      |  Eth-Trunk10.10 (GW 10.10.10.254)
      |  Eth-Trunk10.20 (GW 20.20.20.254)
      +-------------------------+
                     |
                  Internet / 其他区域
  • 服务器A(VLAN10)的默认网关 → 防火墙子接口 .10

  • 服务器B(VLAN20)的默认网关 → 防火墙子接口 .20

  • 交换机与防火墙之间跑Trunk,允许VLAN 10和20通过。


三、华为防火墙配置详解(逐条重点)

1. 创建VLAN和Eth-Trunk

vlan 10
vlan 20
interface Eth-Trunk10
 description To-Cisco-SW1-Channel10
 mode lacp-static   # 静态LACP模式,思科侧需配active/passive
  • 难点mode lacp-static 表示防火墙主动发送LACP协商报文。思科侧如果配passive,可以被动协商成功。

2. 将物理口加入Eth-Trunk

interface GigabitEthernet1/0/2
 undo shutdown
 eth-trunk 10
  • 注意:加入聚合组后,物理口不能再配IP或VLAN,所有配置都在聚合口上做。

3. 配置子接口(关键难点)

interface Eth-Trunk10.10
 vlan-type dot1q 10   # 802.1Q封装,VLAN ID=10
 ip address 10.10.10.254 255.255.255.0
 service-manage enable
 service-manage ping permit   # 允许从该子接口ping通防火墙
  • 重点

    • 子接口是逻辑接口,必须用vlan-type dot1q指明对应哪个VLAN。

    • service-manage是防火墙特有功能,默认关闭。如果不开启ping permit,你在服务器上ping网关会不通(这是初学者最容易踩的坑)。

    • 子接口IP就是该VLAN内服务器的默认网关

4. 加入安全区域

firewall zone dmz
 add interface Eth-Trunk10.10
 add interface Eth-Trunk10.20
  • 含义:这两个子接口都属于DMZ区域。同一个区域内的接口之间默认放行(取决于安全策略,但同区域通常信任)。如果想让VLAN10和VLAN20互访,不需要额外策略;如果隔离,则需配包过滤。

5. 查看状态(Down的原因)

display trunkmembership eth-trunk 10
Operate status: down
Number Of Up Ports in Trunk = 0
  • 为什么Down? 因为交换机侧还没配Port-channel,LACP协商不成功。等交换机配完并连线正确,状态会变为UP。


四、思科交换机配置详解(重点与差异点)

1. 创建VLAN和Port-channel

interface Port-channel 10
 switchport trunk encapsulation dot1q   # 思科默认trunk封装
 switchport mode trunk
  • 注意:思科交换机上,Port-channel本身也要配trunk模式,否则物理口trunk无效。

**************************************************************************************************************

Port-channel 是什么?

  • Port-channel 是思科对链路聚合的逻辑接口名称,等同于华为的 Eth-Trunk

  • 作用:将多个物理口(如 Ethernet0/2、E0/3)捆绑成一个逻辑口,提高带宽和冗余。

  • 一旦创建 Port-channel,物理口上的二层配置(如 trunk、access)都应该在 Port-channel 接口下统一配置,物理口只需加入 channel-group 并保持一致的配置即可。

封装类型 说明 现状
ISL(Inter-Switch Link) 思科私有协议,在原始帧外加一个头部 老旧设备使用
dot1q(802.1Q) 国际标准,在帧中插入 4 字节 VLAN 标签 现在绝大多数网络使用

华为对比:华为是在 Eth-Trunk 接口下直接配置子接口或 VLAN,而思科习惯在 Port-channel 下直接配置二层属性(如 trunk 或 access)。

switchport mode trunk 的作用

  • 将接口(这里是 Port-channel10)设置为 Trunk 模式

  • Trunk 模式允许接口通过多个 VLAN 的流量(每个帧带 VLAN 标签)。

  • 对比 Access 模式:Access 口只属于一个 VLAN,且帧不带标签。

为什么必须在 Port-channel 下配置 trunk?
因为物理口(E0/2, E0/3)加入 Port-channel 后,它们的二层属性由 Port-channel 接口统一决定。如果你只在物理口下配 trunk,而不在 Port-channel 下配,逻辑聚合口依然不知道自己是 trunk,可能导致 VLAN 不通。

华为对比:华为不需要在 Eth-Trunk 下直接配 trunk 模式,而是通过创建子接口(Eth-Trunk.10)并指定 vlan-type dot1q 10 来实现 Trunk 的功能。思路略有不同:

  • 华为:聚合口本身不配置二层模式,而是依赖子接口做 VLAN 终结。

  • 思科:聚合口直接配置为 Trunk,然后通过允许 VLAN 列表(switchport trunk allowed vlan)来控制哪些 VLAN 通过。

**************************************************************************************************************

关于Eth-Trunk的一些问题

“配置 trunk 口不放行 vlan 怎么能通?”

关键事实:在思科交换机上,当你把 Port-channel 配置为 switchport mode trunk 后,默认情况下它会允许所有 VLAN(1-4094)通过
所以并不是“不放行”,而是隐式放行了所有 VLAN
除非你手动敲了 switchport trunk allowed vlan 来限制,否则就是全放行。

因此,实验中交换机的 trunk 口是放行 VLAN 10 和 20 的(因为默认全允许)。
老师没写 allowed vlan 是因为这不是实验重点,默认行为已经满足需求。


为什么防火墙侧不配置 trunk 模式,也不配 port trunk allow-pass

1. 华为防火墙的 Eth-Trunk 接口本质是 二层接口 还是 三层接口?

在华为 USG 防火墙上,物理接口(包括 Eth-Trunk)默认是 三层模式(可以配 IP)。
如果你直接给 Eth-Trunk 配 IP,那它就像一个路由口,不能处理带 VLAN tag 的帧

要让防火墙处理带 tag 的帧,必须创建 子接口,并在子接口上指定 vlan-type dot1q 10
这个命令的作用:

  • 告诉防火墙:这个子接口只接收 VLAN ID=10 的 tagged 帧

  • 收到 tagged 帧后,剥掉 tag,交给三层处理。

  • 发送时,给帧打上 VLAN 10 的 tag,再发出去。

因此,防火墙侧根本不需要一个“trunk 模式”的概念。

子接口的 vlan-type 就同时起到了“放行该 VLAN”和“处理该 VLAN”的作用。

如果你想放行 VLAN 10 和 20,就创建两个子接口;不想放行 VLAN 30,就不创建对应的子接口。

这比传统的 trunk + allowed vlan 更安全、更直观(默认拒绝所有 VLAN,只开放显式创建的子接口)。

2. 那 Eth-Trunk 本身在干什么?

Eth-Trunk 仅仅负责:

  • 将 G1/0/2 和 G1/0/3 两个物理口捆绑,提供链路聚合、负载分担、冗余。

  • 它像一个 管道,上面跑的是带 VLAN tag 的帧(因为子接口会打 tag)。

  • 它不关心 tag 是什么,也不检查 VLAN ID。
    所有 tag 都被原封不动地传给子接口去处理。

类比
Eth-Trunk = 一根多车道隧道
子接口 = 隧道里的收费站,每个收费站只放行一种颜色的车(VLAN tag)
隧道本身不需要设置“允许红色车、蓝色车”,因为收费站会处理。


对比你熟悉的场景:交换机之间做 Eth-Trunk + trunk

你说的一般场景:

交换机A -- Eth-Trunk -- 交换机B
双方都要:
interface Eth-Trunk1
 port link-type trunk
 port trunk allow-pass vlan 10 20

为什么交换机之间必须这样配置?

因为交换机的 Eth-Trunk 是二层交换接口,它的作用就是转发二层帧。
你需要告诉交换机:

  • 这个接口是 trunk 模式(处理 tagged 帧)

  • 允许哪些 VLAN 通过(allow-pass

如果不配置 allow-pass,默认允许所有 VLAN(华为交换机默认也是允许所有)。
但为了安全和减少广播,通常都会显式指定。

关键区别

  • 交换机的 Eth-Trunk 本身参与 VLAN 转发决策(基于 MAC 地址表)。

  • 防火墙的 Eth-Trunk 只是一个物理管道,不参与 VLAN 转发,转发决策在子接口(三层)完成。


**************************************************************************************************************

2. 服务器接口(Access模式)

interface Ethernet0/0
 switchport access vlan 10
 switchport mode access
  • 这里服务器接口是Access口,不是Trunk。服务器网卡一般不需要打VLAN标签(除非特殊配置)。

3. 将物理口加入Port-channel(LACP被动模式)

interface Ethernet0/2
 switchport trunk encapsulation dot1q
 switchport mode trunk
 channel-protocol lacp
 channel-group 10 mode passive   # 被动协商,等待防火墙主动
  • 难点:思科passive + 华为lacp-static = 可成功协商。如果两边都active或都passive会有问题。

  • 验证命令show etherchannel 10 summary 看到Po10(SU)表示成功(S=Layer2,U=Up)。


关于Eth-Trunk与子接口实验的一些思考


1.3 三层接口


2.1 华为防火墙OSPF报文交互与安全策略影响

一、OSPF邻居建立过程回顾(聚焦Exstart状态)

OSPF邻居从 Down → Init → 2-Way → Exstart → Exchange → Loading → Full。其中 Exstart 状态是主从关系协商DD报文交换的起点

在Exstart状态下,邻居双方通过发送空的DD报文(Database Description,数据库描述报文)来选举主从(基于Router ID大小),并确定初始序列号。只有DD报文能够正常收发,才能进入后续的Exchange状态

二、DD报文的本质与传输方式

  • DD报文:OSPF用于描述LSDB(链路状态数据库)摘要的报文,包含LSA头部信息。

  • 在广播型网络(如以太网)中

    • 邻居发现使用组播(224.0.0.5 或 224.0.0.6)。

    • DD报文、LSR、LSU、LSAck在邻居建立后,使用单播发送(直接发往邻居的IP地址)。

  • 关键点:DD报文是单播IP报文,协议号89(OSPF)。

三、防火墙安全策略对OSPF流量的影响

华为防火墙默认启用基于安全区域的包过滤。任何跨区域的流量(包括单播OSPF报文)都必须经过安全策略检查:

  • 如果未配置允许OSPF的策略,单播的DD报文会被防火墙丢弃

  • 组播OSPF报文(Hello等)通常由防火墙的组播转发本地发起的组播处理,可能不受相同策略限制,但单播报文必须显式放行。


一、核心知识点

华为防火墙默认会拦截OSPF的单播报文(如DD报文),导致邻居卡在Exstart状态。
不同产品默认行为不同:虚拟USG默认放行(不拦截),AI防火墙6000系列默认拦截。
控制命令:firewall packet-filter basic-protocol enable

二、实操时你需要重点关注什么?

  1. 看到OSPF邻居卡在 Exstart 状态 → 立即怀疑是防火墙安全策略拦截了DD报文。

  2. 检查基础协议过滤是否开启

display firewall packet-filter basic-protocol
  • 如果显示 enabled → 需要配置安全策略放行OSPF。

  • 如果显示 disabled 或没有该命令 → 默认放行,无需额外配置

   3. 如何放行OSPF(针对AI防火墙6000)

security-policy
 rule name permit_ospf
  source-zone trust      (你的实际区域)
  destination-zone untrust
  service ospf           (华为内置服务,对应协议89)
  action permit

 4. 如果不想配置安全策略(仅限实验环境):

undo firewall packet-filter basic-protocol enable

但生产环境不推荐,会降低安全性。

三、考试/面试最可能问什么?

故障现象 OSPF邻居状态停留在 Exstart
根本原因 防火墙安全策略拦截了单播DD报文(协议89)
受影响设备 AI防火墙6000系列(默认拦截);虚拟USG默认不拦截
控制命令 firewall packet-filter basic-protocol enable(开启拦截)
解决方案(推荐) 安全策略中放行 service ospf
解决方案(应急) undo firewall packet-filter basic-protocol enable
验证命令 display ospf peerdisplay firewall packet-filter basic-protocol

组播的知识点



2.3 逐包和逐流

一、为什么需要逐包/逐流?—— 等价路由(ECMP)的负载分担

当网络中存在多条等价路由(目的网段相同、优先级相同、开销相同)时,防火墙/路由器可以把流量分散到多条链路上,避免一条链路拥塞、其他链路空闲。这种机制称为负载分担

负载分担主要有两种模式:逐包(Per-Packet) 和 逐流(Per-Flow)。不同厂商默认模式不同,且各有适用场景。


二、逐包(Per-Packet)负载分担

1. 工作原理

防火墙收到一个数据包,选择第一条等价路由发送;
下一个数据包,选择第二条等价路由发送;
再下一个,选择第三条……轮流交替,与数据包的源/目IP、端口无关。

比喻:发牌员把一叠牌轮流发给三个玩家,不管牌面是什么,按顺序轮流发。

2. 特点

  • 每条链路的利用率非常均衡,几乎达到理想负载分担。

  • 可能导致乱序:同一个TCP连接的多个包可能走不同路径,由于网络延迟差异,后发的包可能先到达,造成TCP乱序。TCP协议能容忍一定乱序(通过重排),但严重乱序会触发快速重传或性能下降。

  • 对防火墙性能要求较高:需要为每个包独立查路由并决策出口。

3. 典型默认设备

  • 华三(H3C)防火墙默认采用逐包模式(命令 ip forwarding per-flow 实际上是逐包,注意命名可能反直觉)。

  • 部分路由器(如Linux默认也是逐包,但可通过配置修改)。


三、逐流(Per-Flow)负载分担

1. 工作原理

防火墙根据五元组(源IP、目的IP、源端口、目的端口、协议) 或其他哈希因子,计算出一个哈希值,然后用该哈希值对等价路由条数取模,决定走哪条链路。
同一个流(相同五元组)的所有数据包,始终走同一条路径,直到流结束或路由变化。

比喻:按身份证号(哈希)分配窗口,同一个人永远去同一个窗口办理业务。

2. 特点

  • 保证同一流的报文顺序,不会乱序,对TCP、UDP等传输层协议友好。

  • 负载均衡效果取决于流的数量:如果只有几个大流(例如几个大文件下载),可能全部哈希到同一条链路,导致负载不均。流越多,负载越趋均匀。

  • 对防火墙性能影响较小:只需第一个包计算哈希并建立会话,后续包直接根据会话表转发,出口固定。

3. 典型默认设备

  • 华为(Huawei)防火墙默认采用逐流模式(命令 load-balance flow 或 ip load-balance flow)。

  • Cisco、Juniper 等也普遍默认逐流。


四、逐包 vs 逐流 —— 对比表

维度 逐包 逐流
分配粒度 每个数据包独立选择 整个流(会话)选择同一条路径
负载均衡效果 极佳,几乎完美均衡 依赖于流的数量,大流可能不均
报文顺序 可能乱序 严格保序
适用协议 对乱序不敏感的应用(如UDP大流量) 对顺序敏感的应用(TCP、VoIP、视频)
防火墙性能 较高(每个包决策) 较低(首包决策,后续会话匹配)
典型厂商 H3C(默认)、Linux(可配) Huawei(默认)、Cisco、Juniper

五、深入理解:为什么厂商选择不同?

  • 华为主打企业网络:大部分企业流量是TCP(Web、文件、邮件),乱序会严重影响性能,因此默认逐流保证顺序。

  • 华三在某些场景(如运营商、数据中心):可能存在海量短连接,逐包能更好利用链路带宽;且现代CPU处理乱序能力增强,逐包收益更大。

  • 考试陷阱:注意“华三防火墙默认逐包”与“华为防火墙默认逐流”是常考点。尤其华三的命令 ip forwarding per-flow 名字里有“per-flow”但实际是逐包,容易混淆。


六、实际工作中的关键知识点(考试/面试常问)

1. 如何查看和修改负载分担模式?

华为防火墙

# 查看当前模式
display load-balance mode
# 修改为逐包(一般不建议,除非明确需要)
load-balance per-packet   # 注意:部分版本命令不同

华三防火墙

# 查看当前模式
display ip forwarding per-flow
# 修改为逐流
undo ip forwarding per-flow   # 默认即逐包,undo后变为逐流?需查具体版本

为什么海量短连接下逐包更好?

  1. 逐流的哈希冲突:大量短连接(尤其是访问同一热门服务器)可能映射到同一条链路,导致该链路拥塞,其他链路空闲 → 总带宽利用率低。

  2. 逐包的轮询机制:每个包独立轮转,不依赖流数量,能完美打散到所有链路 → 带宽利用率接近100%。

  3. 短连接乱序代价极低:每个连接只传几个包,接收端重排开销可忽略;现代CPU和TCP SACK机制能高效处理乱序。


为什么运营商/数据中心是海量短连接呢

三、与“长连接”场景的对比

特征 运营商骨干网(海量短连接) 数据中心东西向(海量短连接) 企业网/长连接场景
典型业务 网页浏览、视频切片、IoT上报 微服务RPC调用 文件下载、视频流、数据库复制
连接时长 几毫秒到几秒 几毫秒到几百毫秒 几分钟到几小时
每连接数据量 几KB到几MB 几KB到几十KB 几百MB到几GB
并发连接数 数百万到数十亿 数十万到数百万 几千到几万
对乱序容忍度 高(少量包,重排开销小) 高(同理) 低(乱序影响吞吐)
负载均衡目标 绝对均衡,避免拥塞丢包 低延迟,避免哈希冲突 保序为主,均衡次要

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐