BRAS INTEGRATION  ·  华为 BRAS 对接实战

华为 NE40 ME60 BRAS 对接 OpenPortal,MAC 快速认证 + Portal 认证

以华为 NE40E / ME60 BRAS(V8 平台)为例,给出二层普通用户 IPoE 接入下“MAC 快速认证优先 + Portal 认证兜底”的完整方案:四域规划、RADIUS 与 DM/CoA、Portal 服务器对接、网间网出口与 NAT 归属、上线验证与排障,并逐项对齐 OpenPortal 侧的 BAS IP、NAS 列表、高级扩展与接入账户组参数。

STEP BY STEP / 从平台配置到上线

设备侧按四域落配置,平台侧逐项对齐

配置命令可直接对照设备粘贴修改;表格可左右滑动,截图点击可放大。

0适用版本与修订记录

适用产品/版本:NE40 ME60 BRAS —— 即华为 NE40E 系列(NE40E / NE40E-M / NE40E-F)与 ME60,V8 平台(V800R011C10 及以上,示例按 V800R023/V800R024 语法);本文配置对 NE40E 与 ME60 通用,型号差异项见第 7 章

认证模型:二层普通用户(IPoE / layer2-subscriber)+ MAC 快速认证优先 + Portal 认证

认证路径:华为 NE40 ME60 BRAS "Web+MAC 认证(MAC 简化认证)"成熟模型 —— "MAC 认证域 → Web 认证前域 → 认证后域"三段式,本方案扩展为四域(MAC 认证前/后域、Portal 认证前/后域)

修订记录:V1.1 按现场实际项目经验补充 radius local-ip all(DM/CoA 必需)、web-server redirect-key user-mac-address mac simple type1(MAC 冒号格式)、portal-server redirect-key、http-hostcar enable、dns primary-ip、idle-cut、web-server mode 等命令

修订记录:V1.2 新增网间网出口(VLAN10 / g1/0/10 子接口 / 100.0.0.1 / 上级防火墙 100.0.0.254)与默认路由,并修正原占位默认路由

修订记录:V1.3 补充 RADIUS 授权属性落地(用户名 / 用户组 / 域 / Filter-Id);V1.4 统一设备称呼为 NE40 ME60 BRAS、明确对接 OpenPortal,并按 OpenPortal 截图补入 CoA IP 核对项

修订记录:V1.5 纠正 Portal 端口语义 —— 50100 是 Portal 服务器侧侦听的 UDP 端口(设备发报文的目的端口),2000 是 BRAS 侧侦听 Portal 报文的 UDP 端口(即 OpenPortal 里的「BAS端口」),两者不是同一个端口,不可混用

修订记录:V1.6 纠正 CoA IP 结论 —— OpenPortal 的 COA IP 留空时默认发往 NAS 的「IP地址」字段(10.0.0.1),等效于正确配置,无需强制补填

修订记录:V1.7 补全华为 Domain 属性的下发位置 —— 「NAS 列表 → 高级扩展」选华为高级后,Domain 取值来自「接入账户组 → 详细信息」字段;不指定域时必须留空,填错会导致认证失败或落错域(见 3.10 ④)

修订记录:V1.8 新增 8.6 终端信息上送 —— 澄清 HW-HTTP-UA(26-159) 属交换机/AC 的 NAC 特性且走计费报文,BRAS 侧不支持;BRAS 可上送的是 HW-Dhcp-Option(26-187)

修订记录:V1.9 新增 8.7 终端主机名识别 —— 「高级扩展=华为高级」后 OpenPortal 解析 187 中的 Option 12 主机名并写入「终端主机名管理」表;BRAS 侧只需 radius-attribute include hw-dhcp-option 12

修订记录:V1.10 纠正 MAC 格式结论 —— MAC 写法差异(设备缺省 xxxx-xxxx-xxxx vs OpenPortal 的 11:22:33:44:55:66)由 OpenPortal 侧自适应,设备侧不要改 calling-station-id mac-format(该命令作用于整个 RADIUS 组,会连带影响计费与按 MAC 解析的下游系统),仅在服务器不支持时才作兜底

1组网与地址规划

设备配置片段左右滑动查看
                        ┌──────────────────────────────┐
                        │  Portal + RADIUS 服务器        │
                        │  10.0.0.2                     │
                        │  服务器侦听 UDP 50100         │
                        │  RADIUS 1812/1813             │
                        │  CoA/DM 3799                  │
                        └───────────────┬──────────────┘
                                        │ VLAN 500
                                        │ 10.0.0.1/24(BRAS 侧地址)
                        ┌───────────────┴──────────────┐
                        │      NE40 ME60 BRAS          │
                        │   g1/0/1.500  → 服务器侧        │
                        │   g1/0/2.100  → 用户侧          │
                        │   g1/0/10.10  → 网间网出口      │
                        └───┬───────────────────┬──────┘
                            │ VLAN 100          │ VLAN 10
                            │                   │ 100.0.0.1/24
                            │                   │ 默认路由 → 100.0.0.254
                            │        ┌──────────┴───────────┐
                            │        │   上级防火墙 / 出口     │
                            │        │   100.0.0.254         │
                            │        │   承担 NAT(方案A)     │
                            │        └──────────┬───────────┘
                            │                   │ 公网
                            │        ┌──────────┴───────────┐
                            │        │      Internet        │
                            │        └──────────────────────┘
                        ┌───┴──────────────────────────┐
                        │  接入交换机 / 用户终端          │
                        │  192.168.0.0/24 网关 .0.1      │
                        └──────────────────────────────┘

出口与认证的关系:用户流量路径为 终端 → NE40 ME60 BRAS(网关 192.168.0.1) → 默认路由 → 防火墙 100.0.0.254 → 公网。认证与 NAT 是解耦的两件事——认证在 g1/0/2.100 上做,NAT 在出口侧做(本方案默认由防火墙承担,见 5.6 节)。

图 1 网络拓扑
图 1 · 网络拓扑点击放大
项目规划值说明
Portal 服务器地址10.0.0.2与 RADIUS 合设,同一地址
Portal 跳转 URLhttp://10.0.0.2前域强制重定向地址
Portal 服务器侦听端口50100服务器侧 UDP 端口,设备发 Portal 报文的目的端口:web-auth-server 10.0.0.2 port 50100
BRAS 侦听端口2000设备侧 UDP 端口,即 OpenPortal「BAS端口」:web-auth-server listening-port 2000
RADIUS 认证/计费10.0.0.2:1812 / 1813标准端口
RADIUS 授权(CoA/DM)10.0.0.2:3799服务器主动下发,需 radius local-ip
共享密钥portalPortal 与 RADIUS 统一使用(上线前建议改强密钥)
NE40 ME60 BRAS 对接服务器地址10.0.0.1/24VLAN 500,g1/0/1 子接口;同时作为 BAS-IP / NAS-IP
URL 参数wlanuserip=用户 IP,mac=用户 MAC(aa:bb:cc:dd:ee:ff),basip=10.0.0.1MAC 用 simple type1 输出冒号格式
用户业务 VLAN100端口 g1/0/2
用户网段/网关192.168.0.0/24,网关 192.168.0.1DHCP 本地地址池下发
用户 DNS114.114.114.114、8.8.8.8需免认证放通
网间网出口 VLAN10端口 g1/0/10,子接口 g1/0/10.10
出口本地地址100.0.0.1/24与上级防火墙三层对接(掩码按现场,见 3.9 说明)
上级防火墙网关100.0.0.254默认路由下一跳
默认路由0.0.0.0/0 → 100.0.0.254原占位 10.0.0.254 已废弃

2认证流程与"四域"规划

2.1四域职责

序号域名称角色认证方案落地命令
①mac-preMAC 认证前域radius(MAC 作纯用户名)BAS 接口 default-domain pre-authentication
②mac-postMAC 认证后域radius + 计费BAS 接口 default-domain authentication
③portal-prePortal 认证前域none(不认证,仅推页面)authening authen-fail online authen-domain
④portal-postPortal 认证后域radius + 计费authening authen-redirect online authen-domain

2.2上线流程(MAC 快速认证优先)

设备配置片段左右滑动查看
用户接入 VLAN100 / g1/0/2.100
        │  首包(ARP / HTTP)触发
        ▼
┌─────────────────────────┐
│ ① mac-pre(MAC 认证前域)│  未认证用户仅放通:Portal 10.0.0.2、DNS
│  以"MAC 地址"作纯用户名   │  向 RADIUS 认证(default-user-name include mac-address)
└───────┬─────────┬───────┘
        │         │
   RADIUS 命中    RADIUS 未命中 / 拒绝
  (该 MAC 已注册)      │  authening authen-fail online authen-domain portal-pre
        │         ▼
        │   ┌──────────────────────────┐
        │   │ ③ portal-pre(前域/重定向域)│ 仅放通 Portal + DNS
        │   │ HTTP 302 → http://10.0.0.2 │
        │   │   ?wlanuserip=192.168.0.x  │
        │   │   & mac=aa:bb:cc:dd:ee:ff  │
        │   │   & basip=10.0.0.1        │
        │   └───────┬──────────────────┘
        │           │ 用户输入账号密码 → Portal 协议 AUTH → NE40 ME60 BRAS 转 RADIUS
        │     认证通过 │
        │           ▼
        │   ┌───────────────────────────┐
        │   │ ④ portal-post(Portal 后域)│ RADIUS 授权 + 计费,全权限
        │   └───────────────────────────┘
        ▼
┌──────────────────────────┐
│ ② mac-post(MAC 认证后域)│ RADIUS 授权 + 计费,全权限
│ 免弹窗,用户无感知上线      │
└──────────────────────────┘

核心特征: 终端只要在 RADIUS/Portal 侧登记过 MAC,用户上线即自动通过(免 Portal 弹窗);未登记 MAC 的终端才被重定向到 Portal 页面输入账号密码。

3完整配置(含注释)

3.1设备基础

设备配置片段左右滑动查看
# 设备名称
sysname NE40-ME60-BRAS

# BAS 业务授权(二层普通用户接入必需,槽位号按单板实际位置填写)
license
 active bas slot 1

# 业务 VLAN(子接口 dot1q 终结方式下非必需,保留便于后续二层口扩展)
# 10=网间网出口  100=用户业务  500=服务器互联
vlan batch 10 100 500

3.2服务器互联接口(VLAN 500 / g1/0/1)

设备配置片段左右滑动查看
# 与 Portal、RADIUS 服务器互联的三层子接口,地址即 BAS-IP / NAS-IP
interface GigabitEthernet1/0/1.500
 description TO_Portal_RADIUS_Server_10.0.0.2
 vlan-type dot1q 500
 ip address 10.0.0.1 255.255.255.0

3.3RADIUS 服务器组 + DM/CoA(三件套)

设备配置片段左右滑动查看
# RADIUS 服务器组
radius-server group rd1
 radius-server type standard
 # 认证 / 计费服务器
 radius-server authentication 10.0.0.2 1812 weight 0
 radius-server accounting 10.0.0.2 1813 weight 0
 # 共享密钥,与 RADIUS / Portal 服务器一致
 radius-server shared-key-cipher portal
 # 超时与重传
 radius-server retransmit 3
 radius-server timeout 5
 # 认证请求携带认证类型属性,便于服务器区分 MAC 认证 / Portal 认证用户
 radius-attribute include HW-Auth-Type

# 【DM/CoA 三件套之一】允许本机地址作为 RADIUS 报文(含 CoA/DM)的本地地址
# DM/CoA 是服务器主动发往设备 3799 端口的报文,只有被纳入 RADIUS socket 的本地地址才能接收
radius local-ip all

# 【DM/CoA 三件套之二】允许 10.0.0.2 作为 RADIUS 授权服务器(DM 强制下线 / CoA 动态改授权)
# 只放通该地址,防止非法服务器踢线或篡改授权
radius-server authorization 10.0.0.2 shared-key-cipher portal

# 【DM/CoA 三件套之三】授权服务器端口(默认 3799,一般无需修改,仅列出备查)
# radius-server authorization port 3799

3.4Portal 服务器

设备配置片段左右滑动查看
# 【设备侧侦听端口】本机侦听 Portal 协议报文的 UDP 端口,缺省 2000
# 对应 OpenPortal「设备对接默认设置 → BAS端口」,服务器把报文发到这个端口
web-auth-server listening-port 2000

# 【服务器侧目的端口】设备发往 Portal 服务器的目的 UDP 端口,缺省 50100,key 与服务器一致
# 对应 OpenPortal 服务器自身侦听 Portal 业务的端口(50100),不是 BAS端口
web-auth-server 10.0.0.2 port 50100 key simple portal

# 协议版本兼容:优先 V2,兼容 V1
web-auth-server version v2 v1
# 使能 Portal 功能
web-auth-server enable

两个端口不要混。 Portal 协议是双向的 UDP 交互,双方各自侦听、互为对端端口:

方向报文目的端口由谁决定配置命令
服务器 → 设备(REQ_CHALLENGE / REQ_AUTH / ACK_LOGOUT)2000设备侦听,服务器填「BAS端口」web-auth-server listening-port 2000
设备 → 服务器(ACK_CHALLENGE / ACK_AUTH / NTF_LOGOUT / AFF_ACK_AUTH)50100服务器侦听,设备填 portweb-auth-server 10.0.0.2 port 50100

