跳到正文
Lutong's Homepage

华为H3C实战 | 第6章 三层接口与网关

📚 本系列共 43 篇(第 6 / 43 篇) · 第一卷 基础篇 —— 交换机的骨架

← 上一篇:第 5 章 链路聚合与堆叠  下一篇:第 7 章 VRRP 网关冗余 →


本章导读:VLAN 把大广播域切成小块,切完新问题来了:财务的电脑怎么访问研发的服务器?三层接口就是那部"跨楼层电梯"。本章讲清四种三层接口形态,以及为什么"网关 ping 得通、下面电脑却上不了网"。

本章结构:

  • 6.1 功能原理与业务场景 —— “网关"的三种身份、四种三层接口形态对比、单臂路由与 VLANIF 的取舍
  • 6.2 华为设备配置详解 —— interface Vlanif 10 的 up/down 取决于 VLAN 内有没有 up 成员口、三层物理口切完要 undo shutdown、子接口漏了 arp broadcast enable 的症状、ARP 表与代理 ARP
  • 6.3 H3C 设备配置详解 —— interface Vlan-interface 10、port link-mode route、arp timer aging、proxy-arp enable(词序和华为正好相反)
  • 6.4 命令对照表 —— Vlanif/Vlan-interface、dot1q termination vid vs vlan-type dot1q vid
  • 6.5 配置验证 —— display ip interface brief、display arp 表项四要素怎么看
  • 6.6 排错与故障树 —— 本章最好用的一节:五问法(IP 在哪个口→VLAN 有活口吗→直连路由在吗→ARP 学到吗→终端网关指对了吗)
  • 6.7 新手踩坑 —— 没建 VLAN 就建 VLANIF、子接口漏 ARP 广播
  • 6.8 本章小结 —— 要点清单 + 自测题

重点提示:网关 ping 不通,先查 VLAN 里有没有 up 的成员口(VLANIF 会跟着 down)——这是 6.6 五问法的第 2 问,命中率最高。跨网段不通而网关本身正常,跳到第 3、4 问查路由和 ARP,别在终端上折腾。 关联章节:前置的 VLAN 划分见第 3 章;两台设备同时做网关、避免单点故障见第 7 章;VLAN 间互访的访问控制见第 17 章;三层路由怎么走见第 10 章。

6.1 功能原理与业务场景

6.1.1 这功能是干嘛的(通俗版)

第 3 章说过,VLAN 把一个大广播域切成了几个独立的小广播域,好处是限制故障半径、提升安全性。但切完之后新问题来了:财务部的电脑要给研发部的服务器传文件,怎么传?

三层接口就是解决这个问题的「跨楼层电梯」。二层交换只能在同一个 VLAN 内按 MAC 地址转发,相当于只能在同一层楼里走动;要跨 VLAN、跨网段,就必须上升到三层(网络层),用 IP 地址做路由决策。而交换机上的三层接口,就是「二层世界通往三层世界的入口」。

日常生活里最贴近的比喻是小区门禁与快递柜:同一栋楼的邻居互相串门(同 VLAN 二层互通)不用经过任何人;但一个快递从 A 栋送到 B 栋,就必须经过小区的快递柜中转——快递柜就是网关,它知道每个包裹该放到哪个楼的柜子。三层接口就是交换机上的那个快递柜。

对初学者来说,最容易混淆的是「网关」这个概念的三个身份:它既是终端配置里的「默认网关地址」,又是设备上的「一个三层接口的 IP」,还是「跨网段流量的第一跳」。这三者是同一件事的三个视角。

6.1.2 在网络里怎么落地(设计视角)

三层接口有四种常见形态,它们的目的都是「让一个 VLAN 或一段链路获得三层能力」:

形态一:VLANIF(SVI)。这是三层交换机最核心的接口形态。为每个 VLAN 建一个虚拟的三层接口 Vlanif 10,配上网关地址。VLAN 内所有终端把网关指向这个地址,交换机内部用硬件完成 VLAN 间的路由。它的特殊之处在于:VLANIF 的状态由 VLAN 内成员口的状态决定——如果这个 VLAN 里没有任何一个成员口是 up 的,VLANIF 就会 down,网关地址就不生效。这是本章最重要的一个知识点。

形态二:三层物理口。把某个物理口切成三层口(路由口),直接配 IP。用在点对点互联上,比如交换机接路由器、两台交换机之间做三层互联。省掉了「建 VLAN」这一步。

形态三:子接口。一个物理口上通过 802.1Q 标签划分出多个逻辑子接口,每个子接口对应一个 VLAN。这就是「单臂路由」的实现方式,第 3 章提过。

形态四:聚合口上的 VLANIF。聚合口承载多个 VLAN,再在这些 VLAN 上建 VLANIF——这是汇聚到核心最常用的形态。

四种形态在数据面上的差别,可以用一张决策图说清:

                    ┌─────────────────────────┐
                    │  这个口接的是什么?       │
                    └───────────┬─────────────┘
                                │
            ┌───────────────────┼───────────────────┐
            │                   │                   │
        接终端(PC/AP)       接交换机/路由器      接路由器(单线多VLAN)
            │                   │                   │
            v                   v                   v
       二层口 + VLAN      三层物理口(路由口)      子接口(单臂路由)
            │                   │                   │
            v                   v                   v
       VLANIF 做网关        直接配 IP 互指        每个子接口一个网关
       (最常用)            (点对点互联)        (小型网/过渡)

再从数据流看一次完整的「跨 VLAN 访问」:

