一个强制网络门户允许您通过网页强制认证,或重定向到指定网页。这通常用于热点网络,但也广泛用于企业网络,以便在无线或Internet访问上获得额外的安全层。

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户

典型应用

  • 访客网络

  • 酒店和公共区域无线上网

  • 其他需要的场景

模板管理

OPNsense独特的模板管理器使您可以轻松设置自己的登录页面。同时它还提供其他功能,例如:

  • URL重定向

  • 自定义弹出窗口的选项

  • 自定义启动页面

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_02

区域管理

可以在每个接口上设置不同的区域,或者多个接口可以共享一个区域设置。每个区域可以使用不同的强制门户模板或与其他区域共享。

认证

通过HTTPS或仅限splash的门户网站进行安全身份验证,并将URL重定向到指定页面,可以使用不同的源来验证区域中的用户:

  • LDAP [Microsoft Active Directory]

  • Radius

  • 本地用户管理

  • 优惠券/门票

  • 不认证(仅限启动画面)

  • 多个(以上组合)

凭证管理

OPNsense的Captive Portal有一个简单的凭证创建系统,可以将凭证导出到csv文件,以便与您喜欢的应用程序一起使用。

超时和重连接

用户空闲一段时间后(空闲超时),可以终止连接和/或即使用户仍然处于活动状态(硬超时),也会在几分钟后断开连接。如果用户在空闲超时和/或硬超时内重新连接,则不需要登录,用户可以恢复其活动会话。

带宽管理

内置流量×××器可用于:

  • 均匀分享带宽

  • 优先考虑协议端口号和/或IP地址

门户旁路

可以将指定MAC和IP地址列为白名单,以绕过门户网站。

实时报告

集成了实时报告系统,提供:

  • 带宽使用IP地址排名(流量图)

  • 活跃的会话

  • 优惠券剩余时间

基于类别的Web过滤

通过将强制门户与高速缓存代理相结合,可以利用类别Web过滤并为用户阻止某些内容,并通过启用高速缓存来减少带宽并缩短响应时间。另请参见:高速缓存代理

平台集成

通过集成的REST API,强制门户应用程序可以与其他服务集成。请参阅:使用API

设置访客网络

访客网络广泛用于允许客人在酒店,房车公园或企业中控制互联网访问。

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_03

注意:对于本示例,我们希望GUESTNET接口与您的实际访客网络交换机或接入点连接。本教程未说明如何设置无线网络。

高级

强制门户也可以与代理的基于类别的Web过滤相结合。本教程将介绍如何组合这两个功能。

先决条件

我们将使用全新的OPNsense安装开始配置,更新到最新的补丁版本(在我们的示例中为16.1.5_1)。本示例的防火墙需要3个网络端口(LAN / WAN / GUESTNET)。

第1步 - 配置接口

对于访客网络,我们将添加一个新接口。转到接口-> 分配并使用+添加新接口。点击保存。新接口将被称为OPT1,单击左侧菜单中的[OPT1]来更改设置。

选择启用接口,并填写以下数据:

描述GUESTNET接口的描述性名称
阻止专用网络不选
阻止bogon网络不选
IPv4配置类型静态IPv4
IPv6配置类型没有
MAC地址(留空)
MTU(留空)
MSS(留空)
速度和双工默认
静态IPv4地址192.168.200.1/24
IPv4上游网关没有

点击保存,然后点击应用更改

第2步 - 配置DHCP服务器

转到服务-> DHCPv4->,然后单击GUESTNET选项卡。

  • 填写以下内容为(其他选项保留默认设置):

启用选中在GUESTNET上启用DCHP服务器
范围192.168.200.100-192.168.200.200
DNS服务器192.168.200.1提供带租约的DNS
网关192.168.200.1提供租约的网关

单击保存

第3步 - 添加防火墙规则

转到防火墙 - >规则,添加新规则。

现在添加以下规则(按执行顺序排列):

1.允许DNS

允许访客访问DNS转发器。规则内容(保留所有其他选项默认):

操作放行允许此流量
接口GUESTNETGuestNet接口
协议TCP / UDP
GUESTNET 网络
目标GUESTNET 地址
目标端口范围DNS / DNS从DNS到DNS
类别GuestNet Basic Rules用于分组规则的类别
描述Allow DNS

单击保存

2.允许强制门户登录

操作放行允许此流量
接口GUESTNETGuestNet接口
协议TCP
GUESTNET网络
目标GUESTNET地址
目标端口范围8000/10000
类别 GuestNet Basic Rules用于分组规则的类别
描述Allow Captive Portal Login

单击保存

3.阻止本地网络