典型配错:把 web-auth-server ... port 写成 2000(两边都填 2000)。此时设备把报文发到服务器的 2000 端口,服务器在 50100 上收不到,现象是能弹窗、点登录后一直转圈最后超时,而设备侧 display web-auth-server statistics 显示报文发出去但无响应。

web-auth-server listening-port 取值范围 1024~55535,且必须全局唯一;若该端口被其他业务占用,配置会直接失败,可用 display udp 核查。

3.5用户地址池(192.168.0.0/24,DHCP 下发)

设备配置片段左右滑动查看
# 本地地址池,网关与 DNS 由设备直接下发
ip pool pool100 bas local
 gateway 192.168.0.1 255.255.255.0
 section 0 192.168.0.2 192.168.0.254
 # 用户 DNS(与域视图 dns primary-ip 保持一致,域视图优先)
 dns-server 114.114.114.114 8.8.8.8

3.6用户组与免认证放行

设备配置片段左右滑动查看
# 未认证用户组(认证前域使用)
user-group pre-grp
# 认证通过用户组(认证后域使用,此处不做限制;如需限速/ACL 在此挂策略)
user-group post-grp

# —— 免认证放行:Portal 服务器地址 + 用户 DNS ——
acl number 6000
 rule 5 permit ip source user-group pre-grp destination ip-address 10.0.0.2 0
 rule 10 permit ip source user-group pre-grp destination ip-address 114.114.114.114 0
 rule 15 permit ip source user-group pre-grp destination ip-address 8.8.8.8 0

# —— 未认证用户的其余流量:丢弃(由 Portal 重定向页面引导认证)——
acl number 6001
 rule 5 permit ip source user-group pre-grp destination ip-address any

# 流分类
traffic classifier pre-allow operator or
 if-match acl 6000
traffic classifier pre-deny operator or
 if-match acl 6001

# 流行为
traffic behavior pre-allow
 permit
traffic behavior pre-deny
 deny

# 流量策略:先放通免认证地址,其余拒绝(precedence 小者优先)
traffic policy pre-policy
 share-mode
 classifier pre-allow behavior pre-allow precedence 1
 classifier pre-deny  behavior pre-deny  precedence 2

# 全局入方向应用(对用户组 UCL 生效)
traffic-policy pre-policy inbound

3.7AAA 方案与四个域

设备配置片段左右滑动查看
aaa
 # 允许 HTTP 重定向到 Portal 页面
 http-redirect enable
 # 二层 IPoE 用户以报文 MAC 作"纯用户名",密码统一(MAC 简化认证关键)
 default-user-name include mac-address
 default-password cipher portal
 # 对强制 Web 认证用户的 HTTP 报文做 host CAR,防止 HTTP 报文洪水冲击主控 CPU
 http-hostcar enable

 # 认证方案:MAC 认证(前域使用)
 authentication-scheme mac-radius
  authentication-mode radius
  # MAC 认证失败:不下线,强制转入 Portal 认证前域弹页面
  authening authen-fail online authen-domain portal-pre

 # 认证方案:认证后域使用(MAC / Portal 认证通过后统一走 RADIUS 授权)
 authentication-scheme post-radius
  authentication-mode radius

 # 认证方案:Portal 认证前域使用(不认证)
 authentication-scheme none-scheme
  authentication-mode none
  # 认证通过后从 Portal 认证后域上线
  authening authen-redirect online authen-domain portal-post

 # 计费方案
 accounting-scheme radius-acct
  accounting-mode radius
  accounting realtime 15
 accounting-scheme none-acct
  accounting-mode none

 # ===== ① MAC 认证前域:用户上线先落此域,先用 MAC 向 RADIUS 认证 =====
 domain mac-pre
  authentication-scheme mac-radius
  accounting-scheme none-acct
  radius-server group rd1
  ip-pool pool100
  # 域视图下发 DNS(优先生效于地址池视图;RADIUS 下发优先级最高)
  dns primary-ip 114.114.114.114
  dns second-ip 8.8.8.8
  # 绑定未认证用户组 → 仅可访问 Portal 与 DNS
  user-group pre-grp
  # 使能 MAC 认证(RADIUS 记录 MAC-账号关联,实现二次上线免输入)
  mac-authentication enable

 # ===== ② MAC 认证后域:BAS 接口的认证后域,全权限 + 计费 =====
 domain mac-post
  authentication-scheme post-radius
  accounting-scheme radius-acct
  radius-server group rd1
  ip-pool pool100
  user-group post-grp
  # 闲置切断:10 分钟内业务流量低于阈值即强制下线,及时释放 IP 与在线会话
  # V8 新版本等价写法:idle-cut 10 zero-rate
  idle-cut 10 0

 # ===== ③ Portal 认证前域(重定向域):仅放通 Portal/DNS,弹认证页面 =====
 domain portal-pre
  authentication-scheme none-scheme
  accounting-scheme none-acct
  ip-pool pool100
  # 域视图下发 DNS(用户地址在此域分配,必须能解析域名才能触发重定向)
  dns primary-ip 114.114.114.114
  dns second-ip 8.8.8.8
  user-group pre-grp

  # ---- Web 强制认证服务(HTTP 重定向)----
  # Portal 服务器地址
  web-server 10.0.0.2
  # 强制重定向 URL
  web-server url http://10.0.0.2
  # HTTP 方式:get —— 参数随 URL query string 传递(与 URL 带参需求匹配)
  web-server mode get
  # URL 参数:用户 IP → wlanuserip
  web-server redirect-key user-ip-address wlanuserip
  # URL 参数:用户 MAC → mac,simple=明文,type1=冒号分隔 aa:bb:cc:dd:ee:ff
  web-server redirect-key user-mac-address mac simple type1
  # URL 参数:设备 IP(NAS-IP 10.0.0.1) → basip
  web-server redirect-key mscg-ip basip

  # ---- Portal 强制认证服务(Portal 协议 V2 交互)----
  # Portal 服务器地址与跳转 URL(与 web-server 侧保持一致)
  portal-server 10.0.0.2
  portal-server url http://10.0.0.2
  # Portal 协议重定向报文中的 MAC 参数名,须与 web-server 侧一致
  portal-server redirect-key user-mac-address mac simple

 # ===== ④ Portal 认证后域:Portal 认证通过后全权限 + 计费 =====
 domain portal-post
  authentication-scheme post-radius
  accounting-scheme radius-acct
  radius-server group rd1
  ip-pool pool100
  user-group post-grp
  idle-cut 10 0

 quit

3.8用户业务接口与认证点(按 VLAN 使能)

设备配置片段左右滑动查看
# 用户业务子接口:终结 VLAN 100,认证点即"按 VLAN"生效
interface GigabitEthernet1/0/2.100
 description USER_SERVICE_VLAN100
 vlan-type dot1q 100
 bas
  # 二层普通用户(IPoE);前域=mac-pre(MAC 快速认证),后域=mac-post
  access-type layer2-subscriber default-domain pre-authentication mac-pre authentication mac-post
  # 认证方式:Web(Portal);配合前域 mac-authentication enable 形成 MAC 优先
  authentication-method web
  # 可选:加快用户触发认证(按版本支持情况开启)
  # arp-trigger
  # ip-trigger

3.9网间网出口(VLAN 10 / g1/0/10)与路由

设备配置片段左右滑动查看
# ========== 出口物理口:只承载 VLAN10,不做认证 ==========
interface GigabitEthernet1/0/10
 description TO_Internet_Firewall_100.0.0.254
 # 上行口不启用 bas,避免用户侧流量误入认证流程
 undo shutdown

# ========== 出口子接口:dot1q 终结 VLAN10,与防火墙三层对接 ==========
interface GigabitEthernet1/0/10.10
 description TO_Internet_Firewall_VLAN10
 vlan-type dot1q 10
 # 互连地址;掩码按现场实际,本例按 /24(.254 与 .1 同网段)
 ip address 100.0.0.1 255.255.255.0

# ========== 默认路由 ==========
# 指向上级防火墙;原占位 10.0.0.254 必须删除,否则流量被错误引到服务器网段
# 若此前已配过:undo ip route-static 0.0.0.0 0 10.0.0.254
ip route-static 0.0.0.0 0.0.0.0 100.0.0.254

# 服务器网段 10.0.0.0/24 为直连路由,不受默认路由影响
# 若服务器与 NE40 ME60 BRAS 之间跨网段,需保证回程路由指向 10.0.0.1

# 可选:出口链路 BFD 联动,链路故障秒级感知(对端支持 BFD 时再加)
# ip route-static 0.0.0.0 0.0.0.0 100.0.0.254 bfd all-as

出口配置的 4 个现场确认点

确认项说明配错的现象
掩码需求只给了 100.0.0.1 与网关 100.0.0.254,未给掩码。二者要同网段,/24 是唯一自然解(/30 时 .254 不可达)。若现场实际是 /30+.2,请按实际改接口 UP 但 ping 100.0.0.254 不通、默认路由下一跳为 invalid
VLAN 封装VLAN10 必须是 dot1q 子接口终结,不能只配主接口 IP。对接防火墙的 VLAN 号需两端一致子接口不通,display interface 收包为 0
basip 不要改basip 仍取 10.0.0.1(服务器通信地址),不是出口地址 100.0.0.1Portal 侧按 basip 回连校验设备时匹配失败
radius local-ip 不要改它是 RADIUS/CoA 的本地套接字绑定地址,应绑 10.0.0.1 侧;写成出口地址会导致 DM/CoA 收不到服务器踢线、改带宽全部无效

出口口是否需要 port link-type trunk / undo portswitch 取决于单板形态:NE40 ME60 BRAS 的 GE 口默认工作在三层模式,可直接建 dot1q 子接口(与本文 g1/0/1.500、g1/0/2.100 一致),无需切换二层。若该口已被 portswitch 切成二层口,则先在主接口 port link-type trunk + port trunk allow-pass vlan 10。

3.10OpenPortal 侧对接参数(与本文配置逐项对齐)

设备侧配好只是完成一半,OpenPortal 上有四个页面必须与本文对齐(① 基础对接设置、② NAS 列表、③ 高级扩展、④ 接入账户组)。任一处不一致,表现都是"认证不成功"、"能弹窗但提交后无反应",或"能上线但落错域/账号名不对"。

① Portal 管理 → 基础对接设置(设备对接默认设置)

OpenPortal 字段应填对应本文配置
BAS IP10.0.0.1设备侧 BAS-IP(VLAN 500 接口地址)
BAS端口2000设备侦听端口 → web-auth-server listening-port 2000(服务器往 BRAS 发报文的 UDP 目的端口)
服务器监听端口(Portal 业务端口)50100服务器自身侦听端口 → web-auth-server 10.0.0.2 port 50100(若 OpenPortal 侧不是 50100,以服务器实际值为准,改设备这条)
共享密钥portalweb-auth-server ... key simple portal
设备类型标准 / V2 / CHAPweb-auth-server version v2 v1
公共账号 / 公共密码public / 1qaz2wsx仅"公共账号认证"方式使用,与 MAC / Portal 认证无关
Portal 心跳否设备侧未配心跳,保持关闭
延迟认证关闭—
图 2 Portal 管理 → 基础对接设置
图 2 · Portal 管理 → 基础对接设置点击放大

② Radius 管理 → nas 列表

字段应填说明
名称NE40 ME60 BRAS仅作标识
IP地址10.0.0.1必须等于设备 BAS-IP,否则 OpenPortal 不认这个 NAS
设备类型华为决定用哪套属性字典,HW-* 私有属性靠它才能识别
密钥portal与 radius-server shared-key-cipher portal 一致
COA IP留空或 10.0.0.1留空即默认发往本行「IP地址」字段,也就是 10.0.0.1,与设备 BAS-IP 一致,因此留空可以正常工作(截图状态可用)。若要显式填写,值必须是 10.0.0.1;填成别的地址(例如误填出口地址 100.0.0.1)才会出现"服务器点强制下线无效、改速不生效"
CoA端口3799与 radius-server authorization port 一致
计费间隔300与设备 accounting realtime 15 不冲突(设备每 15s 主动上报)
图 3 Radius 管理 → NAS 列表修改
图 3 · Radius 管理 → NAS 列表修改点击放大

③ 高级扩展(最容易被忽略,直接影响用户名与域)

选项OpenPortal 行为设备侧必须配套
关闭只回标准属性仅标准属性(Filter-Id 等)生效
Mac认证账户MAC 认证后返回该 MAC 关联账户的账户名radius-attribute apply user-name match user-type ipoe(见 8.1);不配则用户名仍是 MAC
华为高级额外返回华为 Domain 属性,取值来自「接入账户组 → 详细信息」字段(见 ④)该值即下发域的来源(见 8.4);目标域必须已在设备上创建
Mac认证账户 + 华为高级两者都返回8.1 与 8.4 需同时配好