PC1(192.168.10.10/24, 网关 192.168.10.1)
  │ 要访问 192.168.20.20,发现目的不在本网段
  │ → 查 ARP 表,找网关 MAC,没有就发 ARP 请求「谁是 192.168.10.1」
  v
[交换机] VLANIF 10 收到 ARP 请求,回应自己的 MAC
  │
  v
PC1 把包发给「网关 MAC」,IP 头目的地址仍是 192.168.20.20
  │
  v
[交换机] 三层转发引擎:查路由表,192.168.20.0/24 是直连(VLANIF 20)
  │ → 查 ARP 表找 192.168.20.20 的 MAC,没有就发 ARP
  │ → 打上 VLAN 20 的标签,从 VLAN 20 对应的口发出去
  v
PC2 收到包

这个过程中有两个关键点:终端只认网关 MAC,不认目的 MAC(所以网关必须回应 ARP);交换机做 VLAN 间转发不需要终端知道另一侧的 MAC(这是三层转发的本质区别)。

适用版本:华为 VRP V200R019 及以上、H3C Comware V7(R2610 及以上)。undo portswitch 的型号支持差异、arp-proxy 的参数、VLANIF 的缺省行为(部分版本 VLANIF 需要在 VLAN 内有 up 成员口才 up)请以型号手册为准。

6.2 华为设备配置详解

6.2.1 命令行基础速览(本章会用到的那几条)

命令 在哪敲 干什么
interface Vlanif 10 系统视图 创建三层 VLAN 接口
ip address 192.168.10.1 24 Vlanif 视图 配网关地址
undo portswitch 物理口视图 切成三层口(视型号)
arp static IP MAC 系统视图 配静态 ARP
arp expire-time 1200 系统视图 ARP 老化时间(秒)
arp-proxy enable 接口视图 开启 ARP 代理
display ip interface brief 任意视图 看三层接口与 IP
display arp 任意视图 看 ARP 表
display ip routing-table 任意视图 看路由表

6.2.2 完整配置模板

一个三层核心交换机做 VLAN 网关的完整配置:

# 华为三层核心交换机
system-view
sysname CORE-SW1

# 建业务 VLAN
vlan batch 10 20 30 99
vlan 10
 description FINANCE
 quit
vlan 20
 description RND
 quit
vlan 30
 description IOT
 quit
vlan 99
 description MGMT
 quit

# 给每个 VLAN 建 VLANIF 并配网关
interface Vlanif 10
 description GW-FINANCE
 ip address 192.168.10.1 255.255.255.0
 quit

interface Vlanif 20
 description GW-RND
 ip address 192.168.20.1 255.255.255.0
 quit

interface Vlanif 30
 description GW-IOT
 ip address 192.168.30.1 255.255.255.0
 quit

interface Vlanif 99
 description GW-MGMT
 ip address 10.200.99.1 255.255.255.0
 quit

# 上联路由器的三层物理口
interface GigabitEthernet0/0/23
 description TO-ROUTER-GE0/0/0
 undo portswitch
 ip address 172.16.0.2 255.255.255.252
 quit

# 不配静态路由(缺省路由指向路由器,让内网能上外网)
ip route-static 0.0.0.0 0.0.0.0 172.16.0.1

# ARP 老化时间调小(默认 1200 秒,办公网可调到 300 秒加快回收)
arp expire-time 300

# 关键服务器用静态 ARP,避免 ARP 学习延迟与欺骗
arp static 192.168.10.10 00e0-fc12-3456

quit
save

单臂路由(子接口)的配置:

# 华为:在物理口上创建子接口实现单臂路由
interface GigabitEthernet0/0/1
 description TO-SW-TRUNK
 quit

# 子接口 .10,对应 VLAN 10
interface GigabitEthernet0/0/1.10
 dot1q termination vid 10
 ip address 192.168.10.1 255.255.255.0
 # 子接口必须开启 ARP 广播,否则终端 ARP 不通
 arp broadcast enable
 quit

# 子接口 .20,对应 VLAN 20
interface GigabitEthernet0/0/1.20
 dot1q termination vid 20
 ip address 192.168.20.1 255.255.255.0
 arp broadcast enable
 quit

quit
save

6.2.3 逐行讲解

interface Vlanif 10 与 ip address:这是本章最核心的两条命令。VLAN 本身是二层概念(一个广播域),VLANIF 是它的三层人格(一个可配 IP 的虚拟接口)。创建 VLANIF 时必须对应一个已存在的 VLAN,如果 VLAN 10 不存在,创建 VLANIF 10 时会自动创建 VLAN 10(不同版本行为可能不同,稳妥做法是先建 VLAN)。

命令 作用 新手常错
interface Vlanif 10 建三层接口 VLAN 没建/没成员口 up 时接口 down
ip address 192.168.10.1 24 配网关 掩码写成 24 或 255.255.255.0 都可以,但不能写成 /24(带斜杠会被当成非法参数)
undo portswitch 切三层口 型号不支持;切完接口自动 shutdown 需重开
ip route-static 0.0.0.0 0.0.0.0 X 默认路由 下一跳写成对端口地址本身
arp expire-time 300 ARP 老化 单位是秒,设太短会频繁 ARP
arp static IP MAC 静态 ARP 缺 vlan 参数时部分版本不生效,按提示补
dot1q termination vid 10 子接口终结 VLAN 10 漏了 arp broadcast enable,ARP 不通
arp broadcast enable 子接口发 ARP 广播 子接口必备,最容易被漏

这里要重点讲 VLANIF 状态异常,因为这是实际工作中最高频的「配了网关但不生效」的原因。

