华为、新华三交换机配VLAN方法

华为、新华三交换机配VLAN方法
狂犬主子为什么要划分VLAN?懂的都懂,TL;DR
平时华为和新华三(H3C)的设备都有接触,两边命令大同小异,但偏偏就差的那几个词最容易出事。这篇文章按实际干活的顺序记一遍,顺手把两家的差异标出来,以后自己忘了也能翻回来抄。
开工前的准备
以前我也犯过“拿着配置线就冲上去”的毛病,后来学乖了。开工前在工单里写几行字:VLAN ID 和用途、哪些口接终端哪些口上联、Trunk 要放哪些 VLAN、每个 VLAN 的网关地址、对端交换机的接口编号。
最后那条尤其重要。配 Trunk 的时候你只看得见自己这头,对端是谁、哪个口,全靠事先记下来。
先花五分钟想清楚,比配完再返工划算。
连上交换机
Console、SSH、Telnet 都行。Console 串口参数一般是 9600、8N1,现场设备重启或者网络不通的时候,还是这根线靠谱。生产环境优先 SSH,Telnet 是明文,一般只在应急时用。
老设备有个烦人的点,它的SSH算法是RSA的,新版 OpenSSH 客户端默认把它禁了,需要加一个参数,让他指定使用RSA算法。
1 | ssh -oHostKeyAlgorithms=+ssh-rsa admin@192.168.1.254 |
要是还协商失败,多半密钥交换和HMAC算法也老,一起放宽:
1 | ssh -oHostKeyAlgorithms=+ssh-rsa -oKexAlgorithms=+diffie-hellman-group1-sha1 -oMACs=+hmac-sha1 admin@192.168.1.254 |
重置密码
有时候设备是二手的,或者密码是上一任网管留的,手上根本没有。华为和华三的 Console 口都支持通过重启中断引导来跳过认证,进去之后再把密码改掉。
华为设备重启后,在启动界面出现提示时按 Ctrl+B 进入 BootROM 菜单,输入 BootROM 密码(默认一般是 Admin@huawei.com),选择清除 Console 口密码,然后重启。重启后 Console 登录就不需要密码了,进系统视图用 user-interface console 0 下的 authentication-mode password 重新设一个。
华三类似,重启过程中按 Ctrl+B 进 BootWare 菜单,选跳过当前配置启动(Skip current configuration file),启动后是空配置,原来的密码自然就没了。但要注意,跳过配置启动后如果直接 save,会把原来的配置覆盖掉,正确做法是先 display current-configuration 把原配置导出来,改完密码再恢复。
两家都别忘了:改完密码一定要 save,不然重启一次又回到原点。
查看当前配置
连上以后第一件事一定是看现状:
1 | <Huawei/H3C> display version <Huawei/H3C> display current-configuration <Huawei/H3C> display vlan <Huawei/H3C> display port vlan <Huawei/H3C> display interface brief |
进入系统视图
先别急着敲 vlan 10,你这时候在用户视图(尖括号那个 <Huawei> 或者 <H3C>),除了看和测什么都配不了。得先:
1 | <Huawei> system-view [Huawei] |
华三一样,system-view,懒的时候敲 sys 也行。提示符从尖括号变方括号就对了。
创建VLAN
华为批量用 batch:
1 | [Huawei] vlan batch 10 20 30 [Huawei] vlan batch 10 to 20 |
华三没有 batch 这个词,连续的直接写:
1 | [H3C] vlan 10 to 20 |
不连续的还是老老实实一个一个进 vlan 10、quit、vlan 20。
配置接口VLAN
华为接口名称是 GigabitEthernet,常简写为 GE,华三同样叫 GigabitEthernet,简写也是 GE,两家在这点上倒是一致的。但华为是从 GigabitEthernet 0/0/1 这种槽位编号开始数的,华三则是 GigabitEthernet 1/0/1,第一位是堆叠或机框编号。所以配之前先 display interface brief 看一眼实际的接口名。
配置Access接口
Access口接终端,华为是 port default vlan 10,华三是 port access vlan 10,这俩别记混。
1 | [Huawei] interface GigabitEthernet 0/0/1 [Huawei-GigabitEthernet0/0/1] port link-type access [Huawei-GigabitEthernet0/0/1] port default vlan 10 |
1 | [H3C] interface GigabitEthernet 1/0/1 [H3C-GigabitEthernet1/0/1] port link-type access [H3C-GigabitEthernet1/0/1] port access vlan 10 |
华为老版本上常见 port access vlan,新设备用 port default vlan。
配置Trunk口
Trunk口是交换机之间互联的,华为放行用 allow-pass,华三用 permit:
1 | [Huawei] interface GigabitEthernet 0/0/24 [Huawei-GigabitEthernet0/0/24] port link-type trunk [Huawei-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20 |
1 | [H3C] interface GigabitEthernet 1/0/24 [H3C-GigabitEthernet1/0/24] port link-type trunk [H3C-GigabitEthernet1/0/24] port trunk permit vlan 10 20 |
批量配置
单个端口配一两个还行,一台48口交换机要划20个口进VLAN 10,你还一个个敲,那不是勤快,是跟自己过不去。
华为这边有两个东西。port-group 是建一个带名字的组,端口加进去,组会留在配置里,以后还能再进去改,适合那种这组口长期就这套策略的情况:
1 | [Huawei] port-group pg-access-10 [Huawei-port-group-pg-access-10] group-member GigabitEthernet 0/0/1 to GigabitEthernet 0/0/20 [Huawei-port-group-pg-access-10] port link-type access [Huawei-port-group-pg-access-10] port default vlan 10 |
group-member 后面 to 一连就是一片,不连续的拿空格隔开写也行。
另一种是 interface range,临时组,进去批量下发,quit 出来组就没了,配置里不留东西。就调一次的话我更爱用这个:
1 | [Huawei] interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/20 [Huawei-port-group] port link-type access [Huawei-port-group] port default vlan 10 [Huawei-port-group] quit |
有几条限制得知道:华为这个 interface range 里 to 两头得在同一块接口板上,跨板卡就拆成几条写,别硬塞。如果不用 to 而是逐个列接口,就没这些限制。另外永久端口组的数量和每组成员数都有上限,常见规格是组上限 32、每组 48 个成员,别当无限容器用。
华三那边,interface range 一样好使:
1 | [H3C] interface range GigabitEthernet 1/0/1 to GigabitEthernet 1/0/20 [H3C-if-range] port link-type access [H3C-if-range] port access vlan 10 [H3C-if-range] quit |
它比华为那个宽松些,能把物理口和VLAN接口这类不同类型的东西放进同一个范围里批量执行。但有个代价:批量视图下只能执行“列表里第一个接口”支持的命令,第一个接口不支持的,就算别的成员口支持也敲不了。所以混着用的时候,把最有代表性的接口写在最前面。
要长期复用的组,华三用 port-group manual:
1 | [H3C] port-group manual pg-access [H3C-port-group-manual-pg-access] group-member GigabitEthernet 1/0/1 to GigabitEthernet 1/0/20 [H3C-port-group-manual-pg-access] port link-type access [H3C-port-group-manual-pg-access] port access vlan 10 |
这个组只能塞二层以太口,混不了逻辑接口。
华三还有个折中的写法,给一组接口起个别名,能复用又不占端口组资源:
1 | [H3C] interface range name acc10 interface GigabitEthernet 1/0/1 to GigabitEthernet 1/0/20 [H3C] interface range name acc10 [H3C-if-range] port access vlan 10 |
另外华三可以直接在 VLAN 视图下把一串口拉进来,等价于把它们设成 Access 并加入这个 VLAN:
1 | [H3C] vlan 10 [H3C-vlan10] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/20 |
只批量改物理口,两种都行;要混逻辑接口,用 interface range;策略要长期复用,用命名组。
配VLAN接口
VLAN 之间默认二层隔离,要通就得给每个 VLAN 配个三层地址。华为叫 Vlanif,华三叫 Vlan-interface,中间那个连字符别省:
1 | [Huawei] interface Vlanif 10 [Huawei-Vlanif10] ip address 192.168.10.1 24 |
1 | [H3C] interface Vlan-interface 10 [H3C-Vlan-interface10] ip address 192.168.10.1 24 |
有个现象容易误判:VLAN 里如果一个 up 的物理口都没有,对应的 Vlanif 也不会 up。display ip interface brief 里看到 down,先别怀疑地址写错了。另外,终端那边网关要指到这个地址。
配置DHCP
小局点没必要单开一台DHCP服务器,交换机就能发地址。两家都得先开全局开关,这个最容易忘——不开的话接口下配了也不响应,还不报错。
华为:
1 | [Huawei] dhcp enable [Huawei] ip pool vlan10 [Huawei-ip-pool-vlan10] network 192.168.10.0 mask 24 [Huawei-ip-pool-vlan10] gateway-list 192.168.10.1 [Huawei-ip-pool-vlan10] dns-list 223.5.5.5 119.29.29.29 [Huawei-ip-pool-vlan10] lease day 1 hour 0 minute 0 [Huawei-ip-pool-vlan10] excluded-ip-address 192.168.10.2 192.168.10.10 [Huawei-ip-pool-vlan10] static-bind ip-address 192.168.10.100 mac-address 00e0-fc12-3456 |
华三:
1 | [H3C] dhcp enable [H3C] ip pool vlan10 [H3C-ip-pool-vlan10] network 192.168.10.0 24 [H3C-ip-pool-vlan10] gateway 192.168.10.1 [H3C-ip-pool-vlan10] dns server 223.5.5.5 [H3C-ip-pool-vlan10] lease day 1 hour 0 minute 0 [H3C-ip-pool-vlan10] excluded-ip-address 192.168.10.2 192.168.10.10 [H3C-ip-pool-vlan10] static-bind ip-address 192.168.10.100 mac-address 00e0-fc12-3456 |
老华三(Comware 5)这几个词不一样:network 192.168.10.0 mask 255.255.255.0、gateway-list、dns-list、lease 0 1 0。碰到老设备就按这套写。
池子建好只是“备好了货”,还得挂到接口上,否则那个 VLAN 里的广播没人接:
1 | [Huawei] interface Vlanif 10 [Huawei-Vlanif10] ip address 192.168.10.1 24 [Huawei-Vlanif10] dhcp select global |
1 | [H3C] interface Vlan-interface 10 [H3C-Vlan-interface10] ip address 192.168.10.1 24 [H3C-Vlan-interface10] dhcp select global |
dhcp select global 意思是“用全局地址池”。华为还有个 dhcp select interface,直接拿接口地址所在网段自动建池,省事但可控性差,我一般还是显式建池。
几个数值上的建议:
-
gateway-list/gateway填的地址要跟 Vlanif 地址一致,不然客户端拿到了也出不去; -
excluded-ip-address把网关、打印机、AP 这些静态占用的段排除掉,免得冲突; -
lease别给太短,办公网一天或三天都行,短了客户端频繁续租,日志能刷爆; -
static-bind是给打印机、门禁这类要固定地址又不想手配的设备用的,按 MAC 绑。
配置DHCP中继
如果想要统一管理DHCP,可以在核心交换机或专用服务器上建池,各接入交换机的 VLAN 接口只做中继,把请求转过去。
客户端发的是广播,跨不过 VLAN,所以得有个“传话的”。中继不发消息,只把广播转成单播丢给服务器。
典型场景:地址池和服务器在 VLAN 10,VLAN 20 的终端也要拿地址。在 VLAN 20 的网关设备上这么配:
1 | [Huawei] dhcp enable [Huawei] interface Vlanif 20 [Huawei-Vlanif20] ip address 192.168.20.1 24 [Huawei-Vlanif20] dhcp select relay [Huawei-Vlanif20] dhcp relay server-ip 192.168.10.100 |
1 | [H3C] dhcp enable [H3C] interface Vlan-interface 20 [H3C-Vlan-interface20] ip address 192.168.20.1 24 [H3C-Vlan-interface20] dhcp select relay [H3C-Vlan-interface20] dhcp relay server-address 192.168.10.100 |
命令名就差在这里:华为 server-ip,华三 server-address。两家都支持配多个服务器做冗余,也都有 dhcp relay link-address,一般不用动,除非服务器侧要按指定源地址回包。
中继这边有两个前提,缺一个客户端就拿不到地址:
-
这个 VLAN 接口必须有 IP(它就是报文里的 giaddr,没 IP 中继起不来);
-
DHCP服务器必须有一条回 192.168.20.0/24 的路由。
DHCP服务器只会把回包发给 giaddr,中间任何一跳没路,包就没了。这也是中继问题里最常见的一半原因。
如果交换机上开了 DHCP snooping,中继经过的口要标成 trust,否则报文会被当成非法 DHCP 流量丢掉:
1
2[Huawei] interface GigabitEthernet 0/0/24 [Huawei-GigabitEthernet0/0/24] dhcp snooping trusted
1
2[H3C] interface GigabitEthernet 1/0/24 [H3C-GigabitEthernet1/0/24] dhcp snooping trusted
配路由
让三层交换机当网关,提高跨三层转发效率,数据不用先传到路由器再传回来。
先分清哪些路是白送的:同一台交换机上配了 Vlanif 的 VLAN,互相之间是直连路由,自动就有了,不用配。要手动配的只有两类——去别的交换机、去核心/上网关。
静态路由两家命令一样,ip route-static:
1 | [Huawei] ip route-static 0.0.0.0 0 192.168.1.254 [Huawei] ip route-static 192.168.20.0 24 10.0.0.2 |
1 | [H3C] ip route-static 0.0.0.0 0 192.168.1.254 [H3C] ip route-static 192.168.20.0 24 10.0.0.2 |
默认路由的掩码写 0 或 0.0.0.0 都行。做主备链路的话用浮动静态,把备份那条的 preference 调大(两家静态路由默认都是 60):
1 | [Huawei] ip route-static 0.0.0.0 0 192.168.1.253 preference 100 [H3C] ip route-static 0.0.0.0 0 192.168.1.253 preference 100 |
设备多、网段多,静态路由维护起来会失控,上 OSPF。两家的写法基本一致,注意 network 后面是反掩码,不是子网掩码:
1 | [Huawei] ospf 1 router-id 1.1.1.1 [Huawei-ospf-1] area 0 [Huawei-ospf-1-area-0.0.0.0] network 192.168.10.0 0.0.0.255 |
1 | [H3C] ospf 1 router-id 1.1.1.1 [H3C-ospf-1] area 0 [H3C-ospf-1-area-0.0.0.0] network 192.168.10.0 0.0.0.255 |
router-id 建议显式配,别让它自动挑,不然接口一抖 ID 变了,邻居全重建。老华三(Comware 5)区域要写全 area 0.0.0.0。
验证和保存
配完自查一遍,别急着收工:
1 | <Huawei/H3C> display vlan # VLAN 建没建成、端口归到哪 <Huawei/H3C> display port vlan # 链路类型、放行列表对不对 <Huawei/H3C> display ip interface brief # Vlanif 地址和状态 |
然后终端 ping 自己网关,再跨 VLAN ping 一次,通了才算完。
在保存之前,可以先diff看一下当前的配置和系统启动的配置有什么差别。
1 | <HUAWEI> compare configuration |
1 | <H3C> display diff current-configuration |
命令是输完以后生效的,但是重启以后会消失,需要保存到Flash。
1 | <Huawei> save # 会提示确认,输入 y <H3C> save force # 不想被交互提示打断可以带 force |
保存命令两家都是 save,回车后提示确认,敲 Y 即可。华为会问是否保存到指定文件,直接回车用默认的 vrpcfg.zip;华三问是否覆盖当前配置文件,同样回车走默认即可。不存的话,前面配的 VLAN、接口、Vlanif 地址,重启全没,白干一场。