从截图看,当前 Server 侧 CoA IP 为空 —— 按 OpenPortal 的取默认逻辑,空值即发往「IP地址」字段 10.0.0.1,与设备 BAS-IP 相同,这一项无需修改;高级扩展为"关闭",若要用"MAC 快速认证后显示真实账号",需在 OpenPortal 选 Mac认证账户,同时设备侧开 8.1 那条命令 —— 两边缺一个都不生效。

④ 接入账户组 → 「详细信息」(华为 Domain 属性的取值来源)

位置:Radius 管理 → 接入账户组 → 接入账户组修改(浏览器标题「接入账户组列表 / 接入账户组修改」,见截图 4)。

图 4 接入账户管理 → 接入账户组列表
图 4 · 接入账户管理 → 接入账户组列表点击放大

只有 ③ 里选了 华为高级 或 Mac认证账户+华为高级,这个字段才有意义 —— 它的值会被填进 RADIUS Access-Accept 的华为 Domain 属性下发,也就是设备侧的切域依据。

字段截图取值说明
区域默认区域账户组归属区域,与域无关
名称默认账户组名称,仅本地标识,不会作为 Domain 下发
首登改密 / 绑定手机 / 邮箱 / 人脸 / 身份证关闭准入校验项,与 Domain 无关
访客授权启用—
默认策略 / 接入策略默认策略 / 不指定本方案只用一套策略,保持默认
每月MAC解绑 / 自注册限制0 / 关闭—
详细信息留空就是下发的 HW-Domain-Name。填 isp1 → Access-Accept 带 Domain=isp1;留空 → 不下发任何 Domain
NAS 列表勾选 是否允许该NAS(10.0.0.1 / NE40 / 华为)账户组只对勾选的 NAS 生效,不勾等于不生效
BAS 列表勾选 是否允许该BAS(10.0.0.1 / 标准 / V2/IMC)同上,漏勾时表现是"配置都对但属性没下发"
图 5 接入账户组修改(Domain 与 NAS / BAS 勾选)
图 5 · 接入账户组修改(Domain 与 NAS / BAS 勾选)点击放大

「详细信息」强烈建议保持留空,不要随手填。

原因:这个值一旦下发,设备就按它去选域,而选域是硬逻辑,填错没有兜底:

设备侧状态填了不存在/未放通的域名的结果
domain isp1 未创建 + 关闭漫游认证失败,该账户组下所有用户上不了线
domain isp1 未创建 + 开启漫游用户落到漫游域,地址池、限速、ACL 全部按漫游域执行,表现为"能上网但 IP 段不对/限速不对"
域已创建但 BAS 接口 permit-domain 未放通认证被拒,display aaa offline-record 里能看到域校验失败原因

本方案只有一个业务域(mac-post / portal-post 由 BAS 接口与 authening 决定),域不由服务器指定,所以这里留空、让设备按本地配置落域才是正确做法。只有确实要做"一号多出口 / VIP 域高带宽"这类按用户分域的场景,才填真实存在的域名,并按 8.4 把目标域的方案、地址池、策略全部建好。

4你提出的命令:逐条判断与解释

4.1总览

命令所属视图作用结论
radius local-ip all系统视图DM/CoA 报文本地地址绑定必须加(否则 CoA/DM 收不到)
radius-server authorization 10.0.0.2 ...系统视图指定授权(DM/CoA)服务器与密钥必须加
web-server redirect-key user-mac-address mac simple type1AAA 域视图URL 传 MAC,冒号格式必须加
portal-server redirect-key user-mac-address mac simpleAAA 域视图Portal 协议侧 MAC 参数名建议加(与 web-server 侧对齐)
http-hostcar enableAAA 视图HTTP 报文 host CAR 防攻击建议加
dns primary-ip / dns second-ipAAA 域视图域级 DNS 下发(优先级高于地址池)建议加(前域必须)
idle-cut 10 0AAA 域视图闲置切断,释放 IP/会话建议加(后域)
web-server mode getAAA 域视图强制 Web 认证的 HTTP 方式建议加(与 URL 带参匹配)
service-policy域/策略组视图EDSG 业务策略(差异化限速计费)不加(本需求用不到)

4.2radius local-ip all —— 你的补充正确,DM/CoA 必须配

  1. 为什么必须: DM/CoA 是 服务器主动发起、发往设备 3799 端口的报文。设备侧只有"被绑定到 RADIUS 使用的本地 UDP 端口(1024~55535)套接字上"的本地 IP 才会接收并处理这类报文。不配置时只能命中默认地址,多接口/多地址场景极易出现"服务器发得出、设备收不到",表现为 Portal 上点强制下线无效、改带宽/改 ACL 不生效。
  2. 三种写法: radius local-ip <ip-address> [ vpn-name ]、radius local-ip any、radius local-ip all(all/any 为等价语义,具体关键字随版本,报错时按 ? 选)。华为文档明确不建议用 any/all,生产上更稳的是精确指定:radius local-ip 10.0.0.1。本例若服务器只往 10.0.0.1 发 DM/CoA,两种写法效果一致;all 的容错性更好(服务器可能用其他目的地址)。
  3. 配套另外两条: radius-server authorization 10.0.0.2 shared-key-cipher portal(谁可以发)+ 端口默认 3799(发到哪)+ 可选 radius-server authorization match-type { any | all }(报文属性与在线用户信息的匹配方式,默认 any 即按优先级取一个属性匹配;若服务器 DM 只带 User-Name,用 all 更严格)。

4.3web-server redirect-key user-mac-address mac simple type1 —— MAC 格式关键

  1. simple:明文携带(不加密)。若改 cipher aes128 ...,还需在 web-server url-parameter shared-key 配密钥、Portal 侧解密,一般不用。
  2. type1:把 MAC 输出格式从默认的 aa-bb-cc-dd-ee-ff 改成 aa:bb:cc:dd:ee:ff,正好满足 xx:xx:xx:xx:xx:xx 的要求。
  3. 不加 type1 时默认输出横杠格式 aa-bb-cc-dd-ee-ff,Portal 侧按冒号解析会直接失败 —— 这是"参数明明带上了,服务器却报 MAC 非法"的典型原因。

4.4portal-server redirect-key user-mac-address mac simple —— 补充正确

  1. web-server 管的是 HTTP 重定向(首包被 302 到 Portal 页面);portal-server 管的是 Portal 协议交互(Portal 服务器与 BRAS 之间的 V2 报文、强制 Portal 服务参数、重定向报文)。两套服务的参数名必须一致。
  2. 只配 web-server 侧:URL 里有 mac,但 Portal 协议侧的重定向报文里没有 mac,用户在 Portal 页面点认证时服务器取不到 MAC。
  3. 你给的写法是 simple(不带 type1),即 Portal 协议侧按默认格式。若 Portal 服务器对该侧的 MAC 也按冒号解析,同样加 type1 即可(语法支持 simple [ type1 ])——建议现场按服务器实际行为抓包确认后二选一。

4.5http-hostcar enable —— 建议加

  1. 位置:AAA 视图。作用:对未认证(强制 Web 认证)用户的 HTTP 报文做 host CAR 限速。
  2. 价值:未认证用户最容易刷大量 HTTP 请求(门户反复刷新、扫描器、脚本攻击),这类报文要上送 CPU 处理,大并发会把主控打满,导致在网用户掉线、认证变慢。属于生产必配项。
  3. 可选微调(slot 视图):http-hostcar cir <cir-value> [ pir ] [ cbs ] [ pbs ],按业务规模设置,默认值一般够用。

4.6dns primary-ip / dns second-ip —— 建议加,前域必须

  1. 位置:AAA 域视图,dns { primary-ip | second-ip } ip-address。
  2. 优先级: RADIUS 下发 > 域视图 > 地址池视图。域视图配了就盖过地址池,两者保持一致最省事(本文同步配 ip pool 的 dns-server)。
  3. 前域为什么必须: 用户认证前访问任意网址,要先解析域名才能触发 HTTP 重定向;前域拿不到 DNS 或 DNS 不可达,就是"网页打不开、也不弹窗"。
  4. 进阶: 若要做"输任何域名都弹 Portal",可在前域把主 DNS 指向设备侧 DNS 并配合 dns-redirect,此时前/后域 DNS 可以不同(前域引导、后域正常)。
  5. 本文只在前域(mac-pre、portal-pre,用户地址在此分配)配置即可。

4.7idle-cut 10 0 —— 建议加(后域)

  1. 含义:用户在 10 分钟内业务流量低于阈值(0 表示完全无流量)即判定闲置,强制下线。
  2. 价值:及时释放 IP、在线会话与 License,避免手机/终端休眠后长期占地址池,校园网/酒店项目常规配置。
  3. 注意:
  4. V8 新版本语法为 idle-cut <分钟> { idle-data <字节> | zero-rate } [ inbound | outbound ];idle-cut 10 0 为老写法,新版本报错时改 idle-cut 10 zero-rate(等价)或 idle-cut 10 idle-data 1024(低于 1KB 也切)。
  5. 只统计用户基本流量,组播与未配 summary 的增值业务流量不计入,对流媒体类业务影响小。
  6. 被切后需重新认证;本方案有 MAC 快速认证,终端再次上网基本无感,影响可控。
  7. 前域可选:加了能更快回收未认证终端占用的地址;不加也可用地址池告警兜底。

4.8web-server mode —— 建议加 get

  1. 位置:AAA 域视图,web-server mode { get | post }:设备强制 Web 认证与 web 服务器交互的 HTTP 方式。get 参数走 URL query string,post 走表单提交。
  2. 本方案明确要求 URL 带参(wlanuserip/mac/basip),与 get 天然匹配;Portal 侧若明确要求 POST 表单再改 post。
  3. 配错的典型现象:认证页面能弹,但提交后"参数丢失 / 白屏 / 一直转圈"。

4.9service-policy —— 不加

  1. service-policy 属于 EDSG(增强动态业务网关)业务策略体系:service-policy <name> edsg 定义策略 → service-policy-group 聚合 → AAA 域下 service-policy-group <name> 绑定,且需 value-added-service enable。
  2. 用途是"按业务流差异化限速/计费"(例:访问校外 10M、访问校内不限速;视频单独计费)。
  3. 本需求只做认证 + 计费 + URL 传参,用不到;加了会引入 EDSG 授权依赖(RADIUS 须下发 EDSG 属性),复杂度上升而收益为零。
  4. 若只要给 Portal 用户限速,用更轻的 QoS 模板方式:
设备配置片段左右滑动查看
# 简单限速:QoS 模板 + 域下绑定(无需 EDSG)
qos-profile 10M
 car cir 10000 cbs 1870000 green pass red discard inbound
 car cir 10000 cbs 1870000 green pass red discard outbound

aaa
 domain mac-post
  qos-profile 10M inbound
  qos-profile 10M outbound
 domain portal-post
  qos-profile 10M inbound
  qos-profile 10M outbound

5其他关键设计说明

5.1认证按 VLAN 还是按端口?

按 VLAN(子接口终结 + bas),理由:

  1. NE40 ME60 BRAS 的认证点是"BAS 接口"级的,g1/0/2.100 子接口终结 VLAN 100 + bas,等价于对整个 VLAN 100 的所有接入端口统一认证策略;
  2. 新增用户端口只需接入交换机放通 VLAN 100,NE40 ME60 BRAS 零改动;
  3. 本例 g1/0/2 只承载 VLAN 100,按端口与按 VLAN 效果一致,但按 VLAN 具备扩展性,是校园/酒店项目主流做法;
  4. 只有"一端口一用户"独享场景才考虑主接口 bas。

5.2免认证放行

  1. Portal 服务器 10.0.0.2:必须放通,否则弹不出认证页;
  2. DNS 114.114.114.114 / 8.8.8.8:必须放通,否则域名解析失败、无法触发重定向;
  3. 其余流量 deny 由前域重定向引导;认证通过后用户组切为 post-grp,不再受该策略限制;
  4. 需放通第三方认证回调(微信/支付宝/短信平台)时,按同样方式加 rule permit ... destination ip-address x.x.x.x 0。

5.3MAC 快速认证优先的实现要点

要素命令作用
MAC 作用户名default-user-name include mac-address二层用户无账号,用 MAC 向 RADIUS 认证
域内使能 MAC 认证mac-authentication enable(mac-pre 域)首次 Portal 认证成功后 RADIUS 记录 MAC-账号关系
失败切域authening authen-fail online authen-domain portal-preMAC 不通过时不下线,转 Portal 页面
触发方式authentication-method web首包触发 Web/Portal 流程

顺序天然"先 MAC 后 Portal":上线即用 MAC 认证,成功即放行(无弹窗),失败才进 Portal 前域。

5.4URL 参数汇总

参数名取值来源配置命令
wlanuserip用户 IPweb-server redirect-key user-ip-address wlanuserip
mac用户 MAC(aa:bb:cc:dd:ee:ff)web-server redirect-key user-mac-address mac simple type1
basip设备侧与服务器通信地址 10.0.0.1web-server redirect-key mscg-ip basip

最终重定向示例: http://10.0.0.2?wlanuserip=192.168.0.20&mac=aa:bb:cc:dd:ee:ff&basip=10.0.0.1

5.5关于后域数量(重点)