VLANIF 的状态(up/down)由以下规则决定:

  1. VLAN 必须存在(否则 VLANIF 无法创建或保持 down)。
  2. VLAN 内至少有一个成员口是 up 的(access 口、trunk 口都可以,但必须是物理 up + 协议 up)。
  3. VLANIF 本身没被 shutdown(display interface Vlanif 10 会显示 Administratively Down)。

这三条里第 2 条最容易被忽略。典型场景:你在一台核心上配了 Vlanif 30(给 IoT 设备用的),但 IoT 的接入交换机还没上电,VLAN 30 里没有任何 up 的口 → Vlanif 30 是 down 的 → 网关不生效 → 即使后来接入了设备,也可能因为 ARP 表需要重新学习而短暂不通。这个现象让很多人以为是「网关配错了」,实际上是「VLAN 里没活口」。

解决办法有两个:

办法一:在 VLAN 里有意识地留一个「常驻 up 的成员口」,比如把上联 trunk 口划进这个 VLAN(这在树形网络里天然成立)。 办法二:部分型号支持通过 vlan 的特定配置或全局命令调整 VLANIF 的 up/down 判定条件,让 VLANIF 不受成员口状态影响——但这类特性各型号支持情况不一,主流做法仍然是确保 VLAN 内有 up 的口。不区分成员口状态、始终生效的需求,在工程上一般改用独立的带外管理口或三层物理口来满足。

# 排查 VLANIF 状态
<HUAWEI> display interface Vlanif 10
# 关注这三行:
#   Vlanif10 current state : UP / DOWN
#   Line protocol current state : UP / DOWN
#   ip address ...

这里 current state : DOWN 和 Line protocol current state : DOWN 同时出现,几乎一定是「VLAN 内没有 up 的成员口」。

关于三层物理口:undo portswitch 把二层口变成三层口后,接口上之前配的 VLAN 属性(port link-type、port default vlan)全部失效,需要重新配 IP。切换后接口可能自动 shutdown,记得 undo shutdown。

关于子接口:单臂路由的实现细节里有两个坑。第一,dot1q termination vid 10 这条命令告诉子接口「处理 VLAN 10 的标签」,收到带 VLAN 10 标签的帧就终结掉标签交给三层处理。第二,arp broadcast enable 让子接口能发 ARP 广播——这一条最容易漏,漏了之后现象是「终端能 ping 通网关但访问不了其他网段」(因为网关回 ARP 应答失败或 ARP 学习不全)。子接口还有个隐藏限制:物理口必须是二层口,且对端交换机必须用 trunk 放行对应的 VLAN。

关于 ARP:ARP 表是三层转发的地图。display arp 输出里的每个表项包含 IP、MAC、VLAN、接口、类型(动态/静态)。几个关键点:

  • 动态 ARP:靠 ARP 请求/应答学习,华为缺省老化 1200 秒(即 20 分钟)、H3C 缺省 20 分钟,到期后重新学习。
  • 静态 ARP:手工绑定 IP 与 MAC,永不老化,用于服务器、路由器和防欺骗。
  • ARP 代理(arp-proxy):让一台设备替别的网段回应 ARP,实现「跨越不同网段的二层感觉」。配置在接口上,开启后该接口会对不属于自己网段的 ARP 请求做出「自己的 MAC」的应答。典型用途是把 VLAN 的网关分布到不同设备、或者打通某些特殊的隔离需求。

两家命令名不同,别抄错:华为是 arp-proxy enable(配在 VLANIF 等三层接口视图下),H3C 是 proxy-arp enable(词序相反,也配在三层接口视图下,缺省关闭)。H3C 另外还有 local-proxy-arp enable 用于「主机接在同一三层接口、但不在同一广播域」的本地代理场景。华为侧做 VLAN 聚合(Super-VLAN)时还有 arp-proxy inter-sub-vlan-proxy enable 这类子 VLAN 代理变体。

6.3 H3C 设备配置详解

6.3.1 命令行基础速览

命令 在哪敲 干什么
interface Vlan-interface 10 系统视图 创建三层 VLAN 接口(注意有连字符)
ip address 192.168.10.1 24 Vlan 接口视图 配网关
port link-mode route 物理口视图 切三层口(全系支持)
arp static IP MAC 系统视图 静态 ARP
arp timer aging 300 系统视图 ARP 老化时间
proxy-arp enable 接口视图 开启代理 ARP
interface GigabitEthernet1/0/1.10 系统视图 创建子接口
vlan-type dot1q vid 10 子接口视图 子接口终结 VLAN
display ip interface brief 任意视图 三层接口一览
display arp 任意视图 ARP 表

6.3.2 完整配置模板

同样的三层网关组网,H3C 侧的完整配置如下:

# H3C 三层核心交换机
system-view
sysname CORE-SW1

vlan 10
 name FINANCE
quit
vlan 20
 name RND
quit
vlan 30
 name IOT
quit
vlan 99
 name MGMT
quit

# VLAN 三层接口(注意 Vlan-interface 带连字符)
interface Vlan-interface 10
 description GW-FINANCE
 ip address 192.168.10.1 255.255.255.0
 quit

interface Vlan-interface 20
 description GW-RND
 ip address 192.168.20.1 255.255.255.0
 quit

interface Vlan-interface 30
 description GW-IOT
 ip address 192.168.30.1 255.255.255.0
 quit

interface Vlan-interface 99
 description GW-MGMT
 ip address 10.200.99.1 255.255.255.0
 quit

# 上联路由器的三层物理口(全系支持,无型号限制)
interface GigabitEthernet1/0/23
 description TO-ROUTER-GE0/0/0
 port link-mode route
 ip address 172.16.0.2 255.255.255.252
 undo shutdown
 quit

