Print

无线portal认证穿越NAT认证不成功问题分析

组网及说明

不涉及

问题描述

   现场无线portal认证,终端穿越NAT后,使用web拨号报“设备拒绝请求”,无法认证成功

过程分析

以测试账号testli@system 为例

1、  查看portal server debug日志,可以看出portal server 记录日志报错如下

Portal 服务器发送req_challeng报文后,设备回应拒绝请求

2019-10-30 14:47:55.145[Portal服务器][调试(0)][19][ProxyResponseDeviceHandler::run]172.16.106.8 ; REQ_CHALLENGE(1) ; 606 ; 172.16.106.2:2000 ; 报文处理成功

   

        Packet Type:REQ_CHALLENGE(1)

        SerialNo:606

        Address:172.16.96.25

        Port:50300

        RemoteIp:172.16.106.2

        RemotePort:2000

        Version:portal 2.0

        Auth Type:CHAP

        ErrorID:0

        UserIP:172.16.106.8 //发送时携带的终端IP地址

        UserPort:0

        ReqID:0

        Rsvd:0

        attriNum:0

   

   

   

 

2019-10-30 14:47:55.147[Portal服务器][调试(0)][16][ProxyRequestHandler::run]172.16.106.8 ; ACK_CHALLENGE(2) ; 606 ; 172.16.106.2:2000 ; 设备拒绝请求(1) //设备回应拒绝请求

   

        Packet Type:ACK_CHALLENGE(2)

        SerialNo:606

        Address:172.16.96.25

        Port:50908

        RemoteIp:172.16.106.2

        RemotePort:2000

        Version:portal 2.0

        Auth Type:CHAP

        ErrorID:1

        UserIP:172.16.106.8 //portal 发送req_chagllenge报文时携带的终端IP地址

        UserPort:0

        ReqID:0

        Rsvd:0

        attriNum:1

   

   

        Device Ip:172.16.106.2

   

 

2019-10-30 14:47:55.147[Portal服务器][调试(0)][80][RequestProcessor::run]Begin processRequest() method.

2019-10-30 14:47:55.148[Portal服务器][调试(0)][80][RequestProcessor::ackChallengeEvent]获取域信息成功, 所基于的公网IP172.16.106.8 私网IP172.16.106.8、代理端接收报文源地址是172.16.96.25、接入端口是null

2019-10-30 14:47:55.148[Portal服务器][调试(0)][80][RequestProcessor::ackChallengeEvent]errorCode = 1

2019-10-30 14:47:55.148[Portal服务器][错误(160010)][80][RequestProcessor::ackChallengeEvent]设备回应报文出错,错误码为“1”,错误信息为“设备拒绝请求”,用户名称为“testli@system

 

2、   查看上面报文的公网地址和私网地址是一样的,现场终端是过了NAT场景,过了NAT后,私网地址和公网地址应该是不一致的,此处portal服务器获取到的私网地址和公网地址是一致的,说明portal 服务器没有获取到终端的私网地址。咨询客户表示私网地址应该是128.192.0.103地址,这个也证明portal服务器没有拿到正确的终端私网地址

3、 在终端侧进行抓包,查看终端发送给portalserver的http报文,可以到终端发给设备的http请求报文中,携带了用户的私网IP地址,使用的字段是wlanuserip


4、 终端发送的请求中带了私网IP地址,但是portal server并没有获取到,经过确认,目前portal服务器获取终端IP地址是通过USERIP这个字段来识别的,设备侧配置成wlanuserip这个字段,portal服务器无法识别,因此会从HTTP请求的源地址获取终端的ip地址,而http的源地址是过了NAT后的地址因此此时就拿不到私网IP地址,导致CHAP握手失败,认证失败


解决方法

将设备侧重定向参数中配置的用户IP地址的参数改成userip,重新认证,问题解决