NE40 ME60 BRAS 的 BAS 接口在同一 access-type 下只允许指定一个 default-domain authentication(认证后域)。因此:

  1. mac-post 作为接口认证后域:MAC 认证通过的用户从此域上线;
  2. portal-post 作为 Portal 用户独立后域:通过前域认证方案的 authening authen-redirect online authen-domain portal-post 让 Portal 认证通过的用户从该域上线;
  3. 兜底:若现场版本 authen-redirect 行为与预期不一致(Portal 用户仍落 mac-post),业务不受影响(两域授权一致),仅落域名称不同;部署后用 display access-user domain portal-post 核对;
  4. 若要求两域严格独立且授权不同:用 RADIUS 的 HW-Auth-Type(MAC / WEB)在服务器侧区分下发 HW-User-Group、HW-ACL、HW-QoS-Profile,比设备侧拆域更灵活。

5.6出口 NAT 归属(网间网出口必答的问题)

用户地址是私网 192.168.0.0/24,出公网必须做 NAT,但 NAT 只能在一处做,两端同时做会形成双重 NAT(表现为部分应用注册/回连失败、日志里看不到真实源 IP)。

方案NAT 位置NE40 ME60 BRAS 侧动作适用场景
A(推荐)上级防火墙不配 NAT,只配默认路由出口有安全设备、需统一做安全策略与审计;NAT 日志可追溯
BNE40 ME60 BRAS 自身nat address-group + nat outbound无出口安全设备,或需按用户粒度做 NAT/溯源

选 A 时防火墙必须补三条(缺任何一条都会出现"认证通过但打不开网页"):

  1. 源 NAT:192.168.0.0/24 → 防火墙出口公网地址(或 100.0.0.1);
  2. 回程路由:ip route-static 192.168.0.0 255.255.255.0 100.0.0.1;
  3. 安全策略:放通 192.168.0.0/24 到 untrust。

第 2 条是最常被漏的一项——用户能 ping 通自己的网关 192.168.0.1、Portal 也能弹,但所有网站打不开,本质是防火墙不知道 192.168.0.0/24 从哪里回。

选 B 时的配置模板(NE40 ME60 BRAS 接口 NAT 形态):

设备配置片段左右滑动查看
# 地址组:复用出口地址做 PAT
nat address-group nat-egress
 mode pat
 section 0 100.0.0.1 100.0.0.1

# 只对用户网段做 NAT,管理地址与服务器网段不做
acl number 3000
 rule 5 permit ip source 192.168.0.0 0.0.0.255

# 在出口子接口上应用
interface GigabitEthernet1/0/10.10
 nat outbound 3000 address-group nat-egress

版本差异:部分 V8 版本 NAT 需走 nat instance + nat-policy(策略形态),等价逻辑为"源地址 192.168.0.0/24 → source-nat 到 100.0.0.1"。若 nat address-group 在系统视图报错,按 ? 取当前版本关键字。

另:若选 B,则 100.0.0.1 必须是可路由的公网地址;若选 A,100.0.0.1 可以只是私网互联地址,不影响用户上网。

5.7关于 DNS 8.8.8.8 的实际可用性

需求指定 114.114.114.114 + 8.8.8.8,配置已按此下发。需提醒:经国内出口访问 8.8.8.8 往往不通或极慢,用户侧表现为"网页打开要等几秒才出来"(先等主 DNS 超时)。若现场是纯国内出口,建议把备 DNS 换成 223.5.5.5(阿里)或 119.29.29.29(腾讯),前域 ACL 6000 同步放通新地址即可。这一条不影响认证,只影响体验。

6验证与排障

设备配置片段左右滑动查看
# RADIUS 配置与服务器状态(含授权服务器 / DM/CoA 配置)
display radius-server configuration group rd1
display radius-server item

# Portal 服务器配置(输出中核对:本机侦听端口 2000、服务器目的端口 50100)
display web-auth-server configuration
display web-auth-server statistics     # 只发不收 = 对端端口或共享密钥不一致
display udp                            # 核查 2000 / 50100 是否被其他业务占用

# 四个域的上线用户(逐个核对落域)
display access-user domain mac-pre
display access-user domain mac-post
display access-user domain portal-pre
display access-user domain portal-post

# 在线用户总览(IP / MAC / 域 / 接入类型)
display access-user

# 地址池使用情况
display ip pool name pool100

# 认证失败记录
display aaa offline-record all

# ===== 出口与路由核验(新增)=====
# 默认路由必须只有一条有效项,下一跳 100.0.0.254
display ip routing-table 0.0.0.0
# 出口子接口物理/协议均 UP,且出方向有计数增长
display interface GigabitEthernet1/0/10.10
# 用出口地址作源 ping 防火墙,验证二层 VLAN10 与三层连通性
ping -a 100.0.0.1 -c 4 100.0.0.254
# 验证用户到公网(在 NE40 ME60 BRAS 上用用户地址作源,或直接在终端上测)
# ping -a 192.168.0.20 114.114.114.114

# 实时调试(用完务必关闭)
# debugging radius all
# debugging web all
# undo debugging all

常见问题定位

现象排查点
不弹 Portal 页面前域 ACL 是否放通 10.0.0.2 与 DNS;http-redirect enable;dns primary-ip 是否可达;设备侦听 2000 是否被 ACL/防火墙拦截
弹窗后认证一直失败共享密钥(portal)两侧一致;radius-server authorization 地址与密钥;前域是否分到正确 IP
MAC 参数被服务器判非法simple type1 是否配置(默认是横杠格式);Portal 侧解析格式是否一致
所有用户都弹窗(MAC 免认证不生效)default-user-name include mac-address、mac-authentication enable;RADIUS 侧 MAC-账号关联是否已建立
服务器踢线/改带宽无效radius local-ip all(或 radius local-ip 10.0.0.1)+ radius-server authorization + 3799 端口放通
认证成功但上不了网后域用户组/ACL;默认路由下一跳是否为 100.0.0.254;出口 NAT 由谁做(5.6 节)
用户频繁掉线idle-cut 阈值过激;accounting realtime 与服务器超时;链路抖动
出口子接口 UP 但 ping 不通防火墙掩码是否与 .254 同网段;VLAN10 是否两端一致;对端是否允许该网段
认证通过、能 ping 网关、网页全打不开99% 是 NAT 未做 或 防火墙缺 192.168.0.0/24 回程路由(5.6 节)
网页打开要等 3~5 秒备 DNS 8.8.8.8 经国内出口不可达,换 223.5.5.5(5.7 节)
display ip routing-table 里默认路由指向 10.0.0.254旧占位配置未删:undo ip route-static 0.0.0.0 0 10.0.0.254
部分终端能上网、部分不行出口 NAT 池不匹配 / 防火墙会话表满 / 用户组 post-grp 未生效
服务器回了真实用户名,在线名还是 MAC未配 radius-attribute apply user-name match user-type ipoe(IPoE 默认不替换,见 8.1)
下发了用户组但限速/ACL 没生效设备无同名 user-group(display access-user 的 UCL-Group 为空);或分类器未并入唯一那条全局 traffic-policy(见 8.2)
用户没落到服务器指定的域域名靠用户名后缀承载,检查 8.1 是否开启、radius-server coa update username 是否开启、目标域是否已创建(见 8.4)
用户全掉线 / 落到非预期域OpenPortal「接入账户组 → 详细信息」被填了域名,而设备上该域不存在或 permit-domain 未放通。该字段不指定域时必须留空(见 3.10 ④)
Filter-Id 下发后用户上不了线值既不是设备上存在的 ACL 编号、也不是存在的用户组 → 授权失败(不是忽略),见 8.3
Filter-Id 只生效了一条规则报文里多个 Filter-Id 只有最后一个生效;Cisco 风格 xxx in/out 后缀在华为无效

7上线前检查清单

  1. BAS License:license active bas slot X 与实际单板槽位一致;
  2. 命令形态:本文为 V8 语法(radius-server group)。V5/V600R00x 老版本为 radius-server template,web-auth-server/bas 形态亦有差异;其中 web-auth-server listening-port 若在设备上不识别,请在 web-auth-server ? 下确认该版本侦听端口的命令名(早期版本为 web-auth-server port),值为 2000 不变;
  3. radius local-ip:all 与 any 视版本而定,报错时按 ? 选择;生产建议精确到 10.0.0.1;
  4. idle-cut:老写法 idle-cut 10 0,V8 新写法 idle-cut 10 zero-rate;
  5. portal-server 视图:位于 AAA 域视图(与 web-server 同域);
  6. 共享密钥:本文按需求使用 portal,上线建议改 12 位以上强密钥(两侧同步);
  7. MAC 认证安全性:MAC 可伪造,建议 RADIUS 侧做 MAC-账号绑定 + 单账号 MAC 数量限制;
  8. 冗余:Portal/RADIUS 双机时,web-auth-server 可配主备,radius-server authentication 可用两组地址 + weight;
  9. 出口掩码:100.0.0.1/24 是按网关 .254 推断的自然解,上线前必须与现场规划核对;若实际是小掩码网段,ping 100.0.0.254 会不通;
  10. 出口 VLAN 一致性:NE40 ME60 BRAS 侧 vlan-type dot1q 10,防火墙侧子接口/安全区域绑定的 VLAN 必须是 10;
  11. 旧默认路由清理:若设备上已有 ip route-static 0.0.0.0 0 10.0.0.254,务必删除,否则两条默认路由可能负载或错误引流;
  12. NAT 唯一性:确认 NAT 只在防火墙或只在 NE40 ME60 BRAS 做,禁止双端同时做(5.6 节);
  13. 防火墙回程路由:选方案 A 时,防火墙必须有 192.168.0.0/24 → 100.0.0.1 的回程路由;
  14. 地址来源:100.0.0.1 若为运营商分配的互联地址,需确认是否允许做源 NAT;若走方案 A(防火墙 NAT),则无此限制;
  15. OpenPortal 侧对齐(详见 3.10):BAS IP 与 BAS端口、NAS 列表的 IP 与密钥;COA IP 留空时默认发往「IP地址」字段(即 10.0.0.1),无需强制填写,若填写则必须是 10.0.0.1;
  16. Portal 双端端口不能填反:web-auth-server listening-port 2000(设备侦听,等于 OpenPortal 的「BAS端口」)与 web-auth-server 10.0.0.2 port 50100(服务器侦听,设备发报文的目的端口)是两个不同的端口,两边都填同一个值必然失败;
  17. 高级扩展选择:要"MAC 认证后显示真实账号",OpenPortal 选 Mac认证账户,设备侧同时开 radius-attribute apply user-name match user-type ipoe,缺一不生效;
  18. 接入账户组「详细信息」必须留空(除非确实要按域分流):该字段的值就是下发的 HW-Domain-Name。填了域名而设备上没有该域,关闭漫游=认证失败、开启漫游=落到漫游域,两类故障都表现为"用户上不了网"(见 3.10 ④);
  19. 接入账户组的 NAS / BAS 勾选:截图 4 底部两个列表要勾选 10.0.0.1,不勾等于该账户组的属性(含 Domain)不下发;
  20. 终端信息上送:若需求是"RADIUS 里要有浏览器 UA",注意 BRAS 侧做不到(159 属交换机/AC 特性且走计费报文);BRAS 能做到的是 radius-attribute include hw-dhcp-option 12(187,Access-Request),且要求用户经本机 DHCP 取址(见 8.6);
  21. 终端主机名要能显示(截图 5):三件事同时成立 —— ① radius-attribute include hw-dhcp-option 12;② OpenPortal「高级扩展」选华为高级;③ OpenPortal 侧完成 MAC 格式适配(设备缺省 xxxx-xxxx-xxxx 与截图 11:22:33:44:55:66 写法不同,由 OpenPortal 归一化即可,设备侧不要改 31 属性格式)。上线后用一个 Windows 终端验证:display access-user detail 看 31 属性,再到 OpenPortal 页面看是否自动新增该 MAC(见 8.7)。

8RADIUS 授权属性落地专题(用户名 / 用户组 / 域)

这三件事共同点:属性下发只是"带话"给设备,能不能生效取决于设备侧有没有对应配置。华为文档的原文是"RADIUS 服务器下发的属性,只有在设备上有对应配置时才生效"。

8.1用服务器返回的用户名替换本地用户名

结论:需要加一条命令,因为 IPoE 默认不做这件事。

设备配置片段左右滑动查看
radius-server group rd1
 # 对 IPoE 用户启用"用服务器下发的用户名替换设备生成的用户名"
 radius-attribute apply user-name match user-type ipoe
项目说明
所属视图RADIUS 服务器组视图(radius-server group rd1),不是 AAA 视图、也不是域视图
服务器侧要求Access-Accept 里携带标准 1 号属性 User-Name,值即真实账号,如 zhangsan@isp1
默认行为只有 EAP 用户和 RADIUS proxy 用户的用户名会被替换;IPoE 用户默认不替换 —— 这就是"明明服务器回了用户名,设备上还是 MAC"的根本原因
生效范围在线会话的 User-Name、计费报文的 User-Name、日志、CoA/DM 按用户名的匹配

改造后的时序:

设备配置片段左右滑动查看
① 认证请求   User-Name = aabbccddeeff          (本地以 MAC 作用户名)
② Access-Accept   User-Name = zhangsan@isp1    (服务器回真实账号)
③ 设备替换   在线用户 User-Name = zhangsan@isp1
④ 计费 Start  User-Name = zhangsan@isp1        (按真实账号计费)