# 默认路由
ip route-static 0.0.0.0 0 172.16.0.1

# ARP 老化
arp timer aging 300

# 静态 ARP
arp static 192.168.10.10 00e0-fc12-3456

quit
save force

单臂路由:

# H3C:子接口方式
interface GigabitEthernet1/0/1.10
 description SUB-VLAN10
 vlan-type dot1q vid 10
 ip address 192.168.10.1 255.255.255.0
 quit

interface GigabitEthernet1/0/1.20
 description SUB-VLAN20
 vlan-type dot1q vid 20
 ip address 192.168.20.1 255.255.255.0
 quit

6.3.3 逐行讲解

H3C 命令 对应华为 差异要点
interface Vlan-interface 10 interface Vlanif 10 名字完全不同,H3C 带连字符
ip address 192.168.10.1 255.255.255.0 相同 相同
port link-mode route undo portswitch H3C 全系支持,无型号限制
arp timer aging 300 arp expire-time 300 名字不同
arp static IP MAC arp static IP MAC 相同
proxy-arp enable arp-proxy enable 词序相反
vlan-type dot1q vid 10 dot1q termination vid 10 名称不同
vlan-termination broadcast enable(仅模糊终结时) arp broadcast enable(必配) H3C 精确终结不用配;华为侧无论哪种都要配。触发条件不同
display ip interface brief 相同 输出格式略有差别

H3C 子接口这边没有 arp broadcast enable 这条命令,但有对应的广播开关,名字叫 vlan-termination broadcast enable,而且只在「模糊 Dot1q 终结」时才需要配:

场景 是否需要额外命令
精确终结(vlan-type dot1q vid 10 指定单个 VID) 不需要,子接口可正常收发广播
模糊终结(vlan-type dot1q vid 11 to 13 这类范围) 必须加 vlan-termination broadcast enable,否则该接口不允许发送广播/组播报文

官方原文的表述是「缺省情况下,当前接口配置了模糊的 Dot1q 终结或者模糊的 QinQ 终结功能后,不允许发送广播报文,只有配置了 VLAN 终结支持广播功能,这些接口才能发送广播报文」。这一条对单臂路由影响很大——如果你的子接口用了范围写法又没开这个开关,终端 ARP 必然失败,现象和华为「漏配 arp broadcast enable」一模一样。

# H3C:模糊 Dot1q 终结时必须显式允许发广播
interface GigabitEthernet1/0/1.10
 vlan-type dot1q vid 11 to 13
 ip address 192.168.10.1 255.255.255.0
 vlan-termination broadcast enable
 quit

⚠ 两家差异一句话总结:华为子接口一律要 arp broadcast enable(终结子接口的 ARP 广播功能);H3C 子接口只有模糊终结才要 vlan-termination broadcast enable。抄配置时别把两家的命令互相搬。

H3C 的 VLAN 接口状态规则同样受 VLAN 内成员口影响,但 H3C 有一个特性叫 VLAN interface 的 up/down 与「VLAN 内是否有 up 的成员口」相关,行为和华为基本一致。排查方法一样:display interface Vlan-interface 10。

关于代理 ARP:H3C 的 proxy-arp enable 配置在三层接口上,行为与华为类似。要注意的是代理 ARP 与端口隔离、VLAN 隔离的组合会产生复杂行为,在启用之前一定要验证过。

关于三层物理口的建链:H3C 用 port link-mode route 切到三层后,接口会自动 shutdown,必须 undo shutdown。这是前面第 2 章已经强调过的点,但在这里再强调一次,因为三层核心的上联口一旦没开,整个网络就断了。

H3C 的 VLAN 接口特性补充

H3C 的 Vlan-interface 还有一个与华为不完全一致的点:H3C 的三层接口可以配置多个 IP 地址(主地址 + 从地址),用于同一接口承载多个网段。命令形式是 ip address <地址> <掩码> sub(从地址)。华为的 VLANIF 同样支持从地址,命令是 ip address <地址> <掩码> sub。两家的语法基本相同:

# 主地址 + 从地址(华为)
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] ip address 192.168.10.1 255.255.255.0
[HUAWEI-Vlanif10] ip address 192.168.110.1 255.255.255.0 sub

H3C 的从地址写法与华为完全一致:

# 主地址 + 从地址(H3C)
[H3C] interface Vlan-interface 10
[H3C-Vlan-interface10] ip address 192.168.10.1 255.255.255.0
[H3C-Vlan-interface10] ip address 192.168.110.1 255.255.255.0 sub

从地址的用途通常是把多个网段挂到同一个 VLAN 上(比如老网段迁移时的过渡方案)。注意:一个 VLAN 对应多个网段会在很多场景下造成 ARP 混乱,一般只在过渡期短时使用。

三层转发与二层转发的本质对比

初学者最容易卡住的认知是「三层交换机不也是交换机吗,为什么能路由?」。要讲清这一点,得对比一下两种转发的决策依据:

对比项 二层转发 三层转发
决策依据 目的 MAC 地址 目的 IP 地址
查什么表 MAC 地址表 路由表 + ARP 表
是否修改报文 不修改(可能加/剥 VLAN 标签) 修改(重写源/目的 MAC、TTL 减 1)
作用范围 同一广播域(VLAN 内) 跨广播域
终端参与 终端需知道对端 MAC 终端只需知道网关 MAC
设备角色 交换机 三层交换机 / 路由器

三层转发时,交换机对报文的改写是关键:它把「源 MAC」改成自己出口接口的 MAC,把「目的 MAC」改成下一跳(或目的主机)的 MAC,IP 头完全不动但 TTL 减 1。所以终端看到的「对端 MAC」永远是网关的 MAC,它根本不知道跨网段的目的主机 MAC——这就是为什么跨网段访问时,终端只需要网关 MAC 就够了。

