1.1 无处不在的Portal认证
场景一:北京国际机场,岩松打开iPhone搜索Wi-Fi信号,看到机场Wi-Fi登录页面,输入手机号获取密码,输入密码后连接Internet刷微博。
场景二:某餐馆,顾客小e拿出手机扫了餐桌上的二维码,弹出“连接网络”页面,单击“连接网络”后以匿名方式连接Internet,在朋友圈和大家分享美食。
场景三:某酒店,出差人员张经理在酒店办理入住手续时获得以房间号为帐号和一个随机密码。通过手机连接酒店提供的Wi-Fi,输入帐号和密码后下载出差地的离线地图。
这几种连接Internet的认证方式有一个共同点,就是都会弹出登录页面,术语称之为Portal认证页面。
Portal认证有如下优点:
l 不需要安装客户端。使用Web页面认证,使用方便,减少客户端的维护工作量。
l 便于运营。可以在Portal页面上开展业务拓展,如广告展示、责任公告、企业宣传等。
l 提供计费功能,通过计费功能来限制终端接入网络的时长。
Portal认证优势明显,故此无处不在。
1.2 什么是Portal认证
根据国家接入互联网的相关规定,在接入互联网之前必须通过身份认证。考虑到移动终端的复杂性,在终端上安装认证客户端进行身份认证是不现实的。而几乎全部的智能终端都装有Web浏览器。身份认证最好是能够通过Web页面的方式进行。
Portal认证(也称为Web认证)能够基于网页的形式向用户提供身份认证和个性化的信息服务。
Portal认证系统的典型组网方式由四个基本要素组成:认证客户端、接入设备、Portal服务器与AAA服务器。
l 认证客户端:运行HTTP协议的浏览器或运行Portal客户端软件的主机。
l 接入设备:交换机、路由器或AC(Access Controller)等宽带接入设备的统称。如果把网络看成一栋高楼,那接入设备就是门卫,要进屋必须由门卫放行。接入设备主要有三方面的作用:
− 在认证之前,将认证网段内用户的所有HTTP请求都重定向到Portal服务器。
− 在认证过程中,与Portal服务器、AAA服务器交互,完成身份认证/授权的功能。
− 在认证通过后,允许用户访问被管理员授权的互联网资源。
l Portal服务器:接收Portal客户端认证请求的服务器端系统,提供免费门户服务和基于Web认证的界面,与接入设备交互认证客户端的认证信息。
Portal服务器可分为内置Portal服务器和外置Portal服务器两种。通常交换机/AC会内置Portal服务器,帐号和密码保存在交换机/AC。受限于接入设备存储空间、功能和性能,内置Portal服务器只适合功能简单、接入人数少的场景。例如小型餐馆提供的连接Internet服务。
如果需要实现微信接入、短信接入等复杂的功能,考虑到接入设备性能和认证体验,内置Portal服务器恐怕难以胜任,需要具有独立于接入设备之外的硬件服务器来承载Portal认证业务。
受益于独立的硬件服务器提供充足的存储空间和性能保证,外置Portal服务器在功能上可获得充分的扩展。例如华为Agile Controller服务器中的Portal服务器组件,可在体育馆、机场、地铁、大型商场等用户密集场馆提供可靠的认证和接入服务。
l AAA服务器:与接入设备进行交互,完成对用户的认证、计费和授权。
不同的用户接入网络的权限可能会不一样。例如访客认证后只允许访问Internet,而员工认证能够访问内部的业务系统。终端认证后访问网络的权限大小,是由AAA服务器说了算。
Portal认证可同时应用于有线终端认证和无线终端认证,在网络中可打造有线无线一体化接入方案。有线终端的Portal认证可由交换机负责接入,而无线终端Portal认证可由无线接入设备来完成。Portal认证技术成熟,被广泛应用于运营商、连锁快餐、酒店、学校等网络。
1.3 常见部署方案
1.3.1 资源划分
网络中的各种资源对企业的重要程度是不一样的。为了对不同级别的网络资源进行区别对待,可以把整个网络划分成2个区域:
l 认证前域
终端在认证前允许访问的网络资源。认证过程需要依赖的网络资源都需要在认证前域开放。例如认证服务器(Portal服务器、AAA服务器)、DHCP服务器、DNS服务器。
认证前域是整个网络唯一的,所有的终端用户共享一个认证前域。
l 认证后域
需要由Portal网关保护的网络资源。在终端用户通过认证的情况下才允许访问的网络资源。例如ERP系统、财务系统。
与认证前域的唯一性不同,不同的终端用户的认证后域可能会不一样。例如访客认证通过后只能访问Internet,而员工认证通过后除了能够访问Internet,还能访问内部网络资源。
1.3.2 组网方式
如下图所示,为减轻单点设备压力、减少出错几率,有线终端与无线终端的认证点分开部署:
l 汇聚层交换机作为有线终端Portal认证的接入设备。
l AC以旁路方式部署在核心层设备的旁边,作为无线终端Portal认证的接入设备。
此种方案下,要求AC与AP之间采用隧道转发模式,同时汇聚层交换机需放行CAPWAP。
AC之所以选择以旁路方式部署在核心层而不是汇聚层,是基于如下考虑:
l 如果AC部署在汇聚层,部署位置过低,难以实现对整个网络的AP进行统一的管理。
l 如果AC采取直连方式部署,AC容易成为网络性能瓶颈,并且容易造成单点故障。
对于有线终端,选择将认证点部署在汇聚层交换机,是由于以下几点原因:
l 在汇聚层部署接入设备,数量比在接入层部署接入设备要少,减轻管理员维护设备的压力。
l 接入设备的部署位置比在核心层部署要低,能够在网络的更低的位置对非授权终端进行隔离,安全性比核心层Portal认证要高。
Portal认证的汇聚层部署方式较为普遍,适用于大、中、小各种园区组网。如果园区组网较小或者网络改造场景,为减少管理员维护量或者为减少企业**、避免大规模更换设备时,也可以选择把认证点部署在核心层。
1.4 认证原理
1.4.1 认证方式
根据用户需求和网络现状,Portal认证可以部署在网络的各个层次,例如,上例中无线终端Portal认证部署在核心层、有线终端Portal认证部署在汇聚层。由于位于不同网络层次的设备能够获取到的终端信息不同,所以Portal认证是采用的认证方式也不一样:
l 当终端与接入设备之间为二层网络时,接入设备可以获取到终端的MAC地址,则接入设备可以利用IP和MAC地址来识别终端,此时可配置Portal认证为二层认证方式。
l 当终端与接入设备之间包含三层网络时,即终端与接入设备之间存在三层转发设备时,接入设备不一定能获取到终端的MAC地址,只能以IP地址唯一标识用户,此时需要将Portal认证配置为三层认证方式。
其中,二层认证方式认证流程简单,安全性较高,但是组网不灵活;三层认证方式组网较为灵活,容易实现远程控制,但是由于只能通过IP地址来标识用户,导致安全性相对不高。
1.4.2 认证上线
有线、无线Portal无论在哪种组网场景下,基本流程都类似。下面以机场候机旅客接入互联网,RADIUS服务器和Portal服务器使用华为Agile Controller为例,说明Portal认证的上线流程。
l 客户端与Portal服务器之间交互使用HTTP协议。
l Portal服务器与接入设备之间交互使用Portal V2协议,Portal协议用了CHAP或PAP认证。
l 接入设备与RADIUS服务器之间交互使用RADIUS协议。
旅客打开手机Wi-Fi,选择机场提供的免费网络热点,获取由机场分配的IP地址。
旅客访问互联网,HTTP报文经过接入设备。接入设备发现该终端处于未上线状态,于是通过Web重定向技术向终端发送Portal认证链接。
手机的IP地址是10.20.238.199,使用TCP端口号47502(随机端口)。
Portal服务器的IP地址是10.20.5.51,使用TCP端口号8080(固定端口)。
链接http://10.20.5.51:8080/PortalServer/portal.jsp?url=http://comm.inner.bbk.com,“http://10.20.5.51:8080/PortalServer/portal.jsp”是Portal认证页面的地址。“http://comm.inner.bbk.com”是终端在认证前访问的原始地址,记录这个地址是为了在认证后自动跳转到客户在认证前在Web浏览器地址栏输入的原始网址。
虽说旅客访问的是http://comm.inner.bbk.com,但实际显示的是Portal认证的页面。
1. 旅客输入手机号,单击“获取密码”。旅客手机收到验证码短信,在认证页面输入手机号和密码,单击“认证”,对应上面流程图的(1),下面的步骤以此类推。
2. Portal服务器根据终端的IP地址查找负责接入控制的设备。
3. 在Portal服务器与接入设备建立可靠连接之前,Portal服务器会与接入设备核对Portal密钥,对应于“REQ_CHALLENGE”消息。
4. 如果两边的Portal密钥配置一致,则校验通过,接入设备会回复“ACK_CHALLENGE”消息。
Portal服务器的IP地址是10.20.5.51,使用UDP端口号50200(固定端口)。
AC的IP地址是10.20.5.254,使用UDP端口号2000(固定端口)。
从报文分析结果可看出来,本次Portal服务器与接入设备之间交互使用CHAP。
5. Portal密钥校验通过后,Portal服务器向接入设备发送终端上线请求消息“REQ_AUTH”,消息中包含用户信息。
6. 接入设备收到上线请求消息后把用户信息和加密后的密码封装在RADIUS报文,通过“Access_Request”发给RADIUS服务器。
AC的IP地址是10.20.5.254,使用UDP端口号1812(固定端口)。
RADIUS的IP地址是10.20.5.51(与Portal服务器安装在同一台PC服务器),使用UDP端口号1812(固定端口)。
7. 如果帐号和密码,与RADIUS服务器上保存的帐号和密码一致,则RADIUS服务器回复Access_Accept(以下发ACL为例)。
由Access_Accept消息可以看到,ACL ID是在RADIUS第11号属性Filter-Id,认证通过后下发给接入设备的ACL ID是3001。
8. RADIUS服务器需要通过Accounting_Request消息通知接入设备开始计费请求,表示手机在RADIUS服务器开始上线。
9. 接入设备向RADIUS服务器回复Accounting_Response消息,手机已经开始计费,在RADIUS服务器上线成功。
计费使用UDP端口,AC与RADIUS服务器分别使用1812和1813端口。
华为Agile Controller的计费不是真实意义上的计费,只是通过计费报文记录旅客的上下线时间,维护旅客的在线状态。
机场接待旅客的人数和Internet连接服务都是有限制的。为了避免RADIUS服务器和Portal服务器资源耗尽,管理员会限制旅客的在线时长。例如旅客只能上网冲浪4小时,超时后自动断开连接。
10. AC给Portal服务器回复ACK_AUTH,表示终端认证成功。
11. Portal服务器通知手机认证成功,在一个新的浏览器窗口推出 http://comm.inner.bbk.com页面(旅客在认证前访问的页面),旅客可以上网冲浪。
1.4.3 离线检测
Portal用户离线检测是为确保接入设备上或服务器上的用户在线信息正确有效。检测方式常用的有ARP探测方式和心跳报文方式。
1.4.3.1 ARP探测
ARP探测就是利用接入设备定期向已经通过认证的客户端发送单播ARP请求报文。由于接入设备和客户端之间是一个二层网络,因此在网络正常的情况下,客户端一旦收到来自接入设备的ARP请求报文则必定会响应一个ARP应答报文。如果接入设备连续若干次没有收到来自客户端的ARP应答报文,则接入设备会主动切断用户并通知Portal服务器。
仅二层Portal认证方式支持ARP探测。
1.4.3.2 心跳报文
心跳报文的方法就是在用户认证通过后,推送给用户一个连接保持页面,表示该用户处于认证状态。用户与Portal服务器之间通过心跳报文进行检测,当Portal服务器连续若干次都没有收到用户发出的心跳报文,则可以认为该用户异常离线并通知接入设备切断用户。
以上即是Portal认证的基本原理,实现Portal认证的完整配置请参见AC产品文档包。接下来我们看一下Portal认证中常见的配置和故障。
1.5 常见配置和故障
1.5.1 如何配置MAC优先的Portal认证?
MAC优先的Portal认证是指终端用户第一次通过Portal认证接入网络后,RADIUS服务器记录终端设备的MAC地址。此后,在MAC地址有效期内,终端用户在认证已断开的情况下再次访问网络时,能够直接上线,无需输入帐号和密码重新进行认证。
例如,手机用户Portal认证成功,锁屏一段时间,再次上网时需要重新输入帐号和密码进行认证。启用MAC帐号优先后,再次上网时无需重新认证。
在正常Portal认证的基础上,启用MAC帐号优先,需要进行如下设置:
1. AC上的配置(以V200R005C10版本为例)
[AC] interface wlan-ess X
[AC-Wlan-EssX] web-authentication first-mac
2. 服务器上的配置(以Agile Controller为例)
选择“系统 > 终端参数配置 > 全局参数”,启用MAC优先的Portal认证,然后输入MAC帐号的有限期。
1.5.2 如何配置主备Portal服务器?
配置主备Portal服务器能够提高Portal认证的可靠性,避免因Portal服务器故障导致用户无法上网的问题。
1. AC上的配置需要注意:
1) 配置两个Portal服务器模板,并且:
l Portal服务器模板中的server-ip和url分别为主备Portal服务器的IP地址和URL。
l Portal服务器模板下必须开启Portal服务器探测功能,探测主备Portal服务器的状态。当探测到主用Portal服务器的状态由Up变为Down时,将会启用备用Portal服务器。
2) 在VLANIF接口下绑定Portal服务器模板,主在前、备在后。
配置文件如下(以V200R005C10版本为例):
#
web-auth-server test1
server-ip 10.10.1.128 //主用Portal服务器的IP地址
port 50200
shared-key cipher %@%@VYNv5Pr$:8l5A/9JSY@VCeNJ%@%@
url http://192.168.1.1:8080/portal
server-detect //开启Portal服务器探测功能
#
web-auth-server test2 //备用Portal服务器的IP地址
server-ip 10.10.1.129
port 50200
shared-key cipher %@%@VYNv5Pr$:8l5A/9JSY@VCeNJ%@%@
url http://192.168.1.2:8080/portal
server-detect //开启Portal服务器探测功能
#
interface Vlanif10
web-auth-server test1 test2 direct //绑定Portal服务器模板,主在前、备在后
#
2. 服务器上的配置(以Agile Controller为例)
选择“资源 > 设备 > 设备管理”,点击“增加”添加接入设备。勾选“启用接入设备与Portal服务器的心跳”,在“Portal服务器IP地址列表”中添加主备Portal服务器的IP地址。
1.5.3 为什么能够直接打开Portal认证页面,但无法重定向到Portal认证页面?
故障原因 |
处理步骤 |
客户端上安装多个网卡,访问重定向前的网址的HTTP报文不能充配置认证的网卡发送。 |
客户端配置路由,使HTTP报文能够发往接入设备上认证的端口。 |
客户端DNS服务器不可达,无法实现域名解析,只能使用IP地址做重定向。 |
接入设备配置免认证规则,放行到DNS服务器的IP地址,使到DNS服务器可达。 |
接入设备上已有用户在线信息,不能再做重定向。 |
接入设备上执行cut acess-user命令,强制用户下线。 |
1.5.4 为什么免认证规则不能生效?
AC上能够配置的免认证规则rule-id的取值范围是0-127,但仅编号为0-63的免认证规则能够下发到AP,并使其在AP上生效。
1.5.5 为什么配置了MAC优先的Portal认证,但终端再次访问网络时仍会推送Portal认证页面?
AC为了保证用户的密码安全,默认开启了帐号锁定功能。在30分钟内连续认证失败的次数超过30次时,AC将帐号锁定一段时间,锁定时间内禁止该帐号的用户进行认证。
一些终端关联上SSID后,没有及时进行Portal认证,而是发起了多次MAC认证(例如手机后台应用程序在瞬间发起多条TCP请求)。由于终端MAC地址并没有录入到AAA服务器中,在30分钟内认证失败的次数超过30次,AC就会将以终端MAC地址为用户名的帐号锁定,因此MAC认证失败,弹出Portal认证页面。
可以在AAA视图下,执行命令undo remote-aaa-user authen-fail,关闭帐号锁定功能。