三个必须注意的坑:

  1. 替换发生在认证成功那一刻,不会触发重新认证,所以它只改"名字",不会因为新名字里带 @域 就自动切域。要切域见 8.4。
  2. 服务器侧关联逻辑可能被打断:如果服务器是用 MAC 建索引做快速认证,而计费按 User-Name 关联,替换后计费报文的用户名从 MAC 变成了真实账号,部分服务器会对不上。上线前务必在测试环境抓 Access-Accept 与计费 Start 两个包核对。
  3. DM 按用户名踢线要单独开:替换后用户名是真实账号,若 DM 报文只带 User-Name,加 radius-server dm-request support username,否则服务器只能按 Acct-Session-Id / Framed-IP 匹配。

另有一个容易混淆的命令:radius-server user-name { domain-included | original }。它管的是发给服务器的用户名里带不带域名(默认 domain-included,带域),与"用服务器下发的用户名替换"是两件事,别混用。

8.2用户组属性:格式与本地策略

属性:HW-Usr-Group-Name,VSA 26-251,String 类型,长度 1~32 字节,取值由字母、数字、下划线组成。

方向位置含义
服务器 → 设备Access-Accept / CoA指定该用户归属的用户组名,设备据此套用组策略

设备收到后,display access-user 里可以看到 UCL-Group 字段被填成该组名。以服务器下发为准,会覆盖域视图下配置的 user-group。

本地要做的三步:

设备配置片段左右滑动查看
# 第一步:组必须存在(名字、大小写必须与服务器完全一致)
user-group vip-grp

# 第二步:用 ACL 以 user-group 为源匹配
acl number 6100
 rule 5 permit ip source user-group vip-grp destination ip-address any

traffic classifier vip-cls operator or
 if-match acl 6100
traffic behavior vip-behavior
 permit
 car cir 50000 cbs 6250000 green pass red discard

# 第三步:并入全局唯一的 inbound 策略
traffic policy pre-policy
 share-mode
 classifier pre-allow    behavior pre-allow    precedence 1
 classifier pre-deny     behavior pre-deny     precedence 2
 classifier vip-cls      behavior vip-behavior  precedence 3

traffic-policy pre-policy inbound

关键工程点:全局 traffic-policy ... inbound 只能挂一条。 新增用户组策略时必须把分类器合并进已有策略,不能再来一条 traffic-policy pre-policy2 inbound —— 后一条要么报错、要么覆盖前一条,表现为"免认证放行突然失效"。

两种更省事的替代方案:

需求做法说明
只做限速服务器下发 HW-QoS-Profile-Name设备侧预建 qos-profile,服务器直接指定模板名,比"组 + ACL + CAR"简单得多
做细粒度 ACL服务器下发 HW-Data-Filter(VSA 26-82)+ aaa 下 remote-download acl enable可动态下发 流分类-流行为 对,最灵活,但配置与排障复杂度最高

组不生效的排查顺序:① 设备上有没有这个组(display access-user 的 UCL-Group 是否为空)→ ② 组名有没有大小写/空格差异 → ③ 分类器有没有并进那条唯一的策略 → ④ 服务器是否同时下发了 HW-Exec-Privilege(管理用户级别属性,会盖掉组)。

补充:除了 HW-Usr-Group-Name,标准 11 号属性 Filter-Id 同样可以下发用户组名(值填组名,ACL 编号找不到时才当组处理)。如果你的服务器只支持标准属性,用 Filter-Id 即可,详见 8.3。

8.3Filter-Id(标准 11 号属性):一个值,三种解析结果

格式:标准属性 11 Filter-Id,类型 String(协议规定为 Text),单值最长 253 字节;华为侧实际取值建议控制在 1~32 字节。

华为对这个属性的解析顺序是固定的,同一个值可能被当成三种东西:

顺序值的形态设备动作
① 先当 ACL 编号3000、3999 这类数字套用设备上预先配好的该编号 ACL 规则
② ACL 编号不存在,再当 用户组名vip-grp 这类字符串套用该用户组关联的 ACL / CAR / VLAN / 优先级
③ 两者都不存在—授权失败(不是忽略)

第③步是最大的坑:ACL 编号写错或用户组没建,结果不是"过滤不生效",而是授权失败。现象很迷惑——认证能过(Access-Accept 正常返回),但用户上不了线或上线即掉线。

三条落地路径

路径 A:授权静态 ACL(Filter-Id = ACL 编号)

设备配置片段左右滑动查看
# 设备侧必须先建好 ACL 及规则,服务器只传一个编号
acl number 3000
 rule 5 permit ip destination 10.0.0.0 0.0.0.255
 rule 10 deny ip

服务器侧填:Filter-Id = 3000

规则全在设备上维护,服务器只负责"选哪一个"。适合规则稳定、按套餐分类的场景;改规则要上设备。

路径 B:授权用户组(Filter-Id = 组名,推荐)

要先说清一个容易混的点:下发用户组可以用两个属性——

属性编号值说明
HW-Usr-Group-Name26-251(私有)组名语义明确,优先推荐
Filter-Id11(标准)组名靠"ACL 编号找不到才当组"的规则生效

两个属性下发的是同一个东西,服务器支持哪个用哪个。路径 B 的设备侧配置与 8.2 完全一致(user-group vip-grp + ACL source user-group + traffic-policy),此处不重复。

为什么优先用组而不是 ACL 编号:ACL 资源有限,用户规模大时"每人一个 ACL"会直接打爆规格;用户组是多个用户复用同一套 ACL,规格上省得多。华为文档给的建议就是"用户权限分类少、在线用户多时用用户组"。

路径 C:动态 ACL(HW-Data-Filter,26-82)

服务器把 ACL 规则本身下发下来,设备不用预配:

设备配置片段左右滑动查看
aaa
 remote-download acl enable

最灵活,规则全在服务器侧管;代价是设备上 display 看不到手工配置,排障时要先想到"这条规则是服务器下发的"。另外它下发的不是"ACL 编号",而是 流分类器-流行为(C-B)对,粒度更细。

四条必须知道的限制

限制说明现场表现
多个 Filter-Id 只有最后一个生效报文里带多个 11 号属性时,设备只取最后一个服务器同时下发 acl-in 和 acl-out,实际只有后面那个起作用
值里含 @ 只取 @ 前vip@isp1 会被截成 vip服务器用"组名@域"拼接,导致组名对不上
长度 1~32 字节用户组名场景组名超长被截断或直接授权失败
不带方向语义华为这里的 Filter-Id 只是一个 ACL / 组标识从 Cisco 风格模板迁过来时最容易踩

第四条要特别提醒:Cisco 体系里 Filter-Id 常见写法是 acl-name in / acl-name out,这个写法在华为上不成立。值会被整体当成组名去找,找不到就授权失败。对接 Cisco 风格的 RADIUS 模板时必须改成纯 ACL 编号或纯组名。

方向怎么控制?不靠属性后缀,靠 ACL 规则本身的 permit / deny 表达;确实要上下行分别精确控制时,用 HW-Data-Filter 下发带方向的 C-B 对。

三条路径怎么选

场景选择理由
规则稳定、按套餐分几类A 静态 ACL 编号简单直观,设备侧可控
用户规模大、权限分类少B 用户组(推荐)复用 ACL,不占规格
规则频繁调整、要服务器统一管C 动态 ACL无需上设备改配置

三者不冲突,可组合:用户组负责带宽/优先级,Filter-Id 或 HW-Data-Filter 负责 ACL,这也是运营商最常见的组合方式。

8.4域属性:格式与本地切域策略

属性:HW-Domain-Name,VSA 26-138,String 类型,长度为域名字符串(不带 @)。

这条属性两个方向都走,但含义不同,不要混:

方向用途
设备 → 服务器告知服务器"用户实际在哪个域认证"。它可能是漫游域、强制域,不一定等于用户名里的域名,所以服务器不能用它反推用户名
服务器 → 设备显式指定用户落哪个域。OpenPortal 侧就是「NAS 列表 → 高级扩展 = 华为高级」+「接入账户组 → 详细信息 = 域名」,值即在此下发

所以设备侧切域有两条路径,可任选其一、也可并用:

路径承载方式适用阶段前置条件
A. 域属性下发HW-Domain-Name(OpenPortal「接入账户组 → 详细信息」)认证阶段,Access-Accept 带下来Access-Accept 里必须有该属性;设备上目标域必须已创建、permit-domain 已放通
B. 用户名带 @域名用户名后缀 user@domain认证阶段(靠 8.1 用户名替换)/ CoA 阶段(靠 radius-server coa update username)服务器回的用户名要带 @域名,或 CoA 报文改用户名
设备配置片段左右滑动查看
# 路径 A:无需额外命令,属性随 Access-Accept 下发即生效;
# 前提是目标域已创建(domain isp1)且 BAS 接口 permit-domain 已放通,否则认证失败。

# 路径 B-1:认证阶段 —— 靠 8.1 的用户名替换,把 @域名 带进来
radius-server group rd1
 radius-attribute apply user-name match user-type ipoe

# 路径 B-2:CoA 阶段 —— 服务器用 CoA 改用户名并切域,必须显式开启
# 华为文档原文:开启允许通过 CoA 报文更新用户名,并根据用户名中携带的域名更新域的功能
radius-server coa update username

OpenPortal 对接补充(取值位置与留空规则)

在 OpenPortal 上,这条下行的 Domain 属性由两处共同决定:

  1. NAS 列表 → 高级扩展 必须选 华为高级(或 Mac认证账户+华为高级),否则根本不回这个属性;
  2. 接入账户组 → 详细信息 填的就是要下发的域名(见 3.10 第 ④ 节)。

所以「详细信息」留空 = 不下发 Domain,设备按本地配置落域;填了 isp1 = Access-Accept 带 Domain=isp1,设备按它选域。默认应留空,不要随手填写——域不存在或未放通时,关闭漫游会直接认证失败,开启漫游会落到漫游域(策略全不匹配),这两种现象在现场都表现为"用户上不了网",但排查方向完全不同。

另外,华为文档对域来源的表述是"AAA 服务器下发 > BRAS 本地配置 > 运营商分配",但该属性在各版本 Access-Accept 中的处理方式不完全一致,上线前建议抓包确认实际下发的属性号(标准 26-138 或厂商自定义),并确认目标域已在设备上创建、permit-domain 已放通。若服务器侧确实不回该属性(或抓不到),走路径 B:"用户名带 @域名"(8.1 的用户名替换)。

域来源的优先级(华为文档明确):AAA 服务器下发 > BRAS 本地配置 > 运营商分配。 也就是说服务器确实能让用户落到不同域:既可以用域属性(路径 A),也可以用用户名后缀(路径 B)。同一场景下两者都存在时,以服务器实际下发的为准,上线时抓一次 Access-Accept 就能确认走的是哪条。

本地必须配套的几件事:

事项配置说明
目标域必须存在domain isp1 等域不存在时:关闭漫游则认证失败,开启漫游则落漫游域
每域独立策略域下绑 authentication-scheme / accounting-scheme / radius-server group / ip-pool / qos-profile / user-group这才是"按域做策略"的真正含义——同一台设备按域给不同出口、不同限速、不同地址池
域白名单BAS 接口下 permit-domain(语法随版本,配置前用 ? 确认)防止服务器下发任意域导致用户落到未预期域,属于安全加固
域跳转authening authen-fail online authen-domain / authening authen-redirect online authen-domain本文 3.7 已用于前域→后域跳转

典型用法:isp1 / isp2 两个域分别绑不同 RADIUS 组与不同出口策略,实现"一号多出口";vip 域绑高带宽 qos-profile;guest 域绑受限 ACL。

8.5属性速查表

属性名VSA类型 / 长度方向本地对应配置
User-Name标准 1String ≤253服务器→设备radius-attribute apply user-name match user-type ipoe
Filter-Id标准 11String/Text ≤253(建议 ≤32)服务器→设备预配 ACL 编号,或 user-group+traffic-policy;二者都没有则授权失败
HW-Usr-Group-Name26-251String 1~32服务器→设备user-group + ACL(source user-group) + traffic-policy
HW-Domain-Name26-138String主方向 设备→服务器;下行时用于选域上行无需配置,随报文上送;下行由 OpenPortal「高级扩展=华为高级」+「接入账户组→详细信息」提供,该字段留空即不下发,目标域须已创建并放通(8.4)
HW-Data-Filter26-82—服务器→设备aaa 下 remote-download acl enable
HW-QoS-Profile-Name—String服务器→设备设备预建 qos-profile
HW-Access-Service26-83String服务器→设备设备预建 access-service 业务模板
HW-Exec-Privilege26-29Integer服务器→设备管理用户级别,配了会盖掉用户组
HW-Dhcp-Option26-187String设备→服务器(Access-Request)radius-attribute include hw-dhcp-option 12(取主机名,见 8.7);需要终端指纹再加 60,见 8.6.2
HW-HTTP-UA26-159String ≤247设备→服务器(计费报文)NE40 ME60 BRAS 不支持:属交换机/AC 的 NAC 特性,需 http parse user-agent enable(见 8.6.1)

