资讯动态

华为AC外置Portal认证配置指南:从原理到排错实战

发布时间:2026/9/16 2:02:19 来源:尧图企业网站定制
华为AC外置Portal认证方案配置步骤指南这个主题想做的人不少。尤其是做园区网络运维、无线项目交付的朋友经常会在现场遇到甲方要求“访客上网必须弹认证页面输账号密码才能用”这就是典型的Portal认证场景。我在多个项目里配过华为AC的Portal认证也踩过不少坑。这篇就按我实际动手的顺序从原理、规划、配置到排错完整走一遍。1. 动手之前先把Portal认证这件事吃透1.1 这套方案到底是干什么的先说清楚Portal认证解决什么问题。在企业、校园、酒店、医院这类场景里无线网络不能裸奔——谁连上Wi-Fi都能直接访问内网那安全就是纸糊的。Portal认证的思路是终端关联上AP之后先不让你真正接入业务网络而是强制把HTTP请求重定向到一个认证页面你在页面上输入账号密码认证通过之后才放行上网。为什么叫“外置”Portal因为Portal认证页面本身是放在一台独立的Portal服务器上不依赖AC内置的Web认证功能。AC只负责把用户流量牵引过去、跟RADIUS服务器做对接、根据认证结果控制放行。外置方案的扩展性更强可以对接深澜、城市热点、iMaster NCE等第三方认证平台也方便后期做定制页面适合中大型园区项目。我这次写的配置就是对这种外置方案不求花哨但求在真实设备上能跑通。这套配置适合谁刚接手无线网络交付的工程师、做园区网络改造的运维人员、还有自学数通想搭实验环境的朋友。看完你至少能独立完成华为ACV200R系列版本加外置Portal服务器、外置RADIUS服务器的整套配置。1.2 外置Portal与内置Portal怎么选很多第一次接触Portal的朋友会问AC上不是有内置Portal功能吗为什么非要外置一台服务器我的经验是这样的如果是临时演示、小微型场景AC自带的内置Portal确实省事配置量小也不依赖额外的服务器但它有几个硬伤——页面无法深度定制只能使用设备自带的简单页面并发用户量一上来AC的CPU会被认证流量拖累影响转发性能跟第三方认证系统对接也很麻烦很多计费、审计、短信验证码功能根本做不了。外置Portal刚好把这些问题挡在AC之外。页面想怎么做就怎么做HTML、JS、CSS随便上后端对接什么认证接口都行。AC只负责控制面压力小得多。而且外置Portal和RADIUS分离部署后续某一台服务器要升级维护也方便单独操作。当然外置方案也有自己的代价——多了一台服务器要维护多了一层网络连通性要保障配置环节也会多几步。但以我做项目的经验只要需求里出现“定制认证页面”“短信认证”“对接计费”这些字眼直接选外置就对了。有些场景还会要求Portal服务器做集群、RADIUS做主备这时候外置方案的架构优势更加明显。1.3 数据流向拆解从手机连Wi-Fi到弹出认证页中间发生了什么配置之前脑子里必须有一张清晰的“数据流向图”。我见过不少新手配置命令敲得飞快但出了问题完全不知道怎么排查根源就是没搞清楚流量怎么走。我按实际工作顺序把这条链路上发生的事拆成几步第一步终端手机、笔记本连接AP广播出来的SSID通过DHCP拿到一个IP地址。注意这地址是“待认证网段”的地址拿到地址不代表能上网。第二步用户打开浏览器访问任何一个HTTP网站流量到了AC。AC发现这个用户没有通过认证就按照配置的重定向规则把用户强制跳转到Portal服务器上POST请求也好、GET请求也好一律拦截。实际效果就是浏览器跳出一个登录页面。第三步用户在页面输入账号密码Portal服务器先自己校验一遍或者直接转发给RADIUS服务器校验校验通过之后Portal服务器通知AC“这个用户已经认证通过了”。第四步AC把该用户的MAC地址、IP地址从“未认证”状态切换到“已认证”状态然后放行流量。整个过程里RADIUS服务器负责“认账”AC负责“放行”Portal服务器负责“展示页面和收集输入”三者各管一段缺一不可。把这个过程理解了后面配置的时候你心里就会有数每敲一条命令其实都是在给这条链路补上一块拼图。接下来我们进入实操。2. 实验环境搭建与IP规划2.1 拓扑规划我搭这套实验环境用的是华为AC6605也可以换成AC6507、AC6805等AP用AirEngine系列无线AP配合一台Linux服务器跑Portal服务一台Windows服务器或者Linux服务器跑RADIUS服务。如果手上没有真机用eNSP模拟器一样能搭把AP替换成模拟APPortal和RADIUS用一台服务器/虚拟机同时跑就行。拓扑大致是这样的AC通过Trunk接在核心交换机上AP接在接入交换机上并通过CAPWAP隧道注册到AC。Portal服务器和RADIUS服务器直接挂在核心交换机上跟AC三层互通。终端的业务流量走“AP—接入交换机—核心交换机—出口网关”这条路径。实验的时候可以把网关放在核心交换机上AC只做无线控制器的角色业务转发模式用直接转发Direct-forward不要用隧道转发。这个拓扑放在真实项目里也很常见。访客网络和数据业务网络一定要在VLAN上隔离开Portal服务器、RADIUS服务器这些认证基础设施单独放一个管理网段或者服务器网段别让它们跟访客业务网段混在一起。我见过有人图省事把Portal服务器和访客网络放在同一个VLAN导致未认证用户居然能直接访问Portal服务器的其他端口这是个很危险的安全隐患。2.2 软硬件清单与VLAN/IP规划先列清单。这个实验最少需要这些角色一台华为AC版本V200R010及以上不同版本命令有小差异后面再讲一台AP建议用支持最新标准的Wi-Fi 6 AP一台Linux/Windows服务器做Portal服务器我习惯用LinuxCaddy或者Nginx搭建静态页面后端轻量、方便一台服务器做RADIUS推荐FreeRADIUS我用得最顺手一台核心交换机提供VLAN网关和DHCP服务也可以让AC做DHCP Server但建议放交换机上IP规划我这次用一套比较简单直观的地址管理VLAN 10192.168.10.0/24AP管理地址、AC源地址都放这里业务VLAN 20192.168.20.0/24终端认证后使用的网段服务器VLAN 30192.168.30.0/24Portal服务器和RADIUS服务器都放这里关键设备地址如下设备/角色IP地址说明AC管理源地址192.168.10.1CAPWAP源地址同时做管理网关AP管理地址192.168.10.0/24自动获取DHCP下发业务网关核心交换机192.168.20.1终端网关Portal服务器192.168.30.10HTTP服务端口8080RADIUS服务器192.168.30.20认证端口1812/1813交换机与AC互联192.168.10.1/192.168.10.2三层互联2.3 准备工作AC基础开通与AP上线环境规划好了开始动手。AC刚开机的时候就是一台空白设备先把基础网络打通。我把配置过程整理成顺序操作方便你在真机上敲。先登录AC进入系统视图创建VLAN并配置管理地址system-view sysname AC6605 vlan batch 10 20 interface Vlanif 10 ip address 192.168.10.1 255.255.255.255.0 quit然后配置和核心交换机的互联接口interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 quit这里要提醒一下AC下联口如果走的是Trunk必须确保管理VLAN和业务VLAN都放行否则AP注册不上去业务流量也过不来。我在现场遇到过好几次AP能被发现但始终处于“Fault”状态最后查下来就是接入交换机Trunk没有放行管理VLAN。接着配置WLAN服务让AP上线。华为AC上需要配置源地址然后设置AP的认证方式我实验直接使用MAC认证生产环境建议用SN或者证书认证。关键命令如下wlan ac source ip-address 192.168.10.1 wlan ap auth-mode mac-auth ap-id 0 ap-mac xxxx-xxxx-xxxx ap-name AP-01 quitAP拿到地址之后会自动向AC发起CAPWAP连接。从AC上执行display ap all能看到AP状态变成“Run”就说明AP上线成功。注意AP要能从DHCP服务器拿到IP地址DHCP服务器还需要下发option 43字段告诉AP“AC在哪”。常见的坑就是忘记配option 43导致AP一直搜索不到AC。配置方法是在核心交换机的DHCP地址池里为AP所在的网段添加option 43 sub-option 3 ip-address 192.168.10.1。如果你用AC做DHCP也一样要配上这条。AP上线之后接下来才是重头戏——Portal认证的配置。3. 核心配置实操外置Portal认证全流程3.1 RADIUS模板与AAA域配置先聊一个原则华为AC上的配置流程是自下而上、层层绑定的。RADIUS模板先建好AAA域引用RADIUS模板认证模板引用AAA域VAP模板再引用认证模板。最终VAP模板绑定到AP上整条链路才打通。所以配置顺序不要乱不然回头想找问题会很麻烦。第一步配置RADIUS服务器模板。进入系统视图radius-server template radius1 radius-server authentication 192.168.30.20 1812 radius-server accounting 192.168.30.20 1813 radius-server shared-key cipher Huawei123 radius-server retransmit 2 radius-server timeout 5这段配置的含义是把认证报文发到RADIUS服务器的1812端口计费报文发到1813端口共享密钥是Huawei123超时重传两次。共享密钥必须和RADIUS服务器上配置的一致否则会出现认证无响应或者认证失败。我踩过一个坑在服务器端配置的密钥里带了一个特殊字符两边看起来差不多但加密后完全不同排查了半天。第二步配置AAA认证方案、计费方案和域。华为设备上策略都是挂在域下面的所以要先建域aaa authentication-scheme auth1 authentication-mode radius accounting-scheme acct1 accounting-mode radius domain portal.com authentication-scheme auth1 accounting-scheme acct1 radius-server radius1 quit这里的思路是用户认证走RADIUS计费也走RADIUSPortal用户都划归到portal.com这个域。域的名字可以按项目需要改但AC上Porta用户指定的域必须和这里配置的域名一致。第三可选但强烈建议配置RADIUS的计费实时上报功能否则用户下线之后RADIUS服务器上会残留大量在线会话时间长了会很混乱。可以在RADIUS模板里加一条radius-server realtime-accounting interval 15。3.2 Portal服务器模板与认证模板配置RADIUS链路通了之后开始配置Portal服务器。华为AC上要告诉AC三个信息Portal服务器在哪、认证页面URL是什么、用什么协议交互。命令如下portal server portal1 server-ip 192.168.30.10 port 8080 url http://192.168.30.10:8080/portal quit这里的URL就是用户被重定向后看到的页面地址。实际项目中这个URL由Portal服务器提供一般长这样http://192.168.30.10:8080/portal?useripxxusermacxx。AC在重定向时会把用户IP和MAC参数自动带过去页面接收到之后才能正确识别终端。然后创建Portal接入模板。这个模板用来定义Portal认证的交互方式以及访问控制策略。命令如下portal-access-profile name portal-access url http://192.168.30.10:8080/portal quit有些版本把URL配置放在Portal服务器模板里有些放在Portal接入模板里你的设备上如果敲portal-access-profile之后没有url命令就回头去portal server里看。记住一条原则AC必须能解析到Portal服务器的IP否则重定向之后终端根本没地方可去。再创建认证模板把前面建好的AAA域、Portal接入模板绑定起来authentication-profile name portal-auth authentication mode portal portal-access-profile portal-access domain portal.com quit注意authentication mode portal这一条它告诉AC这个模板下面的用户采用Portal认证方式不是802.1X也不是Open直接放行。有些老版本命令是web-auth-server那属于历史遗留写法新版本建议以authentication-profile为准。如果你手里的设备是老的V200R005之类的版本配置思路一样命令换成web-auth-server portal1 server-ip 192.168.30.10即可。3.3 SSID、安全策略与VAP模板绑定这一步是做无线业务配置。以前的华为AC配置是把SSID、安全、VAP分开配最后统一绑定到VAP模板上。我按这个习惯来你也好理解。创建SSID模板ssid-profile name portal-ssid ssid Company-Guest quit创建安全模板。这里有个重要选择Portal认证的SSID要不要加密我实验环境用的是Open开放方式因为访客场景一般是先连上Wi-Fi再弹Portal页面。如果你的需求是“先输Wi-Fi密码再弹Portal登录”也可以配WPA2 PSKAC的Portal流程会变成“先接入加密网络再接Web认证”。不过从我做的项目来看访客网络绝大多数是OpenPortal员工网络才用802.1X或WPA2企业这样体验更顺。命令如下security-profile name portal-security security open quit如果你用PSK把最后一句换成security wpa2 psk passphrase Admin123 aes即可其他配置不用动。创建VAP模板把上面所有模板都关联进来vap-profile name portal-vap forward-mode direct-forward service-vlan vlan-id 20 ssid-profile portal-ssid security-profile portal-security authentication-profile portal-auth quit配置中forward-mode direct-forward很关键它让业务数据流不经过AC直接转发能大幅降低AC的转发压力。如果你的环境必须用隧道转发那就需要把业务流量封装到CAPWAP隧道里AC要处理大量转发设备选型时要注意性能。再提醒一遍service-vlan要和业务网段一致也就是终端认证后所在VLAN能查到IP地址的那个VLAN。最后把VAP模板绑定到AP的射频口上wlan ap-id 0 radio 0 vap-profile portal-vap wlan 1 radio 1 vap-profile portal-vap wlan 1绑定完成后从AC上display vap ssid Company-Guest能看到VAP状态正常说明无线侧配置已经生效。3.4 业务VLAN、DHCP与接口放行无线侧配完了但终端拿到业务地址才能访问Portal服务器才能触发重定向。所以核心交换机上必须配置业务VLAN的网关和DHCP服务。这段配置不在AC上在核心交换机上我一般用华为交换机命令vlan batch 20 30 interface Vlanif 20 ip address 192.168.20.1 255.255.255.0 dhcp select global interface Vlanif 30 ip address 192.168.30.1 255.255.255.0 quit dhcp enable ip pool vlan20 gateway-list 192.168.20.1 network 192.168.20.0 mask 255.255.255.0 dns-list 114.114.114.114 8.8.8.8这里有个很容易被忽略的问题Portal认证过程中DNS要可用。终端拿到地址之后需要先通过DNS解析Portal服务器的域名如果用域名访问的话才能触发重定向。如果终端无法解析DNS很多情况下Portal页面都弹不出来。所以DHCP里必须下发可用的DNS地址并且确保终端能访问这个DNS。接口放行和路由也很重要。核心交换机和AC互联口要放行业务VLAN和服务器VLAN的流量。AC上还要保证Portal服务器、RADIUS服务器与AC之间路由互通。可以用一条静态路由解决ip route-static 192.168.30.0 255.255.255.0 192.168.10.2这里的192.168.10.2是核心交换机上对应VLANIF接口的地址。如果你只用AC和核心交换机做三层互联要确保AC上能看到目的网段的路由且往返路径一致。3.5 Portal服务器与RADIUS侧的关键配合AC侧配置完了但后面还有一半工作在服务器上。很多人只看AC配置不看服务器侧结果认证一直失败。第3.2节配置的URL在实际部署中必须在Portal页面上正确接收AC传递过来的用户IP、用户MAC参数并把这些参数原样带回给认证接口。以HTTP POST为例Portal服务器至少要能从表单里取到userip、usermac两个字段然后向RADIUS发起认证请求。我用FreeRADIUS做实验时会把RADIUS clients加上AC的IP共享密钥和AC上配置一致并启用Auth-Type : Accept做简单放行测试验证流程通了之后再接真正的用户数据库。生产环境里对接的是企业AD/LDAP或者数据库里的账号表。RADIUS返回的属性要注意一下认证通过之后通常要给用户下发一个访问控制列表ACL或直接下发下发的VLAN号。如果你的场景是“认证前只能访问Portal认证后开放所有网络”那么RADIUS的Access-Accept里可以下发一个ACL为空表示不受限或者不下发ACL表示默认放行。如果要限制用户只能访问某些网段就通过下发ACL实现。这套联动关系用文字说可能有点抽象。我实际测试时是这样做的Portal服务器收到用户提交的账号密码后调用RADIUS客户端函数比如Python的pyrad库向RADIUS服务器发送Access-RequestRADIUS返回Access-Accept后Portal服务器再向AC发送认证成功通知实际上是AC周期性地去RADIUS服务器查用户状态或者由Portal服务器通过RADIUS的CoA报文通知AC。不同厂家的Portal服务器交互协议有差异但整体闭环逃不出我前面说的第四步。4. 验证流程、常见问题与避坑清单4.1 测试验证的完整流程与观察点配置完不能急着交付我一般按下面这套步骤做验证每步都有关键观察点第一步验证AP状态。display ap all确认AP是“Run”状态。如果AP没上线后面什么都不用谈。第二步验证无线信号。用手机搜到WLAN连上SSID先看能不能拿到IP地址。终端上如果显示“已连接无Internet访问”这很正常因为还没认证。第三步打开浏览器访问一个HTTP网站。比如在地址栏输入http://www.example.com观察是否自动跳转到Portal登录页面。注意现在很多浏览器默认走HTTPS直接输https网址可能不会触发HTTP重定向所以我做测试时一定输入http开头的链接。这是Portal测试里最容易卡住的地方十次有八次是输入了https。第四步在Portal页面输入账号密码。认证通过之后观察页面是否跳转、终端是否正常上网。在AC上执行display portal user all能看到当前在线认证用户信息这里能确认AC侧会话建立是正常的。第五步验证计费信息。在RADIUS服务器上查看在线用户确认计费报文正常到达。FreeRADIUS里可以用radwho命令查看在线用户列表。走完这五步一套Portal认证才算完整跑通。4.2 高频故障排查速查表我把这几年做Portal项目遇到的典型问题整理成一个表遇到问题可以直接对号入座现象可能原因排查思路与解决AP无法上线CAPWAP源地址不对、AP无法获取IP、option 43缺失检查AC源地址、DHCP地址池、option 43配置终端连上Wi-Fi但拿不到IP业务VLAN不通、DHCP没配置或地址池耗尽检查业务VLAN接口、DHCP配置看终端获取地址情况登录页面弹不出来访问了HTTPS网站、AC到Portal服务器不通、端口被墙改用http测试、ping Portal服务器、检查业务VLAN接口放行和路由Portal页面能打开但输入账号后提示认证失败RADIUS共享密钥不一致、账号错误、RADIUS服务器无可达路由抓包看RADIUS请求检查共享密钥和账号检查服务器路由认证通过了但无法上网未配置DNS、缺省路由缺失、RADIUS下发了错误ACL检查DHCP下发的DNS、网关路由、RADIUS返回属性用户频繁掉线RADIUS计费间隔太短、会话超时配置不合理调整realtime-accounting interval、检查会话老化时间认证页面能打开但无法跳回原始URLPortal服务器回跳地址配置错误检查Portal服务器配置的AC地址、回跳URL格式4.3 我踩过的一些坑与总结最后分享几个实操中真正让我头疼过的坑希望帮你绕过。第一个坑HTTPS拦截。现在的浏览器越来越强调安全用户访问的时候大概率输入的是https的网址。HTTP请求被AC拦截重定向没问题但HTTPS流量本身是加密的AC在没有做SSL卸载/解密的情况下很难直接重定向到Portal页面。实际项目里要么让用户习惯输入http网址要么在出口防火墙上做HTTPS强制降级到HTTP的重定向策略或者使用支持SSL加密的Portal页面AC需要能识别HTTPS重定向场景。实验阶段建议直接输入http网址测试省事很多。第二个坑Portal服务器的网络隔离。前面提过不要把Portal服务器和访客业务网段放在同一个VLAN否则未认证用户可以直达Portal服务器说不定还能扫出其他端口上的漏洞。生产环境一定要把认证基础设施和访客网络隔离只放行必要的端口。第三个坑并发性能。外置Portal虽然减少了AC的压力但Portal服务器本身会成为瓶颈。如果现场用户数量很大比如一场展会几千人同时接入Portal服务器必须做负载均衡数据库也要扛得住。我做过一个项目Portal服务器单机部署高峰期直接卡死后来改成两台服务器加负载均衡才解决问题。所以在实验环境单机无所谓生产环境一定要提前评估并发量。第四个坑版本差异。华为AC的命令在不同版本之间迁移时经常有变化。我这次写的配置适用于V200R010及以后的主流版本体系。如果你手里是R005或者更早的老版本命令会不太一样老版本的Portal接入配置通常通过web-auth-server关键字实现。动手前先确定设备版本不要把网上抄来的配置直接往后敲很容易出现命令不存在的报错。第五个坑数据转发模式。前面配置里我把转发模式设成了direct-forward直接转发。如果你的部署环境是集中转发tunnel-forwardAC必须配置好CAPWAP隧道接口地址业务VLAN要封装在隧道里送到AC处理配置复杂度会增加不少。明确自己的转发模式是直连还是隧道再开始配置别模棱两可。第六个坑测试账号一定要在RADIUS服务器上真实存在。我见过很多“认证失败”的问题最后发现是测试账号只在Portal服务器上有记录RADIUS服务器完全不知道这个用户。这里要理顺关系Portal服务器负责页面展示和用户输入收集RADIUS服务器才是真正的账号校验方。两者数据要同步好不然必然出问题。说回配置思路本身Portal认证说白了就是把无线接入从“裸奔”变成“有门禁”而门禁的钥匙由Portal和RADIUS共同管理。实验环境搭起来之后建议你多做几轮破坏性测试比如把RADIUS服务器停掉看看Portal页面是否还能弹出看看AC有什么告警日志这些日志在后期排障时都是宝贵经验。我的习惯是边配置边把每一步的验证结果记录下来能截图的截图能存日志的存日志因为交付文档里这些最有用。也希望你搭完这套实验环境后自己能再改一改参数比如改一改VLAN换个Portal页面加深一下理解——配置这东西亲手敲一遍和看一遍效果差距非常大。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价