三层交换机「快」的原因在于:它在硬件(ASIC 芯片)里实现了路由查找与改写,第一次转发走控制面建立缓存,之后同类流量直接走硬件快速转发表。所以三层交换机的转发性能可以做到线速,而传统路由器要靠 CPU 软件转发,性能差好几个数量级。这就是为什么「用三层交换机做 VLAN 间路由」远优于「用路由器做单臂路由」。

VLANIF 与 VRRP 的关系

这是实际项目中必须搞清楚的一点。假设两台三层核心都做 VLAN 10 的网关,你不能在两台上都配 192.168.10.1——那是地址冲突。正确做法是:

  • 核心 A 的 VLANIF 10 配 192.168.10.2,核心 B 的 VLANIF 10 配 192.168.10.3。
  • 两台之间跑 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议),虚拟网关地址 192.168.10.1,A 是 Master、B 是 Backup。
  • 终端网关全部指向 192.168.10.1,正常走 A,A 挂了自动切到 B。
        终端网关 = 192.168.10.1(虚拟地址)
                │
        ┌───────┴───────┐
        │               │
   [CORE-A]         [CORE-B]
  Vlanif10:         Vlanif10:
  192.168.10.2      192.168.10.3
  VRRP Master       VRRP Backup
  (优先级 120)      (优先级 100)
        │               │
        └──── trunk ────┘

这个方案在第 27 章「防火墙 NAT 与路由部署」和第 28 章「防火墙双机热备」里会再次出现,届时会讲 VRRP + HRP 的完整配置。本章你只需要建立一个认知:「网关」是一个逻辑角色,可以由多台设备共同承担,但同一时刻只有一个在应答 ARP。

如果两台核心做了堆叠/IRF(第 5 章),那么它们本来就是一台逻辑设备,只需要在这「一台设备」上配一个 VLANIF 地址就行,不需要 VRRP。这也是堆叠的一个实际价值:省掉网关的 VRRP 配置。

ARP 表的容量与老化

ARP 表是有容量上限的(与型号内存有关,接入型号通常只有几百到几千条,核心型号上万条)。在大规模网络中,ARP 表打满会造成「新终端上不来」,这是真实发生过的故障。

几个与容量相关的参数:

参数 华为 H3C 说明
ARP 表总容量 随型号 随型号 用 display arp statistics 查已用
老化时间 arp expire-time N(秒,缺省 1200) arp timer aging N(分钟,缺省 20) 单位不同:华为秒、H3C 分钟
最大动态 ARP 数 视型号可配 视型号可配 限制防打满
静态 ARP 数量 视型号 视型号 大量静态 ARP 会占用控制面资源

⚠ 注意:华为的 arp expire-time 单位是秒(缺省 1200 秒 = 20 分钟),H3C 的 arp timer aging 单位是分钟(缺省 20 分钟)。两边「20 分钟」其实一样长,但配置时的数字差了 60 倍,这是抄配置时最容易出错的地方。

关于 ARP 老化的工程经验:办公网可以把老化时间调短到 300 秒(华为 arp expire-time 300、H3C arp timer aging 5),好处是终端下线后 ARP 表项快速回收,坏处是 ARP 报文频率上升。服务器网段反而应该保留较长的老化(或直接配静态 ARP),避免频繁 ARP 影响服务器性能。

免费 ARP 与网关切换

「免费 ARP(Gratuitous ARP)」是一个很实用的机制:设备主动发一个「源 IP = 目的 IP = 自己的地址」的 ARP 请求,用来宣告「我这个 IP 现在在这里,MAC 是这个」。它的三个用途:

  1. IP 冲突检测:设备配好 IP 后发免费 ARP,如果收到应答说明有冲突。
  2. 网关切换时刷新终端 ARP 表:VRRP 主备切换后,新的 Master 发免费 ARP 告诉全网「这个虚拟 IP 的 MAC 变了」,终端立刻更新 ARP 表。没有这一步,终端要等老化时间才会切换网关,切换期间业务中断。
  3. MAC 地址表更新:链路切换后,交换机需要刷新转发路径。

⚠ 版本差异:华为与 H3C 都提供周期性发送免费 ARP 的能力(华为 arp send-gratuitous-arp ...,H3C arp send-gratuitous-arp),但命令是否存在、参数怎么写,与型号强相关(部分入门型号不支持),配置前请用 arp ? 逐级确认,不要照抄。

6.4 华为 / H3C 命令对照表

功能 华为(VRP) H3C(Comware V7) 差异说明
创建 VLAN 三层接口 interface Vlanif 10 interface Vlan-interface 10 名称差异,H3C 带连字符
配 IP ip address 10.200.1.1 24 ip address 10.200.1.1 24 相同
从地址 ip address X Y sub ip address X Y sub 相同
物理口转三层 undo portswitch(视型号) port link-mode route(全系) 华为有型号限制
静态 ARP arp static IP MAC arp static IP MAC 相同
ARP 老化 arp expire-time 300 arp timer aging 300 名称不同
代理 ARP arp-proxy enable proxy-arp enable 词序相反;两家缺省都关闭
子接口配置 dot1q termination vid 10 vlan-type dot1q vid 10 关键词不同
子接口 ARP 广播 arp broadcast enable(必须) 缺省支持,无需配置 关键差异
默认路由 ip route-static 0.0.0.0 0.0.0.0 X ip route-static 0.0.0.0 0 X 掩码写法:点分 vs 位数
看三层接口 display ip interface brief display ip interface brief 格式略有差别
看 ARP display arp display arp 格式不同
看路由 display ip routing-table display ip routing-table 格式不同