服务器侧必须先导入华为 RADIUS 属性字典,否则它不认识 HW-Usr-Group-Name 这类私有属性,会直接丢弃。

8.6终端信息上送:报文里能带什么、带不了什么

先说结论:NE40 ME60 BRAS 侧没有"把浏览器 User-Agent 塞进 RADIUS 报文"的开关。 想在 Access-Request 的 Vendor-Specific 里看到 UA,光靠设备配置做不到,原因见下。

8.6.1 承载 UA 的属性:HW-HTTP-UA(26-159)

项目内容
属性名HW-HTTP-UA,华为扩展属性 159,String,最大 247 字节
内容HTTP 报头里的 UA 字段:操作系统及版本、CPU 类型、浏览器类型及版本、语言、插件
出现报文RADIUS 计费报文(Accounting-Request),不是认证请求
触发命令http parse user-agent enable(系统视图,缺省关闭)
配套属性HW-Terminal-Type(157,识别后的终端类型)、HW-Dhcp-Option(158)、HW-LLDP(163)、HW-CDP(164)

这里有三个必须说清的点,否则配置方向会完全跑偏:

① 这条命令不在 BRAS 的接入特性里。 http parse user-agent enable 属于华为交换机 / AC 的 NAC 终端类型感知特性(官方描述是 "the AC extracts the UA field")。NE40 ME60 BRAS 的「配置 RADIUS 报文属性携带」命令族(radius-attribute include ...)里没有 UA / 终端类型的选项,可选项只有 hw-dhcp-option、hw-dhcpv6-option、hw-web-url、hw-vpn-instance、hw-user-mac、hw-gateway-address 这些。所以:

设备配置片段左右滑动查看
# 现场一行验证:能补全就支持,报 Unrecognized 就是不支持
http parse user-agent enable ?

② 它走计费报文,不走认证报文。 即使设备支持,UA 也是随 Accounting-Request 上送(因为 UA 要等用户发第一个 HTTP Get 才拿到,而认证早已结束)。如果你盯着 Access-Request 抓包找 UA,永远找不到 —— 这是这类需求最常见的误判。

③ UA 只对明文 HTTP 可见。 HTTPS 门户、HSTS 站点、非浏览器客户端都拿不到 UA。设备侧只解析 HTTP Get,POST 或其他方法也不处理。

8.6.2 BRAS 上真正能做到的:HW-Dhcp-Option(26-187)

在 Access-Request 里携带终端指纹,NE40 ME60 BRAS 支持的是这条路 —— 用 DHCP Option 反推终端:

Option内容终端识别价值
12主机名最高,如 DESKTOP-8H3K2L1、iPhone、HUAWEI-P40
60Vendor Class ID高,如 MSFT 5.0、android-dhcp-13、HUAWEI
61Client ID中,部分终端带厂商特征
55参数请求列表高,不同 OS 请求的参数集合不同,可作指纹
82线路 ID(relay 信息)定位接入位置,不是终端
设备配置片段左右滑动查看
radius-server group rd1
 # 在 Access-Request 中携带 DHCP Option 12 / 55 / 60 / 61(可一次写多个)
 radius-attribute include hw-dhcp-option 12 55 60 61

前置条件(缺一条就收不到 Option):

  1. 用户通过 DHCP 获取地址,且 DHCP 报文经过本机(本方案是 ip pool pool100 本地分配,满足);
  2. 静态 IP 用户、或 DHCP 由旁挂服务器分配且报文不经 BRAS,则没有 Option 可上送;
  3. 属性号注意版本差异:NE40 ME60 BRAS 是 187,交换机/AC 上是 158,两者不通用;
  4. 服务器侧要能解析这个"打包多条 Option 的 VSA",OpenPortal 若只做展示,通常需要按 187 的结构解析。

另外若需要上送访问 URL,NE40 ME60 BRAS 还有 radius-attribute include hw-web-url accounting-request(计费报文带 URL),但这也不是 UA,且属于增值业务/审计范畴,本方案未启用。

8.6.3 如果一定要 UA,三条可行路径

路径做法代价
A. Portal 服务器采集(首选)OpenPortal 本来就在 HTTP 层接收浏览器请求,UA 天然在它手里。由它在自己的 RADIUS 报文里填充 VSA需 OpenPortal 侧支持自定义属性;与设备配置无关,最省事
B. 接入交换机上送若用户经华为 S 系列接入,在交换机上 http parse user-agent enable,由它上送 159只覆盖该交换机下的用户;交换机需能看到 HTTP 报文
C. 前置代理/审计设备由上网行为管理、SSL 网关采集额外设备与成本

结论一句话:BRAS 只能上送"它能看见的东西" —— DHCP Option(187)、MAC、VLAN、接入端口、URL(计费报文);浏览器 UA 属于 HTTP 层,设备侧看不到也带不出,只能由 HTTP 层的一方(Portal / 接入交换机 / 代理)提供。

8.6.4 验证

设备配置片段左右滑动查看
# 确认 include 是否生效(会列出已 include 的属性)
display radius-server configuration group rd1
# 实时看 Access-Request 里带了哪些 VSA(用完关闭)
# debugging radius all
# undo debugging all

抓包判读:HW-Dhcp-Option(187) 应是 Vendor-Id 2011、Vendor-Type 187,值里按 option-code + length + value 依次排列;如果看到 26-159 出现在 Accounting-Request 里,说明是别的接入设备(交换机/AC)上送的,不是 BRAS。

8.7终端主机名识别:Option 12 → OpenPortal「终端主机名管理」

8.7.1 截图 5 是什么

OpenPortal 的「终端主机名管理」是一张 MAC 标识 → 终端主机名 的映射表:

MAC 标识终端主机名
11:22:33:44:55:66Huawei-Mate40Pro
66:55:44:33:22:11Xiaomi12
11:22:33:44:55:55Oppo-FindX5Pro

这张表的数据来源就是本节要讲的链路:BRAS 在认证请求里上送 DHCP Option 12,OpenPortal 解析出来,以 MAC 为键落库。它是"自动学习 + 可手工修正"的映射表——自动学到的可能不准(用户自己改主机名),所以页面才提供了新增/编辑/删除(截图右上角三个按钮)。

图 6 Portal 管理 → 终端主机名管理
图 6 · Portal 管理 → 终端主机名管理点击放大

8.7.2 数据从 BRAS 流到这张表的完整路径

设备配置片段左右滑动查看
终端 DHCP Discover / Request
   └─ Option 12 = "Huawei-Mate40Pro"      ← 主机名由终端自己填,不是设备生成的
        ↓
BRAS 本地 DHCP 池(ip pool pool100)分配 192.168.0.x,同时缓存 Option 12
        ↓
BRAS 发起 RADIUS Access-Request
   └─ VSA 26-187(HW-Dhcp-Option),值 = 0C 12 "Huawei-Mate40Pro"
        │                                  ↑ option-code=12, length=18, 后面 ASCII
        ↓
OpenPortal(「高级扩展」= 华为高级 时才解析该属性)
        ↓
按 MAC 建立索引 → 写入「终端主机名管理」

这里有个容易被忽略的价值点:MAC 快速认证的第一个 Access-Request 就同时带上了 MAC、IP 和主机名,也就是说用户还没打开浏览器、页面还没弹出来,OpenPortal 已经知道这台机器叫什么了。这与"MAC 优先、免弹窗"的体验是天然匹配的。

8.7.3 BRAS 侧需要的命令

核心只有一条,位置在 RADIUS 服务器组视图:

设备配置片段左右滑动查看
radius-server group rd1
 # 【核心】认证请求报文中携带 DHCP Option,12 = 主机名(Host Name)
 # 这是 HW-Dhcp-Option(26-187) 的唯一开关,不配则 OpenPortal 收不到任何 option
 radius-attribute include hw-dhcp-option 12

为什么只写 12,不写 12 55 60 61:

HW-Dhcp-Option 是一个 RADIUS 属性(26-187),里面把多个 DHCP option 按 code + length + value 串起来打包。RADIUS 单个属性的长度上限是 253 字节,而 Option 55(参数请求列表)在不同终端上长度差异极大,部分终端能到 40 字节以上。一次性把 12 55 60 61 全塞进去,最容易出现的结果是排在后面的 option 被截断,而 Option 12 恰好排在最前——一旦顺序或终端差异导致它不在首位,主机名就丢了。

所以取主机名时只写 12;确实还需要终端指纹,再单独加 60(Vendor Class ID)并观察长度。display radius-server configuration group rd1 可以确认最终 include 了哪些。

8.7.4 MAC 格式:由 OpenPortal 侧适配,设备侧保持缺省

截图里的 MAC 是 11:22:33:44:55:66(冒号、6 组 2 位),而设备 31 号属性 Calling-Station-Id 的缺省格式是 xxxx-xxxx-xxxx(华为 4-4-4 横杠、小写)。两者写法不同,但不需要在 BRAS 上改:

OpenPortal 自身支持 MAC 格式适配 —— 它能识别冒号 / 横杠 / 点分 / 无分隔等常见写法并归一化后再做关联。所以设备侧保持缺省,前面 8.7.3 那一条 radius-attribute include hw-dhcp-option 12 就是全部配置。

这一点很关键,因为 calling-station-id mac-format 改的是整个 RADIUS 组的 31 属性格式,影响面是全局的:

影响对象后果
计费报文计费与认证的 MAC 写法必须一致,老话单里的 MAC 是新格式,对不上历史数据
其他按 MAC 匹配的系统上网行为管理、审计、IP-MAC 绑定表等若按固定格式解析,会解析失败
多服务器共用一组一个组里挂了多台服务器,改格式对它们同时生效

所以原则是:服务器能适配就不动设备,把差异留在服务器侧,设备侧保持厂商缺省值,最省事也最不容易连带影响别的系统。

只有当 OpenPortal 明确不支持某种写法时,才在设备侧兜底(这一条默认不加,先问清 OpenPortal 侧支持哪些格式):

设备配置片段左右滑动查看
radius-server group rd1
 # 【可选,默认不加】把 31 属性 Calling-Station-Id 的 MAC 改成 XX:XX:XX:XX:XX:XX
 # 仅在 OpenPortal 无法识别设备缺省的 xxxx-xxxx-xxxx 时才需要
 # 注意:该命令作用于整个 RADIUS 组,认证与计费报文同时改变,会影响按固定格式解析的下游系统
 # calling-station-id mac-format colon-split mode2

命令视图差异:calling-station-id mac-format 在 V5/V600 时代位于 radius-server template 视图,V8 移到 radius-server group 视图;配置前用 ? 确认。

同理,本方案 default-user-name include mac-address 生成的纯用户名本身就是 MAC,若 OpenPortal 的「MAC标识」取的是 User-Name 而不是 31 属性,也应由 OpenPortal 侧适配,而不是改设备的用户名分隔符 —— 改 User-Name 会影响服务器侧按 MAC 建账号的匹配。

8.7.5 三条前提(缺一条就没有主机名)

前提不满足时的现象
用户经本机 DHCP 取址(本方案 ip pool pool100 bas local,BRAS 自身即 DHCP 服务器)静态 IP 用户、或 DHCP 由旁挂服务器分配且报文不经本机 → 187 里根本没有 option 12
终端主动上报 Option 12Windows / macOS / iOS 基本都带;部分安卓(尤其定制 ROM)不带 → 该 MAC 在表里没有主机名,只能在页面上手工补录
认证前域与后域都引用同一个 RADIUS 组 rd1本方案已满足(mac-pre/mac-post/portal-post 均引用 rd1);若只在一个域引用,另一类用户就永远没有 187

8.7.6 验证

设备配置片段左右滑动查看
# ① 配置是否真的 include 上了(会列出 include 的属性清单)
display radius-server configuration group rd1

# ② 看 Access-Request 里 187 的实际内容(用完关闭)
# debugging radius all
# undo debugging radius all

# ③ 用户上线后核对在线会话(User-Name / MAC / 授权结果)
display access-user detail

判读技巧:HW-Dhcp-Option 的值是一串十六进制。看到 0C 12 48 75 61 77 65 69 ... 就对了 —— 0C 是 option 12,12(十进制 18)是长度,后面 48 75 61 77 65 69 就是 Huawei 的 ASCII。如果只有 0C 00(长度为 0)或者直接跳到下一个 option code,说明终端没填主机名,不是设备没送。

8.7.7 边界与注意

  1. 只能用于识别,不能直接当授权条件。 主机名是终端自己声明的,可伪造、可随时改;真要按它做策略,必须先映射到用户组或 Filter-Id(见 8.2 / 8.3),并在服务器侧做白名单校验。
  2. 改名有滞后。 用户改完计算机名,要等下次 DHCP 续租(或重新上线)才会更新到表里。
  3. 长度限制。 DHCP Option 12 最长 63 字节;超长会被终端自己截断。中文主机名按原样透传,OpenPortal 展示可能乱码。
  4. 随机 MAC 会撑大表。 手机开启"随机 MAC"后每次关联网卡地址都变,建议在 OpenPortal 侧给这张表设老化时间,否则记录会无限增长。
  5. 和 8.6.1 的 UA 区分开。 这里拿到的是主机名(DHCP 层,认证报文里就有),不是浏览器 UA(HTTP 层,BRAS 拿不到)。

