华为交换机配置基础
华为设置分为4个视图,当出现 <Huawei>
# 在用户视图下切换系统视图
system-view
# 直接回退到用户视图
return 或 Ctrl+Z
# 把光标移到最前面
Ctrl+A
# 返回上一个控制节点
quit
# 查看快捷键
display hotkey
# 可以通过皮 ? 号来查看所有能用的命令
dis?
当出现 [Huawei] 时则是系统视图,可以配置设备的系统参数
1: 监控级
2: 配置级
# 修改命令的等级(已预分配,慎用)
command-privilege level 3 view user save
# 设置时区 ( 设置东8时区 )
timezone CST add 8
# 设置时间,设置之前最好设置时区
clock datetime HH:MM:SS 2026-01-01时间格式
# 查看路由基本信息
display version
# 查看接口状态信息
display interface GigebitEthernet 0/0/0
# 查看全部接口的IP简要信息,包含ip地址
display ip interface brief
# 查看路由表
display ip routing-table
# 查看当前的配置(内存中)
display current-configuration
# 查看当前的配置(Flash中)
display saved-configuration
# 查看Flasg中的文件
dir flash;
# 保存配置
save
# 重启
reboot
# 创建单个VLAN并进入VLAN视图
vlan [id]
vlan 10
# 批量创建连接的VLAN
vlan batch 10 to 20
# 进入指定的接口视图进行配置,
interface [类型] [编号]
interface GigabitEthernet 0/0/1
# 设置接口的链路类型,access 用于连接终端设备,trunk 用于交换机之间或连接路由器
[在interface视图] port link-type access | trunk
# 将access接口加入到指定VLAN
port default vlan [id]
port default vlan 10
# 配置trunk接口允许通过哪些VLAN的流量
port trunk allow-pass vlan [id] | all
port trunk allow-pass vlan all # 指定的trunk口允许所有vlan流量
# 设置trunk接口的默认VLAN PVID,用于处理未打标签的帧,下面有说明
port trunk pvid vlan [id]
# 激活接口。接口默论是开启的,如果关闭了可用此命令开启
undo shutdown
[interface GigabitEthernet 0/0/1] undo shutdown
PVID 也叫Port VLAN ID,端口VLAN ID,是交换机端口上一个非常重要的概念,它主要用于处理不带VLAN标签的帧(untagged帧)。简单来说,PVID就是给进入端口的“裸数据帧”分配一个“身份”的机制。
入方向标记(Ingress Tagging)
当交换机端口收到一个不带VLAN标签的帧(例如来自普通PC、打印机或未配置VLAN的设备)时,交换机会根据该端口的PVID,自动给这个帧打上对应的VLAN标签。这样,该帧就属于PVID所指定的VLAN,可以在交换网络中进行后续的转发。
出方向去标记(Egress Untagging)
当交换机需要从某个端口发送数据帧,并且该数据帧的VLAN ID正好等于该端口的PVID时,交换机会将帧中的VLAN标签剥离,以不带标签(untagged)的形式发送出去。这样,接收设备(如不支持VLAN的服务器、摄像头)就能正常识别这个帧。
不同端口下的PVID
Access端口:
Access端口只属于一个VLAN,它的PVID固定等于该端口的所属VLAN。所有进入Access端口的帧都会被强制打上这个VLAN标签(如果未带标签),发送时也会被剥掉标签。例如,将Access端口加入VLAN 10后,其PVID自动变为10。
Trunk端口:
Trunk端口可以同时传输多个VLAN的流量。它有一个可配置的PVID,通常默认是VLAN 1。Trunk端口可以配置允许某些VLAN通过(port trunk allow-pass vlan),但PVID负责处理那些“未打标签”的流量。
配置举例
假设有一台服务器连接在交换机的G0/0/24端口上,该服务器的网卡不支持VLAN(只能收发untagged帧),需要将其划入VLAN 20,并且该端口还需要透传其他VLAN(如VLAN 10、30)给其他支持VLAN的设备。此时,配置如下:
[Switch] interface GigabitEthernet0/0/24
[Switch-GigabitEthernet0/0/24] port link-type trunk // 设置为Trunk模式
[Switch-GigabitEthernet0/0/24] port trunk pvid vlan 20 // 设置PVID为20(服务器所在VLAN)
[Switch-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20 30 // 允许VLAN 10、20、30通过
服务器 -> 交换机
交换机 -> 服务器:如果有数据需要发往服务器(例如来自VLAN 20内的其他设备),当该数据帧到达G0/0/24端口时,交换机发现其VLAN ID = 20(等于PVID),于是在发送前将标签剥离,以untagged形式交给服务器。而对于VLAN 10和30的帧,交换机则会保持带标签的形式发送,由对端支持VLAN的设备处理。
PVID是作为一个备用VLAN标签使用的,当发送的数据是未带VLAN标签时,交换机会按照PVID编号给数据打VLAN标签,用于交换机与交换机之间的数据识别,比如,交换机A数据发到交换机B时,交换机B需要通过VLAN标签判断数据来自那个VLAN,通过配置可以设定哪些VLAN标签可以转发哪些VLAN标签不能转发,而PVID就是当交换机A接收到不带VLAN标签数据时作为打标的备用信息,所以通常VLAN ID 和 PVID是一样的。
但是默认来说,PVID默认为1,这就使得所有的交换机在接收数据时,都把数据认为是同一个VLAN的数据(这里的VLAN不是不同网段的区别,而是交换机对数据分组的含意),傻瓜交换机就固定所有VLAN标签都为1,同时它们默认VLAN 标签为1的都允许通过,所以接入多个的傻瓜交换机,所有端口默认都能互通,在管理式交换机中,如果默认不改变PVID时,原生所有端口都互通。
三层交换与路由配置
对于三层交换机,需要配置VLAN接口(SVI)的IP地址,实现不同的VLAN间的路由,也相当于配置了一个DHCP服务器
# 创建或进入VLAN虚拟接口(三层接口)的视图,用于配置这个VLAN的ip分配和网关的配置
interface vlanif [id]
[SW] interface vlanif 10
# 为vlanif接口配置ip地扯,作为该vlan内终端的网关,该VLAN ID 设备会接入配置好的ip地址
ip address [ip地址] [子网掩码 | 掩码长度]
[SW-Vlanif10] ip address 192.168.10.1 255.255.255.255
[SW-Vlanif10] ip address 192.168.10.1 24
# 配置静态路由 0.0.0.0 0.0.0.0 代表默认路由
ip route-state [目的网络] [掩码] [下一跳地址]
[SW-Vlanif10] ip route-static 0.0.0.0 0.0.0.0 192.168.1.254
当我们在配置了 VLANIF 后,需要对核心交换机配置DHCP地址池
# 以下是一个设置地址池的案例
dhcp enable # 让交换机开启DHCP功能
ip pool vlan10 # 为 vlan 10 设置地址池配置
gateway-list 192.168.10.1 # 定义这个地址池的网关(也是以网关作为依据分配地址)
network 192.168.10.0 mask 255.255.255.0 # 定义地址池及数量
dns-list 202.96.128.166 202.96.128.86
quit
# 在VLANIF中使用这个地址池
interface vlanif10 # 进入 vlanif10的配置
dhcp select global # 使用全局地址池,此时会使用上面定义好的地址池信息
quit
如果要使用简单的自动分配地址方式可以使用下面的命令
interface vlanif10
dhcp select interface # 使用自动dhcp地址池分配
dns-list 202.96.128.166 202.96.128.86 # 因为自动dhcp地址池不会分配dns所以在这里需要另外添加dns列表
注意:如果希望使用配置好的地址池,需要在vlanif中使用 global,如果希望按照vlanif的ip配置分配地址的话,使用 interface
批量设置
在有些时候,我们会批量的对所有的端口进行配置某一特性,如1~23号作为access号,那么我们就需要用批量配置的方法
# 使用组成员定义,再对组进行操作,实现批量配置
port-group pg1 # 定义一个组
group-member GigabitEthernet0/0/1 to GigabitEthernet0/0/23 # 定义1~23端口到一个组中
port link-type access # 直接在 port-group-pg1 状态下设置,能批量设置
port default vlan 10 # 批量设置所有端口为 vlan10
保障交换机的接入安全至关重要,包括远程登录认证、端口安全等。
# 进入虚拟终端(SSH),配置远程登录界面,0 4 表示同支持最多5个远程连接
user-interface vty 0 4
# 指定 vty 接口支持的远程登录协议,一般使用SSH
protocol inbound {all | telnet | ssh}
protocol incound ssh # 设置可用的 远程连接是ssh协议
# 设置登录用户的认证方式,password 是单一密码,aaa是Authentication, Authorization, Accounting(认证、授权、计费)的缩写,是一种网络安全管理框架。在华为交换机上,aaa视图是配置本地或远程用户认证的核心位置
authentication-mode {password | aaa}
# 在接口下开启端口安全功能,用于控制接入设备的mac地址
port-security enable
[SW-Core-1-GigabitEthernet0/0/2] port-security enable # 0/0/2 中开启,即似这个口可以使用ssh连接
# 设置端口最多能学习的mac地址数量,防止mac地址的泛洪攻击
port-security max-mac-num [数字]
你可以把它想象成将多条车道合并成一条更宽的高速公路
# 创建 eth-trunk 逻辑接口并进入其视图,用于链路聚合
interface Eth-Trunk [trunk-id]
interface Eth-Trunk 1
# 将连接的一组物理接口加入到eth-trunk中,此时 3~5的端口会被捆绑成一个逻辑网口
trunkport [接口类型 编号] to [接口编号]
[SW-Core-1-Eth-Trunk1] trunkport GigabitEthernet 0/0/3 to 0/0/5
[interface GigabitEthernet0/0/23] eth-trunk 1 # 在端口视图下让端口加入 eth-trunk 链路
port link-type trunk # 把这个逻辑端口设置为 trunk 用于交换设备间通讯用端口
port trunk allow-pass vlan all # 通过所有vlan标签的数据
# 设置链路聚合的模式,lacp为动态协商模式,manual 为手动负载均衡模式
mode { lacp-static | manual }
# lacp 是让交换机动态协商多线数据负载,推荐使用
# 如果使用 manual 手动模式,就需要配置 源mac,目的mac,源ip目的ip等不同的算法来导流数据
-
核心交换机A(三层):负责VLAN间路由,连接交换机B和C。
-
交换机B(二层):承载VLAN 10,通过链路聚合(Eth-Trunk)上行至A。
-
交换机C(二层):承载VLAN 20,通过链路聚合(Eth-Trunk)上行至A。
-
链路聚合:B使用G0/0/23和G0/0/24聚合连接到A的G0/0/1和G0/0/2;C使用G0/0/23和G0/0/24聚合连接到A的G0/0/3和G0/0/4。
-
VLAN规划:
-
VLAN 10:IP网段
192.168.10.0/24,网关192.168.10.1(在A上)。 -
VLAN 20:IP网段
192.168.20.0/24,网关192.168.20.1(在A上)。
-
交换机A的配置如下
system-view # 进入系统配置模式
sysname SwitchA # 改名
vlan batch 10 20 # 批量创建 VLAN
interface Vlanif10 # 创建 虚拟VLAN ip 分配,因为交换机A作为主数据,所以两个VLAN的ip都由A来承载
ip address 192.168.10.1 255.255.255.0
quit
interface Vlanif20
ip address 192.168.20.1 255.255.255.0
quit
interface Eth-Trunk 1 # 创建聚合链路
port link-type trunk # 使链路作为 trunk 口
port trunk allow-pass vlan 10 # 这个链路用于 VLAN 10 数据
mode lacp-static # 使用 自动协商 链路流量
quit
interface Eth-Trunk 2
port link-type trunk
port trunk allow-pass vlan 20
mode lacp-static
quit
interface GigabitEthernet0/0/1 # 进入 0/0/1 端口配置界面
eth-trunk 1 # 设置端口归属聚合链路 1
quit
interface GigabitEthernet0/0/2
eth-trunk 1
quit
interface GigabitEthernet0/0/3 # 进入 0/0/3 端口配置界面
eth-trunk 2 # 设置端口归属聚合链路 2
quit
interface GigabitEthernet0/0/4
eth-trunk 2
quit
# 保存配置
return
save
y
交换机B/C的配置
system-view
sysname SwitchB
# 创建VLAN
vlan batch 10
# 创建Eth-Trunk 1(上行),配置为Trunk并允许VLAN 10,启用LACP
interface Eth-Trunk 1
port link-type trunk
port trunk allow-pass vlan 10 # 交换机 C 改为 vlan 20
mode lacp-static
quit
# 将物理口加入Eth-Trunk
interface GigabitEthernet0/0/23
eth-trunk 1
quit
interface GigabitEthernet0/0/24
eth-trunk 1
quit
# 配置其他端口为Access,属于VLAN 10(假设1~22号端口)
interface range GigabitEthernet0/0/1 to GigabitEthernet0/0/22
port link-type access
port default vlan 10 # 交换机 C 改为 vlan 20
quit
# 保存配置
return
save
y
# 创建访问控制列表(ACL),用于定义流量匹配规则,基本ACL(2000-2999) 匹配源IP,高级ACL(3000-3999)匹配五元组
acl [number] [acl-number]
[SW-Core-1] acl number 3000
[SW-Core-1-acl-adv-3000] rule 5 deny ip source 192.168.10.100 0 destination any
# 在接口或VLANIF上应用ACL进行流量过滤
traffic-filter { inbound | outbound } acl [acl-number]
[SW-Core-1-Vlanif10] traffic-filter inbound acl 3000
Access Control List,访问控制列表是一系列允许(permit)或拒绝(deny)规则的集合过滤和分类
ACL的分类
类型 ACL编号范围 匹配条件 适用场景
基本ACL 2000~2999 仅基于源IP地址 简单的源IP过滤,如禁止某个IP上网
高级ACL 3000~3999 基于五元组:源IP、目的IP、协议类型(TCP/UDP/ICMP等)、源端口、目的端口 精细控制,如只允许特定主机访问Web服务器
二层ACL 4000~4999 基于二层信息:源MAC、目的MAC、以太网类型等 控制二层通信,如禁止某些MAC互访
用户自定义ACL 5000~5999 自定义报文偏移位 特殊需求
A为核心,B承载VLAN 10,C承载VLAN 20
-
-
VLAN 20的PC不能访问VLAN 10的任何资源。
# 在交换机A中的配置
acl number 3000 # 根据控制复杂程度在上面的编号范围中取值
# 关键规则1 : 优先级5,permit:允许 tcp:限缺tcp协议 source:定义源 destination:定义目的,destination-port:定义目的端口为80
# 此处的规则为,只允许所有192.168.10.x的ip只能访问192.168.20.x的电脑的80端口
rule 5 permit tcp source 192.168.10.0 0.0.0.255 destination 192.168.20.0 0.0.0.255 destination-port eq 80
# 关键规则2 : 优先级 10, deny:拒绝,ip:限制ip协议
# 此处的规则为,拒绝所有192.168.10.x的电脑访问192.168.20.x的电脑
rule 10 deny ip source 192.168.10.0 0.0.0.255 destination 192.168.20.0 0.0.0.255
# 关键规则3 : 优先级 15,允许,协议是ip,所有到所有
# 此处的规则为,所有ip都能访问所有ip
rule 15 permit ip source any destination any
按照上面的规则,按优先级匹配,匹配成功后不再往下匹配。
# 情况一:当10段需要访问20段的80端口时
:触发 规则 1,连接成功,完成
# 情况二:当10段需要访问20段的80以外的端口时
:未触发 规则 1,继续匹配
:触发 规则 2, 拒绝所有10段到20段的访问,连接失败,完成
# 情况三:当20段需要访问10段的任意端口时
:未触发 规则1,继续匹配
:未触发 规则2,继续匹配
:触发 规则3, 允许所有任意ip到任意ip的访问,连接成功,完成
完成acl规则创建后,需要把规则这用到端口中
# 在交换机A的VLANIF中应用规则
interface Vlanif20
traffic-filter inbound acl 3000 # 应用过滤规则 id是 3000,要与定义acl的id一致
此处把规则这用在 vlan20 的进入处,当10段的数据通过vlan10转发到vlan20处时,会被检测
inbound
inbound 是过滤进入的流量,如上面的规则设置在 vlan20 的inbound 上时,所有进入vlan20的数据都会被检测,因为规则中包含【禁止10段访问20段】,所以我们在vlan20中设置入数据拦截比较合理
outbound
outbound 是过滤出去的流量,如果我希望【禁止20段访问10段】的情况,我们可以在vlan10处应用inbound规则,也可以在vlan20处应用outbound规则
列举ACL的其它控制方法汇总
# 定义源地址
source xxxxx 通配符掩码(非子网掩码)
rule 5 permit ip source 192.168.1.0 0.0.0.255
# 定义目的地址
destination xxxxx 通配符掩码(非子网掩码)
rule 5 permit ip destination 192.168.1.0 0.0.0.255
是用于ACL匹配的,二进制0表示必须匹配的位,1表示忽略(任意)的位
0.0.0.255 表示前24位必须匹配,后8位任意
拆分二进制为
00000000.00000000.00000000.11111111
0表示必须匹配,1表示忽略,所以
0.0.0.255 指的就是ip第四组数据1~255都可以
通配符通常是使用子网掩码的取反获得,如
# 需要匹配 255.255.255.248 子网的ip
11111111.11111111.11111111.11111000
取反后
00000000.00000000.00000000.00000111
即
0.0.0.7
不要使用子网掩码来表示通配掩码,否则匹配会相反。
基于协议
# 定义ip
rule 5 permit ip
# 定义tcp
rule 10 permit tcp
#定义udp
rule 15 permit udp
# 定义icmp(如ping等)
rule 20 permit icmp
# 定义gre(隧道)
rule 25 permit gre
# 定义 ospf
rule 30 permit ospf
# 定义源端口
source-port eq 端口号
rule 5 permit tcp source-port eq 1024
# 定义目的端口
destination-port eq 端口号
rule 10 permit tcp destination-port eq 80
# 定义端口范围
source-port range 开始端口 结束端口
destination-port range 开始端口 结束端口
rule 15 permit udp destination-port range 1000 2000
# 当见的服务关键字,www(80) telnet(23) smtp(25) fto(21)
rule 20 permit tcp destination-port eq www
# tcp-flags {标志位},如 ack、syn、fin、rst、psh、urg
rule 5 deny tcp tcp-flags syn(拒绝SYN请求)
# tcp-established 匹配ACK或RST标志的TCP包(即已建立连接的返回流量)
rule 10 permit tcp tcp-established
# icmp-type 类型号 或 icmp-type 类型名称
rule 5 permit icmp icmp-type echo(允许ping请求)
# echo(8, ping请求)、echo-reply(0, ping回复)、host-unreachable(3,3)、port-unreachable(3,4)
rule 10 deny icmp icmp-type host-unreachable
# 报文长度 length 长度值(匹配等于该长度的包)
rule 5 deny ip length 64
# 报文长度范围 length range 最小长度 最大长度
rule 10 deny ip length range 1000 1500
# ToS优先级 tos tos值 匹配IP头的ToS字段
rule 15 permit ip tos 10
# 优先级 precedence 优先级值 匹配IP优先级字段
rule 20 permit ip precedence 5
# 时间范围 需先创建time-range,然后在规则中引用
先定义:time-range working-day 8:00 to 18:00 working-day
再引用:rule 5 deny ip source 192.168.1.0 0.0.0.255 time-range working-day
# 源MAC source-mac mac地址 掩码
rule 5 deny source-mac 00e0-fc01-0101 ffff-ffff-ffff
# 目的MAC destination-mac mac地址 掩码
rule 10 permit destination-mac 0180-c200-0001 ffff-ffff-ffff(允许STP报文)
# 以太网类型 ethertype 类型号,如 8021q(0x8100)、arp(0x0806)、ipv4(0x0800)
rule 15 deny ethertype 0x0806(拒绝ARP报文)
# 分片报文 fragments 匹配非首片分片报文
rule 5 deny ip fragments(拒绝所有分片报文,防攻击)
这些匹配项可以灵活组合,实现精细控制。例如:
# 允许VLAN 10的PC在上班时间通过SSH登录服务器192.168.20.10
acl number 3000
rule 5 permit tcp source 192.168.10.0 0.0.0.255 destination 192.168.20.10 0 destination-port eq 22 time-range working-day
rule 10 deny ip source 192.168.10.0 0.0.0.255 destination 192.168.20.10 0
rule 15 permit ip
quit
第一步:准备建立通道策略
这一步是先定义好数据传输时需要把数据加密传输的一些属性,这里只做声明,后面会设置一个密码,用这个密码来协商出一个加密密钥,供两端防火墙加解密用的
# 创建一个加密协议方案
ike proposal 5
encryption-algorithm aes-cbc-128 # 设置数据加密算法
authentication-algorithm md5 # 设置校验算法
authentication-method pre-share # 使用预共享密钥
dh group14 # DH组,用于协商两端防火墙一个互相共享的密钥
注意:这里两端交换机配置必须一样,否则加解密会失败。
第二步:准备数据加密的策略
对于访问什么主机,才会走IPSec通道,要在这里定义好,比如A端ip组是 10.1.1.1/24 ,B端ip组是 10.2.1.1/24。那么就要在这里定义,如果访问什么ip组时才会跑IPSec通道
# 定义一个acl流量控制实例
acl number 3000
# A端配置定义主机如果需要访问10.2.1.0组地址时规则生效
rule permit ip source 10.1.1.0 0.0.0.255 destination 10.2.1.0 0.0.0.255
# B端配置,刚好反过来
rule permit ip source 10.2.1.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
#
ipsec proposal A # 定义 ipsec A 端的加密策略,这里的是ipsec的加密,意思是这个加密是用于数据流量的加密
esp authentiocation-algorithm sha2-256
esp encryption-algorithm aes-128
#
ipsec proposal B # 定义 ipsec A 端的加密策略
esp authentiocation-algorithm sha2-256 # 数据的认证算法
esp encryption-algorithm aes-128 # 数据的加密算法
为了正确的识别对端防火墙的数据,防止伪装数据
# 识别对端的名字,如果有v2版本可以使用v2
ike peer B v1 # 对端是 ike peer A v1
remote-address 200.1.1.1 # 这里是识别对端的IP地址,即对方的外网ip,对端是 remote-address A 的外网ip
pre-shared-key cipher abc123 # 创建一个密码,这个密码用于加密成密文,用于两端密文认证
ike-proposal 5 # 应用 第一步 中的加密策略来对这里的密码进行加密传输
# 这里创建一个到对端的协议整合。isakmp: 因特网安全关联和密钥管理协议
ipsec policy To-B 10 isakmp
security acl 3000 # 应用流量识别策略,应用了 第二步 的 acl 3000
ike-peer B # 应用对端识别协议策略,应用了 第三步 的 ike peer B, 对端则写为 A
proposal A # 应用了 第二步 中的 ipsec proposal A 隧道加密策略. 因为现在在 ipsec 配置环境下。
# 对出接口进行应用ipsec策略
interface GigabitEthernet0/0/0 # 选中第0号,作为数据发出
ip address 100.1.1.1 255.255.255.252 # 外网IP设置(原本就有)
ipsec policy To-B # 应用ipsec策略到这个端口中,让所有数据都往这个口出去
# 查看当前交换机生效的配置
display current-configuration
# 查看接口的详细状态,如速率、双工模式、流量统计、错误包等
display interface [接口类型]
<SW-Core-1> display interface GigabitEthernet0/0/1 # 查看1号端口配置
<SW-Core-1> display interface brief # 查看接口状态摘要
# 查看交换机的路由表
display ip routing-table
# 查看VLAN的详细信息,包括包含哪些端口
display vlan [id]
# 查看交指机的mac地址表,了解二层转发路径
display mac-address
# 查看交换机的软件版本、硬件信息、运行时间等
display version
# 查看 Eth-trunk 的成员端口和状态
display eth-trunk [id]
# 测试
ping [ip地址]


共有 0 条评论