网络拓扑

- S1 交换机 配置本地Portal+AAA服务
- R1 作为上联上网设备 用于后续实验结果测试
- HOST 本地计算机 用于Portal WEB登入账户密码 测试Portal准入
注意:
- 请事前自行导入自定义Portal页面 否则无法正常验证
- 访问R1-WEB网页时 S1会自动重定向到Portal界面
最终效果:HOST主机通过WEB界面登入账户密码,通过Portal认证。然后允许访问R1网络设备
配置步骤
yaml
# 配置域
domain portal
authentication portal local
authorization portal local
accounting portal none
# 配置Portal服务器
portal web-server newpt
url http://192.168.56.1:8000/portal # Portal本地接口地址 后续用户访问此链接输入账户密码
#
portal local-web-server http
default-logon-page default.zip # Web登入文件
tcp-port 8000 # 端口号
# 配置Portal本地账户
local-user user class network
password simple 123456
service-type portal
# 接口开启Portal
interface Vlan-interface1
ip address 192.168.56.1 255.255.255.0
portal enable method direct # 认证模式为本地
portal domain portal
portal apply web-server newpt
# 配置漫游
portal roaming enable
# 默认路由
ip route-static 0.0.0.0 0 192.168.100.1
---------------------------------------------------------
# 若对接radius [本次实验不涉及]
radius scheme rs1
primary authentication 192.168.0.112
primary accounting 192.168.0.112
key authentication simple radius
key accounting simple radius
user-name-format without-domain
# [本次实验不涉及]
domain portal
authentication portal radius-scheme rs1
authorization portal radius-scheme rs1
accounting portal radius-scheme rs1
---------------------------------------------------------
# 命令查看上线情况
[S1]dis portal user username user
Username: user
Portal server:
State: Online
VPN instance: N/A
MAC IP VLAN Interface
0a00-2700-0006 192.168.56.101 1 Vlan-interface1
Authorization information:
DHCP IP pool: N/A
User profile: N/A
Session group profile: N/A
ACL number: N/A
Inbound CAR: N/A
Outbound CAR: N/A
[S1]
HOST主机配置路由
powershell
# HOST计算机只需配置路由
PS C:\Users\admin> route add 192.168.100.0 MASK 255.255.255.0 192.168.56.1
操作完成!
PS C:\Users\admin>
R1配置回程路由
arduino
IP route-static 192.168.56.0 24 192.168.100.2
效果测试
输入账户 user 密码 123456 
链接成功界面 
查看Portal会话表项
less
[S1]dis portal session user-type portal
Total Portal sessions: 1
IP address MAC address Interface User type
192.168.56.101 0a00-2700-0006 Vlan1 Portal
[S1]
然后测试连通性
ini
PS C:\Users\admin> PING 192.168.100.1
正在 Ping 192.168.100.1 具有 32 字节的数据:
来自 192.168.100.1 的回复: 字节=32 时间<1ms TTL=254
来自 192.168.100.1 的回复: 字节=32 时间<1ms TTL=254
来自 192.168.100.1 的回复: 字节=32 时间<1ms TTL=254
来自 192.168.100.1 的回复: 字节=32 时间<1ms TTL=254
192.168.100.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
PS C:\Users\admin>
断开链接后 再进行测试 
访问失败 Portal实验成功
markdown
PS C:\Users\admin> PING 192.168.100.1
正在 Ping 192.168.100.1 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。
192.168.100.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),
PS C:\Users\admin>
Portal配置白名单
sql
portal free-rule 0 source ip 192.168.56.101 32
portal free-rule 0 source ip 192.168.56.101 32 destination ip 192.168.100.1 32 tcp 8080
# 删除规则
undo portal free-rule all
# 放行特定端口
portal free-rule 0 destination ip any udp 53
portal free-rule 1 destination ip any udp 67
portal free-rule 2 destination ip any udp 68
自定义网站规范
1. 功能简介
用户自定义的认证页面为HTML文件的形式,压缩后保存在设备的存储介质的根目录中。每套认证页面可包括六个主索引页面(登录页面、登录成功页面、登录失败页面、在线页面、系统忙碌页面、下线成功页面)及其页面元素(认证页面需要应用的各种文件,如Logon.htm页面中的back.jpg),每个主索引页面可以引用若干页面元素。
用户在自定义这些页面时需要遵循一定的规范,否则会影响本地Portal Web服务功能的正常使用和系统运行的稳定性。
2. 文件名规范
主索引页面文件名不能自定义,必须使用下表中所列的固定文件名。
表1-1 主索引页面文件名
| 主索引页面 | 文件名 |
|---|---|
| 登录页面 | logon.htm |
| 登录成功页面 | logonSuccess.htm |
| 登录失败页面 | logonFail.htm |
| 在线页面(用于提示用户已经在线) | online.htm |
| 系统忙页面(用于提示系统忙或者该用户正在登录过程中) | busy.htm |
| 下线成功页面 | logoffSuccess.htm |
主索引页面文件之外的其他文件名可由用户自定义,但需注意文件名和文件目录名中不能含有中文且字符不区分大小写。
3. 页面请求规范
本地Portal Web服务器只能接受Get请求和Post请求。
- Get请求:用于获取认证页面中的静态文件,其内容不能为递归内容。例如,Logon.htm文件中包含了Get ca.htm文件的内容,但ca.htm文件中又包含了对Logon.htm的引用,这种递归引用是不允许的。
- Post请求:用于用户提交用户名和密码以及用户执行登录、下线操作。
4. Post请求中的属性规范
4.1 认证页面中表单(Form)的编辑必须符合以下原则
- 认证页面可以含有多个Form,但是必须有且只有一个Form的
action=logon.cgi,否则无法将用户信息送到本地Portal服务器。 - 用户名属性固定为
PtUser,密码属性固定为PtPwd。 - 需要有用于标记用户登录还是下线的属性
PtButton,取值为"Logon"表示登录,取值为"Logoff"表示下线。 - 登录Post请求必须包含
PtUser、PtPwd和PtButton三个属性。 - 下线Post请求必须包含
PtButton这个属性。
4.2 需要包含登录Post请求的页面
需要包含登录Post请求的页面有 logon.htm 和 logonFail.htm。
logon.htm 页面脚本内容的部分示例:
html
<form action=logon.cgi method = post >
<p>User name:<input type="text" name = "PtUser" style="width:160px;height:22px" maxlength=64>
<p>Password :<input type="password" name = "PtPwd" style="width:160px;height:22px" maxlength=32>
<p><input type=SUBMIT value="Logon" name = "PtButton" style="width:60px;" onclick="form.action=form.action+location.search;">
</form>
4.3 需要包含下线Post请求的页面
需要包含下线Post请求的页面有 logonSuccess.htm 和 online.htm。
online.htm 页面脚本内容的部分示例:
html
<form action=logon.cgi method = post >
<p><input type=SUBMIT value="Logoff" name="PtButton" style="width:60px;">
</form>
5. 页面文件压缩及保存规范
- 完成所有认证页面的编辑之后,必须按照标准Zip格式将其压缩到一个Zip文件中,该Zip文件的文件名只能包含字母、数字和下划线。
- 压缩后的Zip文件中必须直接包含认证页面,不允许存在间接目录。
- 压缩生成的Zip文件可以通过FTP或TFTP的二进制方式上传至设备,并保存在设备的根目录下。
Zip文件保存目录示例:
text
<Sysname> dir
Directory of flash:
1 -rw- 1405 Feb 28 2008 15:53:20 ssid1.zip
0 -rw- 1405 Feb 28 2008 15:53:31 ssid2.zip
2 -rw- 1405 Feb 28 2008 15:53:39 ssid3.zip
3 -rw- 1405 Feb 28 2008 15:53:44 ssid4.zip
2540 KB total (1319 KB free)
6. 认证成功后认证页面自动跳转
若要支持认证成功后认证页面的自动跳转功能,即认证页面会在用户认证成功后自动跳转到指定的网站页面,则需要在认证页面 logon.htm 和 logonSuccess.htm 的脚本文件中做如下改动。
6.1 修改 logon.htm
将 logon.htm 文件中的Form的 target 值设置为 "_blank"。
修改的脚本内容如下突出显示部分所示:
html
<form method=post action=logon.cgi target="_blank">
6.2 修改 logonSuccess.htm
logonSuccess.htm 文件添加页面加载的初始化函数 pt_init()。
增加的脚本内容如下突出显示部分所示:
html
<html>
<head>
<title>LogonSuccessed</title>
<script type="text/javascript" language="javascript" src="pt_private.js"></script>
</head>
<body onload="pt_init();" onbeforeunload="return pt_unload();">
... ...
</body>
</html>
参考文档