操作阻止阻止此流量
接口GUESTNETGuestNet接口
协议任何
GUESTNET网络
目标LAN
类别GuestNet Basic Rules用于分组规则的类别
描述Block Local Networks

单击保存

4.阻止访问防火墙

操作阻止阻止此流量
接口GUESTNETGuestNet接口
协议any
GUESTNET网络
目标GUESTNET地址
类别GuestNet Basic Rules用于分组规则的类别
描述Block Firewall Access

单击保存

注意:这些规则用于阻止访问我们的本地LAN网络和访客访问防火墙。如果您有多个本地网络,则需要使用多个规则阻止它们中的每一个,或者使用更大的子网来覆盖它们。

1.允许访客网络

操作放行允许此流量
接口GUESTNETGuestNet接口
协议any
GUESTNET网络
目的地any
目标端口范围any
类别GuestNet Basic Rules用于分组规则的类别
描述Allow Guest Network

单击保存,然后单击应用更改

完成后的规则列表应如下图所示:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_04

第4步 - 创建强制门户

转到服务 - >强制门户 - >管理

要添加新区域,请按表单右下角的+

注意:当使用多个接口与强制网络门户时,每个接口可以有自己的区域,或者多个接口可以共享区域。

本示例的设置如下:

启用选中
接口GUESTNET删除默认值并添加GUESTNET
使用认证(留空)删除任何默认设置
空闲超时0禁用空闲超时
强制超时0没有硬超时
并发用户登录不选用户只能登录一次
SSL证书none使用普通的http
主机名(留空)用于重定向登录页面
允许的地址(留空)
自定义模板none使用默认模板
描述Guest Network选择区域的说明

保存应用

第5步 - 创建模板

模板功能是OPNsense强制门户解决方案最强大的功能之一,它非常容易使用。让我们创建一个自定义登录页面,单击选项卡模板,然后单击右下角的下载图标(OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_05)。

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_06

现在下载默认模板,我们将使用它来创建自己的模板。解压缩模板zip文件,文件如下所示:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_07

可以修改模板的大多数文件,有些是默认文件不能修改。上传后,将忽略对exclude.list中列出的文件所做的任何更改。目前这些包括bootstrap java脚本和一些字体。

启用强制门户后,默认屏幕如下所示:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_08让我们使用新的徽标和欢迎文本来更改这个默认设置,例如:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_09使用编辑器打开index.html文件进行修改。

让我们对模板进行以下修改:

  1. 将徽标更改为company-logo.png

  2. 删除顶部的导航栏

  3. <img>标记中删除高度和宽度

  4. 添加欢迎文本

  5. 建立公司网站的链接

找到以下部分:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_10

并改为:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_11

将公司徽标复制到图像目录。现在压缩模板目录并单击模板选项卡上的+上传新模板。

Download the example Template (full)

输入模板名称,在这里我们使用Company。点击上传

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_12

要在GUESTNET接口上启用强制网络门户,只需单击“ 应用”

第6步 - 限制访客带宽

在本示例中,我们将为访客网络的Internet访问保留10Mbps的下载和1Mbps的上传带宽。这个带宽将在连接的客户端之间平均分配。

注意:通过均匀分享,我们的意思是如果10个用户同时尝试使用尽可能多的带宽,那么每个人都会得到1/10。因此,在本例子中,每个客户端设置为1Mbps下载带宽。

转至:Firewall->Traffic Shaper->Settings(防火墙 - >流控 - >设置)

单击表单右下角的+,为下载创建管道,并输入以下详细信息:

启用选中
带宽10
单位Mbit / s
掩码目标
描述pipe_10Mbps_down

单击保存更改。并为上传流量添加另一个管道。

启用选中
带宽1
单位Mbit / s
掩码目标
描述pipe_1Mbps_up

单击保存更改

创建流量×××器规则。单击规则选项卡,然后按 + 执行操作。

首先切换高级模式(表单的左上角),然后填写以下详细信息(其他设置保留默认值):

序列(保留默认值)
接口WAN
接口2GUESTNET
方向
目标pipe_10Mbps_down
描述Limit Guests download to 10Mbps

单击保存更改

序列(保留默认值)
接口WAN
接口2GUESTNET
方向
目标pipe_1Mbps_up
描述Limit Guests upload to 1Mbps

单击保存更改

现在单击“ 应用”来应用更改。

第7步-测试GuestNet

将您的PC或笔记本电脑连接到访客网络并启动您喜欢的浏览器。输入要浏览的地址,您将看到我们在上一步中使用模板创建的登录表单。单击登录并开始浏览。

要测试您的流量带宽,请访问速度测试站点,例如http://www.speedtest.net/ 。测试的结果应如下图所示:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_13

注意:请记住,在此测试中我们只有一个连接的客户端,因此所有预留带宽都可供我们的客户使用。