网关设计的几个工程约定

把散落的知识点收拢成一份「网关设计约定」,这份约定可以直接套到项目里:

约定 具体做法 为什么
网关地址取 .1 或 .254 每个网段固定用同一个主机位做网关 便于记忆与批量配置 DHCP
只在一台设备上存在 每 VLAN 一个网关,跨设备冗余用 VRRP 避免地址冲突与双活混乱
网关与 VLAN 号可对应 VLAN 20 的网关是 192.168.20.1 display arp 时一眼看懂
管理网关独立 管理 VLAN 单独规划(如 VLAN 99) 业务故障不影响管理通道
网关地址写进 IP 规划表 与 VLAN 规划同时维护 新同事接手能少走弯路
网关先于终端部署 VLAN 与 VLANIF 先配好,再下发 DHCP 终端上线即能拿到正确网关

有一条经验特别值得强调:「网关必须先于终端上线」。如果先给终端发了 DHCP 地址、后来才配网关,那么终端在 ARP 超时之前会一直认为网关不存在,表现为「拿到了地址但上不了网」。这种情况只能靠终端重新获取地址或等待 ARP 老化解决,现场排障成本很高。

关于「三层接入」还是「二层接入 + 核心三层」

设计网络时还有一个结构性的选择:把三层网关放在接入交换机上(三层到接入),还是放在核心上(二层到接入)?

二层到接入(网关在核心):接入交换机全部是二层设备,VLAN 三层终止在核心。优点是接入层简单、便宜、好管;缺点是 VLAN 要穿越整个接入-汇聚链路,STP 域大,广播域大;而且核心要承担所有 VLAN 的网关与路由。

三层到接入(网关在接入):接入交换机是三层的,每个接入交换机自己就是它下面 VLAN 的网关。优点是把广播域和 STP 域限制在单台接入交换机内,故障半径极小,核心只做汇聚路由;缺点是对接入交换机的要求高(要三层、要跑路由协议)、管理更分散。

中小型园区网多用「二层到接入」,大型园区网、数据中心、运营商网络多用「三层到接入」。这个选择在校园网案例(第 37 章)里会再次讨论。你只需要记住判断依据:当接入交换机的数量很大、VLAN 很杂、STP 域扩展到几十台设备时,就该考虑把网关下沉到接入层。

6.5 配置验证

第一步:确认三层接口状态。

<HUAWEI> display ip interface brief

正常输出:

Interface          IP Address/Mask      Physical   Protocol  VPN Instance
Vlanif10           192.168.10.1/24      up         up
Vlanif20           192.168.20.1/24      up         up
Vlanif30           192.168.30.1/24      down       down
Vlanif99           10.200.99.1/24       up         up
MEth0/0/1          unassigned           down       down

关键看图:Physical 与 Protocol 都是 up 才说明接口可用;down 需要回到 6.1.2 讲的三条规则逐条查(VLAN 存在?有 up 成员口?没被 shutdown?)。这张表还顺便列出了所有三层接口的 IP——没有 IP 的接口显示 unassigned。

第二步:确认直连路由自动生成。

<HUAWEI> display ip routing-table

正常输出(关键行):

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface
      192.168.10.0/24  Direct  0    0           D   192.168.10.1    Vlanif10
      192.168.10.1/32  Direct  0    0           D   127.0.0.1       Vlanif10
      192.168.20.0/24  Direct  0    0           D   192.168.20.1    Vlanif20
      192.168.20.1/32  Direct  0    0           D   127.0.0.1       Vlanif20
      0.0.0.0/0        Static  60   0           RD  172.16.0.1      Vlanif... 

只要 VLANIF 是 up 且有 IP,直连路由(Direct)会自动出现在路由表里。看到 Direct 就说明「这个网段的终端能 ping 通网关」。

第三步:确认 ARP 表能学到终端。

<HUAWEI> display arp

正常输出:

IP ADDRESS      MAC ADDRESS    EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE
--------------------------------------------------------------------
192.168.10.1    00e0-fc00-0001            I -         Vlanif10
192.168.10.10   00e0-fc12-3456  20        D-0         Vlanif10
192.168.10.11   00e0-fc12-3457  18        D-0         Vlanif10

TYPE 列的 I 表示接口自身的地址(Interface),D-0 表示动态学习(Dynamic),S 表示静态。EXPIRE(M) 是剩余老化时间(分钟)。如果某个终端在该表里查不到,就是 ARP 没学到,重点查二层是否通(VLAN、端口、STP)。

第四步:实际连通性验证。

# 在网关交换机上 ping 终端
<HUAWEI> ping 192.168.10.10

# 在终端上 ping 网关
C:\> ping 192.168.10.1

# 在终端上 ping 另一个 VLAN 的终端
C:\> ping 192.168.20.20

# 追踪路径,确认确实经过了三层网关
<HUAWEI> tracert 192.168.20.20

第五步:验证 VLANIF 的故障恢复行为。这是很多人没做过的验证——把 VLAN 内最后一个 up 的成员口拔掉,看 VLANIF 会不会 down;再插回去,看是不是自动恢复。理解这个行为,你才能预料到「新 VLAN 首次部署时网关为什么是 down 的」。

H3C 的验证命令:

<H3C> display ip interface brief
<H3C> display ip routing-table
<H3C> display arp

H3C 的 display ip interface brief 输出格式:

*down: administratively down
(s): spoofing  (l): loopback
Interface           Physical Protocol IP address      VPN instance
Vlan-interface10    up       up       192.168.10.1    --
Vlan-interface20    up       up       192.168.20.1    --

第六步:用 traceroute 验证转发路径。这一步能证明「流量确实经过了网关」:

# 在终端上追踪到另一网段终端的路径
C:\> tracert 192.168.20.20

如果第一跳就是网关地址(192.168.10.1),说明终端确实把流量交给了网关;如果第一跳出不来,说明网关 ARP 没通。

第七步:用 mirror 抓包观察 MAC 改写。这是理解三层转发最直观的手段:在网关设备上把两个 VLAN 的接口都镜像到抓包口,抓一次跨 VLAN ping,你会看到:

# 帧1:PC1 -> 网关(目的 MAC = 网关的 MAC)
  src MAC = PC1 的 MAC,   dst MAC = 网关 MAC,   IP: 192.168.10.10 -> 192.168.20.20
# 帧2:网关 -> PC2(源 MAC 改成网关的,目的 MAC = PC2 的)
  src MAC = 网关 MAC,     dst MAC = PC2 的 MAC, IP: 192.168.10.10 -> 192.168.20.20

两个帧的 MAC 头完全不同、IP 头完全一样——这就是「三层转发改写 MAC 头」的铁证。看一次抓包,比读十段文字有用。

6.6 排错与故障树

网关排错有一个通用的「五问法」,比一张症状表更好用:

顺序 问什么 用什么查 判断
1 我的 IP 配在哪个接口上? display ip interface brief 接口是 up/up 且 IP 正确
2 这个接口对应的 VLAN 有活口吗? display vlan N VLAN 内有 U 状态的成员口
3 这个网段的路由存在吗? display ip routing-table 有 Direct 条目
4 对端 IP 的 ARP 学到了吗? display arp 有对应的动态表项
5 终端侧的网关指对了吗? 终端 ipconfig 网关 = 交换机接口地址

下面这张症状表是本节的展开版,五问法走不通时再用它:

症状 可能原因 排查命令 定位方法
网关 ping 不通 VLANIF down display ip interface brief 查 VLAN 内是否有 up 成员口
网关 ping 通但跨网段不通 无路由 / 终端网关配错 display ip routing-table 看直连路由是否存在
终端能到网关但到不了别 VLAN 缺少直连路由或路由表异常 display ip routing-table 检查两个 VLANIF 是否都 up
ARP 表学不到终端 二层不通(VLAN/端口/STP) display arp、display vlan 回到第 3 章排查路径
ARP 表项频繁变 MAC ARP 欺骗 / 双 IP display arp、查日志 交换机报 ARP 冲突告警
单臂路由子接口不通 漏 arp broadcast enable(华为) display current-configuration interface GE0/0/1.10 补上该命令
三层口 ping 不通 undo portswitch 后没 undo shutdown display interface 重开接口
三层口 IP 冲突 两个接口配了同网段 display ip interface brief 改地址
VLANIF 能 ping 通自己但终端 ping 不通 VLAN 内成员口不在同一 STP 转发状态 display stp brief 检查 STP 是否阻塞
上不了外网 默认路由缺失/下一跳不可达 display ip routing-table、ping 下一跳 补路由或查上联
终端偶发断网几秒 ARP 表被打满 / 老化被频繁刷新 display arp statistics 查表容量与 ARP 攻击
换网关设备后全网中断 新网关的 MAC 与旧的不同、终端 ARP 未刷新 display arp 发免费 ARP 或等老化
两台设备的网关都配了 地址冲突 两端 display arp 看冲突告警 改一台为 VRRP Backup

其中「换网关设备后全网中断」这一条值得单说。它的原理是:终端 ARP 表里缓存着「网关 IP → 旧网关 MAC」。当你把网关从 A 设备迁移到 B 设备(B 的接口 MAC 不同),终端仍然按旧的 MAC 发包,包被发到旧的路径上,自然不通。等 ARP 老化(最多 20 分钟)后终端重新 ARP 才能恢复。**避免办法:迁移前在新网关上主动发免费 ARP,或者把终端 DHCP 租期调短、强制重新获取地址。**这种「看起来像网络断了、其实只是 ARP 没刷新」的故障,在现场经常被误判为重装交换机。

故障树(「跨 VLAN 不通」):

跨 VLAN 不通
 |
 +-- 两个 VLANIF 都 up 吗?
 |     +-- 有 down 的 -> VLAN 内无 up 成员口 -> 检查接入/上联
 |
 +-- 路由表里有两条直连路由吗?
 |     +-- 缺了 -> VLANIF IP 没配或接口 down
 |
 +-- 终端网关配了吗?
 |     +-- 没配/配错 -> 改终端
 |
 +-- ARP 能学到对端吗?
 |     +-- 学不到 -> 二层问题(第 3 章)
 |
 +-- ping 网关通但 ping 对端 VLAN 的终端不通
       +-- 对端终端防火墙开了 -> 查终端侧
       +-- ACL 挡了 -> 第 17 章