附占位符一览(现场替换)

占位符本文取值说明
10.0.0.2Portal / RADIUS 服务器按现场替换
10.0.0.1NE40 ME60 BRAS 对接地址(BAS-IP)按现场替换
portal共享密钥按现场替换(建议强密钥)
2000BRAS 侦听 Portal 报文的 UDP 端口(OpenPortal 的「BAS端口」)缺省 2000,非必要不改
50100Portal 服务器侦听 UDP 端口(设备发报文的目的端口)按服务器实际端口替换
slot 1BAS License 槽位按单板实际槽位替换
100.0.0.1网间网出口本地地址(g1/0/10.10)已按要求配置,掩码待现场确认
100.0.0.254上级防火墙网关(默认路由下一跳)已按要求配置
10网间网出口 VLAN已按要求配置
192.168.0.0/24用户网段已按要求配置

附 B完整配置脚本(设备侧汇总版)

下面是设备侧配置的汇总版,与第 3 章逐段配置一致,只是去掉了分段说明、按 # ---------- 小节 ---------- 归类,便于在设备上一个 system-view 后整段粘贴;# 开头的行是注释,不执行。

设备配置片段左右滑动查看
# =============================================================
# 华为 NE40 ME60 BRAS 对接 OpenPortal —— Portal + RADIUS 认证配置(MAC 快速认证优先)
# 场景:二层普通用户(IPoE) + MAC 快速认证优先 + Portal 认证 + 网间网出口
# 版本:NE40 ME60 BRAS(华为 NE40E / NE40E-M / NE40E-F 与 ME60),V8 平台(V800R011C10 及以上)
# 四域:mac-pre / mac-post / portal-pre / portal-post
# 修订:V1.1 增加 radius local-ip all、simple type1、portal-server、http-hostcar、dns、idle-cut 等
# 修订:V1.2 增加网间网出口 VLAN10(g1/0/10 子接口 100.0.0.1,网关 100.0.0.254)+ 默认路由修正
# 修订:V1.3 增加 RADIUS 下发属性落地(用户名替换 / 用户组 / 域 / Filter-Id)
# 修订:V1.5 纠正 Portal 端口语义:2000=BRAS 侦听端口(OpenPortal 的 BAS端口),50100=Portal 服务器侦听端口
# 修订:V1.7 补充 HW-Domain 属性来源:OpenPortal「接入账户组→详细信息」,不指定域时必须留空
# 修订:V1.8 新增 13.5:UA(159) 为交换机/AC 特性、走计费报文,BRAS 不支持;BRAS 可上送 HW-Dhcp-Option(187)
# 修订:V1.9 新增 13.6:终端主机名识别(Option 12 + OpenPortal 终端主机名管理)
# 修订:V1.10 纠正 MAC 格式结论:写法差异由 OpenPortal 侧自适应,设备侧不改 calling-station-id mac-format
# 对接:OpenPortal(BAS IP 10.0.0.1、BAS端口 2000、服务器 Portal 端口 50100、密钥 portal、设备类型 华为、CoA 3799)
# =============================================================

# ---------- 0. 设备基础 ----------
sysname NE40-ME60-BRAS

# BAS 业务授权(二层普通用户接入必需,槽位号按单板实际位置填写)
license
 active bas slot 1

# 业务 VLAN(子接口 dot1q 终结方式下非必需,保留便于二层口扩展)
# 10=网间网出口  100=用户业务  500=服务器互联
vlan batch 10 100 500

# ---------- 1. 服务器互联接口(VLAN 500 / g1/0/1)----------
# 与 Portal、RADIUS 服务器互联的三层子接口,该地址即 BAS-IP / NAS-IP
interface GigabitEthernet1/0/1.500
 description TO_Portal_RADIUS_Server_10.0.0.2
 vlan-type dot1q 500
 ip address 10.0.0.1 255.255.255.0

# ---------- 2. 网间网出口(VLAN 10 / g1/0/10)----------
# 出口物理口:只承载 VLAN10,不做认证,禁止用户从此口上线
interface GigabitEthernet1/0/10
 description TO_Internet_Firewall_100.0.0.254
 # 上行口不启用 bas,避免用户侧流量误入认证流程
 undo shutdown

# 出口子接口:dot1q 终结 VLAN10,与上级防火墙三层对接
interface GigabitEthernet1/0/10.10
 description TO_Internet_Firewall_VLAN10
 vlan-type dot1q 10
 # 与防火墙互联地址;掩码按现场实际,本例按 /24(网关 .254 与本地 .1 同网段)
 # 若现场为 /30 等小掩码,必须确认 .254 确在同网段,否则默认路由不可达
 ip address 100.0.0.1 255.255.255.0

# ---------- 3. RADIUS 服务器组 ----------
radius-server group rd1
 radius-server type standard
 # 认证 / 计费服务器
 radius-server authentication 10.0.0.2 1812 weight 0
 radius-server accounting 10.0.0.2 1813 weight 0
 # 共享密钥,与 RADIUS / Portal 服务器一致
 radius-server shared-key-cipher portal
 # 超时与重传
 radius-server retransmit 3
 radius-server timeout 5
 # 认证请求携带认证类型属性,便于服务器区分 MAC 认证 / Portal 认证用户
 radius-attribute include HW-Auth-Type

# ---------- 4. RADIUS DM / CoA 三件套 ----------
# 【1/3】允许本机地址作为 RADIUS 报文(含 CoA/DM)的本地地址
# DM/CoA 是服务器主动发往设备 3799 端口的报文,只有被纳入 RADIUS socket 的本地地址才能接收
# 安全起见生产可精确指定:radius local-ip 10.0.0.1
# 注意:此处绑定的是 10.0.0.0/24 侧地址,与出口 100.0.0.1 无关,不要写成出口地址
radius local-ip all

# 【2/3】允许 10.0.0.2 作为 RADIUS 授权服务器(DM 强制下线 / CoA 动态改授权),仅放通该地址
radius-server authorization 10.0.0.2 shared-key-cipher portal

# 【3/3】授权服务器端口,默认 3799,一般不修改,列出备查
# radius-server authorization port 3799

# ---------- 5. Portal 服务器 ----------
# 【设备侧侦听端口】本机侦听 Portal 协议报文的 UDP 端口,缺省 2000
# 对应 OpenPortal「设备对接默认设置 → BAS端口」= 2000,服务器往 BRAS 发报文的目的端口
web-auth-server listening-port 2000
# 【服务器侧目的端口】设备发往 Portal 服务器的目的 UDP 端口,缺省 50100,key 与服务器一致
# 对应 OpenPortal 服务器自身侦听 Portal 业务的 UDP 50100 —— 注意不是 BAS端口,两个端口不同
web-auth-server 10.0.0.2 port 50100 key simple portal
# 协议版本:优先 V2,兼容 V1
web-auth-server version v2 v1
# 使能 Portal 功能
web-auth-server enable

# ---------- 6. 用户地址池(192.168.0.0/24,DHCP 下发)----------
ip pool pool100 bas local
 gateway 192.168.0.1 255.255.255.0
 section 0 192.168.0.2 192.168.0.254
 # 用户 DNS(与域视图 dns primary-ip 保持一致,域视图优先)
 dns-server 114.114.114.114 8.8.8.8

# ---------- 7. 用户组 + 免认证放行 ----------
# 未认证用户组(认证前域使用)
user-group pre-grp
# 认证通过用户组(认证后域使用;如需限速/ACL 在此挂策略)
user-group post-grp

# 免认证放行:Portal 服务器地址 + 用户 DNS
acl number 6000
 rule 5 permit ip source user-group pre-grp destination ip-address 10.0.0.2 0
 rule 10 permit ip source user-group pre-grp destination ip-address 114.114.114.114 0
 rule 15 permit ip source user-group pre-grp destination ip-address 8.8.8.8 0

# 未认证用户的其余流量:拒绝(由前域重定向引导到 Portal 页面)
acl number 6001
 rule 5 permit ip source user-group pre-grp destination ip-address any

# 流分类
traffic classifier pre-allow operator or
 if-match acl 6000
traffic classifier pre-deny operator or
 if-match acl 6001

# 流行为
traffic behavior pre-allow
 permit
traffic behavior pre-deny
 deny

# 流量策略:先放通免认证地址,其余拒绝
traffic policy pre-policy
 share-mode
 classifier pre-allow behavior pre-allow precedence 1
 classifier pre-deny  behavior pre-deny  precedence 2

# 全局入方向应用(对用户组 UCL 生效)
traffic-policy pre-policy inbound

# ---------- 8. AAA 方案与四个域 ----------
aaa
 # 允许 HTTP 重定向到 Portal 页面
 http-redirect enable
 # 二层 IPoE 用户以报文 MAC 作"纯用户名",密码统一(MAC 简化认证关键)
 default-user-name include mac-address
 default-password cipher portal
 # 对强制 Web 认证用户的 HTTP 报文做 host CAR,防止 HTTP 报文洪水冲击主控 CPU
 http-hostcar enable

 # 认证方案:MAC 认证(前域使用)
 authentication-scheme mac-radius
  authentication-mode radius
  # MAC 认证失败:不下线,强制转入 Portal 认证前域弹页面
  authening authen-fail online authen-domain portal-pre

 # 认证方案:认证后域使用(MAC / Portal 认证通过后统一走 RADIUS 授权)
 authentication-scheme post-radius
  authentication-mode radius

 # 认证方案:Portal 认证前域使用(不认证)
 authentication-scheme none-scheme
  authentication-mode none
  # 认证通过后从 Portal 认证后域上线
  authening authen-redirect online authen-domain portal-post

 # 计费方案
 accounting-scheme radius-acct
  accounting-mode radius
  accounting realtime 15
 accounting-scheme none-acct
  accounting-mode none

 # ===== ① MAC 认证前域:用户上线先落此域,先用 MAC 向 RADIUS 认证 =====
 domain mac-pre
  authentication-scheme mac-radius
  accounting-scheme none-acct
  radius-server group rd1
  ip-pool pool100
  # 域视图下发 DNS(优先级高于地址池;RADIUS 下发优先级最高)
  dns primary-ip 114.114.114.114
  dns second-ip 8.8.8.8
  # 绑定未认证用户组 → 仅可访问 Portal 与 DNS
  user-group pre-grp
  # 使能 MAC 认证(RADIUS 记录 MAC-账号关联,实现二次上线免输入)
  mac-authentication enable

 # ===== ② MAC 认证后域:BAS 接口的认证后域,全权限 + 计费 =====
 domain mac-post
  authentication-scheme post-radius
  accounting-scheme radius-acct
  radius-server group rd1
  ip-pool pool100
  user-group post-grp
  # 闲置切断:10 分钟内业务流量低于阈值即下线,及时释放 IP 与会话
  # V8 新版本等价写法:idle-cut 10 zero-rate
  idle-cut 10 0

 # ===== ③ Portal 认证前域(重定向域):仅放通 Portal/DNS,弹认证页面 =====
 domain portal-pre
  authentication-scheme none-scheme
  accounting-scheme none-acct
  ip-pool pool100
  # 域视图下发 DNS(用户地址在此域分配,必须能解析域名才能触发重定向)
  dns primary-ip 114.114.114.114
  dns second-ip 8.8.8.8
  user-group pre-grp

  # ---- Web 强制认证服务(HTTP 重定向)----
  # Portal 服务器地址
  web-server 10.0.0.2
  # 强制重定向 URL
  web-server url http://10.0.0.2
  # HTTP 方式:get —— 参数随 URL query string 传递(与 URL 带参需求匹配)
  web-server mode get
  # URL 参数:用户 IP → wlanuserip
  web-server redirect-key user-ip-address wlanuserip
  # URL 参数:用户 MAC → mac;simple=明文,type1=冒号格式 aa:bb:cc:dd:ee:ff
  web-server redirect-key user-mac-address mac simple type1
  # URL 参数:设备 IP(NAS-IP 10.0.0.1) → basip
  # 注意:basip 必须取 10.0.0.1,不能取出口地址 100.0.0.1
  web-server redirect-key mscg-ip basip

  # ---- Portal 强制认证服务(Portal 协议 V2 交互)----
  # Portal 服务器地址与跳转 URL(与 web-server 侧保持一致)
  portal-server 10.0.0.2
  portal-server url http://10.0.0.2
  # Portal 协议重定向报文中的 MAC 参数名,须与 web-server 侧一致
  # 若该侧也需冒号格式,可加 type1:portal-server redirect-key user-mac-address mac simple type1
  portal-server redirect-key user-mac-address mac simple

 # ===== ④ Portal 认证后域:Portal 认证通过后全权限 + 计费 =====
 domain portal-post
  authentication-scheme post-radius
  accounting-scheme radius-acct
  radius-server group rd1
  ip-pool pool100
  user-group post-grp
  idle-cut 10 0

 quit