×××酒店示例

这一节我们将实施×××酒店访客网络解决方案。先按照上面1-7的步骤选择您想要为客人使用的模板。

第8步 - 添加凭证服务器

转到:System->Access->Servers(系统 - >访问- >服务器),然后单击页面右上角的添加服务器

填写:

描述性名称Vouchers凭证服务器的名称
类型优惠券

单击“ 保存”

第9步 - 创建优惠券

返回强制门户并选择优惠券(服务 - >强制门户 - >凭证)。单击表单右下角的“ 创建凭证 ”。

让我们为客人创造1天的优惠券:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_14输入有效期(1天),凭证数量和组名称(Wifi day pass)。例如,我们创建了10张优惠券。单击Generate(生成)

将生成一个名为wifi day pass.csv的文件。该文件的内容如下所示:

username,password,vouchergroup,validity"IgJw@Pqf","MLi+Sb7Ak#","Wifi day pass","86400""++?f[@i[","!m*)e(@;F,","Wifi day pass","86400""bbtK9mBk","f/jCDL3:)b","Wifi day pass","86400""iD%L[jLJ","I#FoZ#g!AY","Wifi day pass","86400""+4bA\E[I","CNavt@0ck+","Wifi day pass","86400""+,fg/\Sv","#22iIL-iQA","Wifi day pass","86400"":;Pc\N#s","Y\HuG9vAN$","Wifi day pass","86400""00nLb=0Q","0*C_\_Nb_x","Wifi day pass","86400""PA$J0YHF","kp!q%9;m)g","Wifi day pass","86400""a,mCxbya","LcnCb#g/di","Wifi day pass","86400"

内容如下:

Username访客需要登录的用户名
password客人需要登录的密码
vouchergroup您创建的组的名称
validity优惠劵在几秒钟内有效的时间

注意:出于安全原因,优惠劵的纯文本密码不会存储在防火墙上。

通过将cvs数据与word、open office或任何其他dtp / text编辑器合并,此文件可填写在访客凭证(在纸上)。

例如:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_15

注意:激活优惠券后,无论用户是否登录或注销,都将使用该时间。对于“使用时间”的解决方案,可以通过设置FreeRADIUS进行记帐来处理。

第10步 - 凭证认证

通过更改区域设置启用凭证身份验证。转到选项卡区域,然后单击旁边的铅笔图标选择访客网络。

将原来身份验证栏的留空字段改为Vouchers

完成后,单击“ 保存更改”,然后单击“ 应用”以应用新设置。

现在,用户将看到登录表单作为模板的一部分:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_16

检查会话

要检查活动会话,请转到服务 - >强制门户 - >会话 ,我们当前的会话如下所示:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_17您可以通过单击垃圾箱来删除活动会话。

注意:注意右上角的选择框,您可以在配置多个区域时选择正确的区域。

检查凭证状态

您可以通过转到强制网络门户的凭证页面(服务 - >强制门户 - >凭证)来检查凭证的有效性和活动状态,并选择正确的数据库(在我们的示例中为Wifi day pass )。

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_18

注意:状态有效意味着它已激活且仍然有效。

高级功能 - 会话弹出窗口

让我们创建一个会话弹出窗口,这样用户就可以看到有关会话和注销的一些细节。我们可以使用OPNsense的内置api来调用。

使用以下api调用(对于区域ID 0):

/api/captiveportal/access/status/0/

此api调用的响应如下所示(对于活动会话):

{"userName":"IgJw@Pqf","macAddress":"10:dd:b1:bc:75:46","acc_session_timeout":14095,"authenticated_via":"Vouchers","packets_out":2834,"bytes_in":512869,"last_accessed":1457527526,"zoneid":0,"sessionId":"npd5bd6SIVQeMfIbWBdong==","startTime":1457526930.1719,"bytes_out":1322351,"ipAddress":"192.168.200.100","packets_in":3181,"clientState":"AUTHORIZED"}

你可以点击下面的链接下载完整的演示模板:

Download the example Template (with popup)

该演示包括一个名为session_popup.html的新文件,其中包含显示凭证上剩余时间和注销按钮的所有逻辑。以及对index.html页面的简单更新,以便在成功登录时调用弹出窗口。后者看起来像这样(用一点上下文显示):

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_19

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_20

高级功能 - CLI会话状态

OPNsense有一个非常强大的CLI,对于调试目的特别有用。在本示例中,我们将使用cli列出所有活动会话的状态。

在cli提示符下输入以下内容(对于区域ID 0):

configctl captiveportal list_clients 0

输出将类似于此:

OPNsense用户手册-强制网络门户_OPNsense 用户手册 强制门户_21