6.7 新手踩坑与注意事项

  1. 把 VLAN 当网关配了 IP——症状:vlan 10 里敲 ip address 报错;怎么避:IP 配在 Vlanif 10 上,不是 vlan 10。
  2. VLANIF down 以为是配置错——症状:网关地址「配了但不生效」;怎么避:VLAN 里必须有 up 的成员口,display ip interface brief 一看便知。
  3. 两台交换机都配同一个 VLAN 的网关——症状:网关地址冲突、双活行为混乱;怎么避:VLANIF 地址全网唯一,做冗余用 VRRP 而不是配两个同地址(VRRP 见第 28 章)。
  4. 华为子接口漏 arp broadcast enable——症状:能 ping 网关但不通其他网段;怎么避:华为子接口必配。
  5. H3C 子接口照抄华为配置——症状:多敲一条报错;怎么避:H3C 无该命令,缺省就支持。
  6. 三层口切完没开——症状:三层上联全断;怎么避:undo portswitch/port link-mode route 后立刻 undo shutdown。
  7. 把 VLAN 1 用作管理网网关——症状:VLAN 1 泛洪影响管理通道;怎么避:管理 VLAN 独立(如 VLAN 99)。
  8. 静态 ARP 写错 MAC 格式——症状:静态 ARP 不生效或报错;怎么避:华为/H3C 都用 00e0-fc12-3456 的 H-H-H 格式,注意不能换成冒号分隔。
  9. 网关配成 /32 掩码——症状:终端只能到网关,不能到同 VLAN 其他终端;怎么避:掩码必须与网段规划一致。
  10. 忘记配默认路由——症状:内网互通但上不了外网;怎么避:核心上网关设备必须有默认路由。
  11. 在多台三层交换机上乱配 VLANIF——症状:路由表出现重复直连、转发黑洞;怎么避:每个 VLAN 只在一台设备上有网关,冗余用 VRRP/堆叠。
  12. 网关迁移后不刷 ARP——症状:换了网关设备后全网断十几分钟;怎么避:新网关主动发免费 ARP,或提前把 DHCP 租期调短。
  13. ARP 老化单位记错——症状:按 H3C 的单位去配华为设备,老化时间差了 60 倍;怎么避:华为 arp expire-time 用秒、H3C arp timer aging 用分钟。
  14. 子接口物理口是三层口——症状:子接口配不上或不通;怎么避:单臂路由的物理口必须是二层口,标签由子接口终结,不要提前 undo portswitch。

6.8 本章小结

  • 三层接口的四种形态:VLANIF(最常用)、三层物理口、子接口(单臂路由)、聚合口上的 VLANIF。
  • VLANIF 的状态由 VLAN 决定:VLAN 存在 + 有 up 成员口 + 接口未 shutdown,三条缺一不可。这是「网关配了但不生效」的头号原因。
  • 直连路由自动生成:VLANIF up 且有 IP,路由表就有 Direct 条目,终端就能 ping 通网关。
  • ARP 是三层转发的地图:动态 ARP 靠学习、静态 ARP 靠绑定、代理 ARP 让跨网段「看起来像一个网段」。
  • 两家差异:Vlanif vs Vlan-interface;undo portswitch vs port link-mode route;华为子接口必须 arp broadcast enable,H3C 不需要;arp-proxy enable vs proxy-arp enable。
  • 验证顺序:三层接口状态 → 直连路由 → ARP 表 → ping 连通性。

自测题

  1. 一台三层交换机配了 Vlanif 30 的地址,但 display ip interface brief 显示 down/down,可能是什么原因?怎么解决?
  2. 华为子接口的 dot1q termination vid 10 后面为什么通常要跟一条 arp broadcast enable?H3C 为什么不需要?
  3. 为什么「网关地址」只应该出现在一台设备上?如果要冗余怎么办?
  4. 某个 VLAN 内有终端,但 display arp 里看不到任何该网段的动态表项,你的排查顺序是什么?
  5. 三层物理口和 VLANIF 各自的适用场景是什么?
  1. 最可能的原因是 VLAN 30 内没有任何 up 的成员口(VLAN 里没有活着的端口),或者 Vlanif 30 被 shutdown 了,或者 VLAN 30 本身不存在。解决方法:确认 VLAN 30 已创建;检查是否有接入该 VLAN 的 up 端口(access 口或 trunk 口放行了 VLAN 30);确认 Vlanif 30 未被 shutdown。也可以用 display vlan 30 确认成员口状态。
  2. 因为华为子接口在缺省状态下不发送 ARP 广播报文:如果不开 arp broadcast enable,子接口可能无法回应对端的 ARP 请求或无法发送 ARP 请求,导致终端能 ping 通网关但不通其他网段(ARP 无法建立)。H3C 的子接口缺省就支持 ARP 广播,因此无需配置该命令。
  3. 因为同一个网段内如果有两个设备配同一个网关地址,就会形成 IP 地址冲突,两个设备都会回应该地址的 ARP,导致流量随机分流到不同设备、行为不可预测(同一个 MAC 对应两个物理位置)。若要冗余,应使用 VRRP 等虚拟路由冗余协议,让两台设备共享一个虚拟 IP 作为网关,同一时刻只有一台真正响应。
  4. 顺序:先 display ip interface brief 确认网关所在的 VLANIF 是否 up;再 display vlan 确认该 VLAN 有 up 的成员口;然后查接入层到局域网的二层连通(display mac-address vlan N)看能否学到终端 MAC;再看是否有端口被 STP 阻塞或端口隔离影响;最后确认终端是否配置了正确的 IP 与掩码、是否真的发出了 ARP。
  5. 三层物理口适合点对点互联:交换机接路由器、两台交换机之间的三层互联,能省去建 VLAN 的步骤、接口关系清晰。VLANIF 适合「一个 VLAN 的一批终端要有一个共同网关」的场景,是二层接入网络的网关标准做法,也便于按 VLAN 隔离与做策略。

关于本书:《华为 / H3C 网络设备典型功能配置详解》—— 面向国内高校/企业网络环境, 华为 VRP 与 H3C Comware 双厂商并排配置的实操教材,共 43 章。 全书所有命令尽量有官方出处,查不到的显式标注「待核实」。 返回系列目录