# ---------- 9. 用户业务接口与认证点(按 VLAN 使能)----------
# 用户业务子接口:终结 VLAN 100,认证点即"按 VLAN"生效
interface GigabitEthernet1/0/2.100
 description USER_SERVICE_VLAN100
 vlan-type dot1q 100
 bas
  # 二层普通用户(IPoE);前域=mac-pre(MAC 优先),后域=mac-post
  access-type layer2-subscriber default-domain pre-authentication mac-pre authentication mac-post
  # 认证方式:Web(Portal);配合前域 mac-authentication enable 形成 MAC 优先
  authentication-method web
  # 可选:加快认证触发(按版本支持情况开启)
  # arp-trigger
  # ip-trigger

# ---------- 10. 路由 ----------
# 默认路由指向上级防火墙(原占位 10.0.0.254 必须删除,避免错误引流)
# 若此前已配过:undo ip route-static 0.0.0.0 0 10.0.0.254
ip route-static 0.0.0.0 0.0.0.0 100.0.0.254

# 服务器网段 10.0.0.0/24 为直连路由,不受默认路由影响(无需额外静态路由)
# 若服务器与 NE40 ME60 BRAS 之间跨网段,需保证回程路由指向 10.0.0.1

# 可选:出口链路 BFD 联动,链路故障秒级切换(按对端是否支持 BFD 决定)
# ip route-static 0.0.0.0 0.0.0.0 100.0.0.254 bfd all-as

# ---------- 11. NAT 归属(二选一,切勿两端同时做)----------
# 【方案 A:NAT 在上级防火墙做(推荐,出口安全设备统一管控)】
# 本机不配任何 NAT,但必须确认防火墙侧三项:
#   ① 源 NAT:192.168.0.0/24 → 防火墙出口公网地址(或 100.0.0.1)
#   ② 回程路由:ip route-static 192.168.0.0 255.255.255.0 100.0.0.1
#      —— 缺这条的典型现象:认证通过、能 ping 通网关,但打不开网页
#   ③ 安全策略放通 192.168.0.0/24 至 untrust 区域
#
# 【方案 B:NAT 在 NE40 ME60 BRAS 上做(出口地址为公网时可如此)】
# nat address-group nat-egress
#  mode pat
#  section 0 100.0.0.1 100.0.0.1
# acl number 3000
#  rule 5 permit ip source 192.168.0.0 0.0.0.255
# interface GigabitEthernet1/0/10.10
#  nat outbound 3000 address-group nat-egress
# 说明:NE40 ME60 BRAS 若为 V8 新版本 NAT 实例/策略形态,等价改写为
#   nat instance / nat-policy + source-nat,报错时按 "?" 取当前版本关键字

# ---------- 12. 可选:用户限速(不需要 EDSG,用 qos-profile 即可)----------
# qos-profile 10M
#  car cir 10000 cbs 1870000 green pass red discard inbound
#  car cir 10000 cbs 1870000 green pass red discard outbound
# aaa
#  domain mac-post
#   qos-profile 10M inbound
#   qos-profile 10M outbound
#  domain portal-post
#   qos-profile 10M inbound
#   qos-profile 10M outbound

# ---------- 13. RADIUS 下发属性落地(用户名 / 用户组 / 域)----------

# 【13.1】用服务器下发的用户名替换本地生成的用户名
# 场景:MAC 快速认证时本地用户名=MAC,服务器在 Access-Accept 中回标准 1 号属性 User-Name
#       (如 zhangsan@isp1),需要把在线用户名改成真实账号
# 关键:默认只有 EAP / RADIUS proxy 用户的用户名会被替换,IPoE 用户默认【不替换】,必须显式开启
radius-server group rd1
 # 对 IPoE 用户启用"用服务器下发的用户名替换本地用户名"
 radius-attribute apply user-name match user-type ipoe
 quit

# 开启后:display access-user 里 User-Name 由 MAC 变为真实账号,
# 后续计费报文、日志、CoA/DM 匹配均使用新用户名。

# 【13.2】服务器下发用户组(HW-Usr-Group-Name / VSA 26-251)后本地如何生效
# 前提一:设备上必须存在同名用户组,否则下发不生效
#         组名 1~32 位,仅字母 / 数字 / 下划线,区分大小写
user-group vip-grp
user-group normal-grp

# 前提二:全局 inbound 方向只能挂一条 traffic-policy,
#         必须把新组的分类器【合并进已有 pre-policy】,不要重复执行 traffic-policy inbound
acl number 6100
 rule 5 permit ip source user-group vip-grp destination ip-address any
acl number 6101
 rule 5 permit ip source user-group normal-grp destination ip-address any

traffic classifier vip-cls operator or
 if-match acl 6100
traffic classifier normal-cls operator or
 if-match acl 6101

# 组策略:VIP 放行并限速 50M,普通组放行并限速 10M
traffic behavior vip-behavior
 permit
 car cir 50000 cbs 6250000 green pass red discard
traffic behavior normal-behavior
 permit
 car cir 10000 cbs 1250000 green pass red discard

# 合并后的统一策略(替换第 7 节的 pre-policy)
traffic policy pre-policy
 share-mode
 classifier pre-allow    behavior pre-allow    precedence 1
 classifier pre-deny     behavior pre-deny     precedence 2
 classifier vip-cls      behavior vip-behavior      precedence 3
 classifier normal-cls   behavior normal-behavior   precedence 4

traffic-policy pre-policy inbound

# 可选:不本地预建组,让服务器直接创建动态用户组
# aaa
#  remote-download user-group enable
#  remote-download user-group check interval 300
#  quit

# 可选:服务器用 HW-Data-Filter(VSA 26-82) 动态下发 ACL(最细粒度,按需开启)
# aaa
#  remote-download acl enable
#  quit

# 【13.3】服务器下发域名后本地如何切域
# 上行:设备用 HW-Domain-Name(VSA 26-138) 告知服务器用户实际落在哪个域(漫游域/强制域)
# 下行:设备"按服务器信息切域"有两条路:A=域属性 HW-Domain-Name(OpenPortal 接入账户组→详细信息)
#       B=用户名中的域名后缀 user@domain。A 无需额外命令,域存在即生效
#       A 的前提:目标域已在设备上创建,且 BAS 接口 permit-domain 放通,否则认证失败
#       认证阶段由 13.1 替换用户名带出域名;CoA 阶段需显式开启下面这条
# ---- OpenPortal 侧对应关系(域属性从哪来)----
#   NAS列表 → 高级扩展 = 华为高级(或 Mac认证账户+华为高级)才回该属性
#   域名的值 = 接入账户组 → 详细信息 字段;该字段留空 = 不下发 Domain
#   *** 不指定域时务必留空,不要乱填 ***
#   填了域名但本机无该域:关闭漫游=认证失败;开启漫游=落漫游域(策略全不对)
#   本方案域由 BAS 接口 default-domain 与 authening 决定,服务器不需要指定域 → 留空
radius-server coa update username

# 可选:允许服务器用 DM 报文按"用户名"强制下线(服务器只能拿到真实用户名时)
# radius-server dm-request support username

# 可选:域白名单,防止服务器下发任意域导致用户落到未预期域
# 语法随版本差异较大,配置前用 ? 确认
# interface GigabitEthernet1/0/2.100
#  bas
#   permit-domain mac-pre mac-post portal-pre portal-post

# 【13.4】Filter-Id(标准 11 号属性)下发 ACL / 用户组
# 解析顺序固定:先当 ACL 编号 → 编号不存在再当用户组名 → 都找不到 = 授权失败(不是忽略!)
# 服务器侧值的要求:1~32 字节,不能带 @(含 @ 只取 @ 前),不能带 " in"/" out" 后缀
# 报文内多个 Filter-Id 只有最后一个生效,建议只下发一个

# 路径 A:服务器下发 ACL 编号,设备必须预先配好该 ACL 及规则
acl number 3000
 rule 5 permit ip destination 10.0.0.0 0.0.0.255
 rule 10 deny ip
# 服务器侧:Filter-Id = 3000

# 路径 B:服务器下发用户组名(推荐,多用户复用一套 ACL,不占 ACL 规格)
# 服务器侧:Filter-Id = vip-grp
# 组与策略配置见 13.2(user-group + ACL source user-group + traffic-policy)

# 路径 C:动态 ACL,规则由服务器用 HW-Data-Filter(26-82) 下发,设备无需预配 ACL
# aaa
#  remote-download acl enable
#  quit

# 【13.5】终端信息上送(UA / DHCP Option)
# 【结论】NE40 ME60 BRAS 无法把浏览器 User-Agent 放进 RADIUS 报文
#   - 承载 UA 的属性是 HW-HTTP-UA(26-159),但它属于交换机/AC 的 NAC 终端类型感知特性
#     触发命令 http parse user-agent enable 只在这些产品上存在,BRAS 的
#     radius-attribute include 可选项里没有 UA / 终端类型
#   - 且该属性走【计费报文 Accounting-Request】,不是认证请求;只对明文 HTTP Get 有效
#   - 现场一行验证:http parse user-agent enable ?   (报 Unrecognized 即不支持)
#   - 真要 UA:由 OpenPortal 采集(它本就在 HTTP 层),或接入交换机上送,或前置代理

# 【BRAS 能做的】在 Access-Request 中携带 DHCP Option 作为终端指纹
#   Option 12=主机名(价值最高) 55=参数请求列表 60=Vendor Class ID 61=Client ID
#   属性:HW-Dhcp-Option = 26-187(注意:交换机/AC 上是 158,号段不通用)
#   前提:用户必须通过本机 DHCP 获取地址;静态 IP 或旁挂 DHCP 不经本机时无 Option 可送
radius-server group rd1
 # 只带 Option 12(主机名):187 是"一个属性里打包多个 option",
 # 总长受 RADIUS 253 字节限制,塞太多会把后面的 option 挤掉
 radius-attribute include hw-dhcp-option 12
# 若不需要终端指纹,删除上面这条即可(不影响认证)
# 可选:计费报文上送访问 URL(属增值业务/审计,不是 UA,本方案未启用)
# radius-attribute include hw-web-url accounting-request

# 【13.6】终端主机名识别(Option 12 → OpenPortal「终端主机名管理」)
# 链路:终端 DHCP Option 12 = 主机名 → BRAS 本地池分配时缓存 →
#       Access-Request 的 26-187 里带 0C<len><主机名ASCII> →
#       OpenPortal「高级扩展=华为高级」解析 → 按 MAC 写入「终端主机名管理」表
# 注意:主机名来自终端自己填的 Option 12,Windows/iOS/macOS 基本都带,
#       部分安卓不带 → 该 MAC 无主机名,需在 OpenPortal 页面手工补录
#
# 【MAC 格式不用改】设备 31 属性缺省是 xxxx-xxxx-xxxx(华为 4-4-4 横杠小写),
#   OpenPortal 表格显示 11:22:33:44:55:66(冒号),两种写法由 OpenPortal 侧
#   自适应/归一化,设备侧保持缺省即可 —— 所以本节的生效配置只有 13.5 那一条
#   radius-attribute include hw-dhcp-option 12,此处无需再配任何命令。
#
# 【仅当 OpenPortal 明确不支持缺省格式时才启用下面这条(默认不加)】
#   作用范围是整个 RADIUS 组:认证与计费报文同时改变,
#   会影响计费话单、上网行为管理/审计等按固定 MAC 格式解析的下游系统
# radius-server group rd1
#  calling-station-id mac-format colon-split mode2
#  quit
#   老版本(V5/V600)该命令位于 radius-server template 视图,配置前用 ? 确认
#
# 同理:若 OpenPortal 的「MAC标识」取的是 User-Name 而非 31 属性,
#   也应由 OpenPortal 侧适配,不要改设备 default-user-name 的 MAC 分隔符
# 验证:display radius-server configuration group rd1   # 确认 hw-dhcp-option 已 include

# ---------- 14. 验证命令(不写入配置,部署后手工执行)----------
# display radius-server configuration group rd1
# display web-auth-server configuration        # 核对本机侦听端口 2000 与服务器目的端口 50100
# display web-auth-server statistics           # 收发计数:只增不收=对端端口或密钥不对
# display udp                                  # 核查 2000/50100 是否已被其他业务占用
# display access-user domain mac-pre
# display access-user domain mac-post
# display access-user domain portal-pre
# display access-user domain portal-post
# display access-user
# display ip pool name pool100
# display aaa offline-record all
# display ip routing-table 0.0.0.0            # 确认默认路由下一跳为 100.0.0.254
# display interface GigabitEthernet1/0/10.10  # 出口子接口 UP / 收发计数
# ping -a 100.0.0.1 100.0.0.254               # 用出口地址 ping 防火墙
# display access-user                     # 核对 User-Name 为真实账号、UCL-Group 为服务器下发的组名

本页为华为 NE40 ME60 BRAS 对接 OpenPortal 的现场实施记录整理,适用于 NE40E / NE40E-M / NE40E-F 与 ME60 的 V8 平台 (V800R011C10 及以上,示例按 V800R023 / V800R024 语法),OpenPortal 侧截图取自实际系统。文中 10.0.0.1、10.0.0.2、portal、 2000、50100 等取值请按现场环境替换;不同软件版本的命令名称可能存在差异,以设备 ? 提示为准。

让每一次接入都可信

联系我们,获取同行业落地案例、设备兼容清单与部署方案。

↑