找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10776|回复: 7

[pppoe] ROS应用实例:用户首次上网打开上网提示页面(Hotspot)

[复制链接]
发表于 2011-10-20 11:31:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
ros应用实例:用户首次上网打开上网提示页面(Hotspot)

一、用户首次上网打开上网提示页面
     本功能由ROS的hotspot实现。启用hotspot的命令是:IP--Hotspot,打开Hotspot配置窗口后点“Hotspot Setup”来安装它。下面是几个安装截图:

在LAN接口启用Hotspot


指定内部地址段
Masquerade Network选项表示:是否对此网络做NAT,由于我是在不需要NAT的网络中使用,因此我不勾选。


如果内部PC使用DHCP的话,要指定其使用的IP POOL,如果内部PC使用静态IP地址,则此处可省略。


指定使用的DNS服务器地址,如果内部PC配置了DNS,此处可省略。

安装完Hotspot之后,系统会自动产生相应的文件。我们是要让用户首次打开网页显示提示页,而不是让用户登录认证,因此在Hotspot的Server Profiles中做如下设置:

勾选中“HTTP CHAP”和“Trial”两项
为了让用户每天上网时,只打开提示页一次,Trial Uptime Limit 设置为24小时,然后在system--scheduler中添加如下的脚本,让ROS每天在凌晨清除用户信息,这样,用户每天第一次打开网页都会自动重定向到提示页:
/ip hotspot active remove [/ip hotspot active find server=hotspot1]
/ip hotspot user remove [/ip hotspot user find dynamic]
/ip hotspot host remove [/ip hotspot host find dynamic]
至此,Hotspot设置完成,当用户第一次打开网页时,会自动重定向到一个页面。此页面为hotspot/login.html,可以在WINBOX中点击左侧的“Files”来修改。你可以在此页输入你要提醒大家的信息,我制作的提示页如下:


二、网络故障(内部、外部网关设备坏)时自动显示对应的问题页面
       本功能的实现主要是用PING 网关MAC(ROS和网关设备在一个网络中)或IP(ROS和网关设备不在一个网络中)的方式来探测网关是否正常。当探测到网关设备不正常时,将内部到外部的访问利用WEB代理的重定向功能转向到内部的某个页面(当然也可以使用DST-NAT重定向到一个IP,但是使用DST-NAT时,只能当用户访问网站首页时可以正常重定向,当用户直接访问二级页面时就不行了)。
      正常情况下,内部用户访问互联网,不用ROS的WEB代理功能。当网关出问题时才使用。此时要在ROS上做DST-NAT,将内部到外部的TCP 80出站访问(即标准HTTP访问)重定向到ROS的WEB代理端口。
      由于是在网络不通的情况下做DST-NAT劫持网络访问,此时内部用户通过域名访问外部的网站时,域名不能被解析为IP,DST-NAT将不能正常工作,进而也无法做到内部到外部的TCP 80出站访问重定向到ROS的WEB代理端口。如果想让DST-NAT正常工作,则需要在内部有一个DNS服务器,它负责将所有的域名解析为某个IP。将所有域名都解析为某个IP的DNS服务器的设置,请看另外一篇博文:【原创】让DNS服务器解析所有域名到指定IP。要想让内部用户所有的域名解析重定向到内部的DNS服务器,则需要对UDP 53出站通信做DST-NAT,劫持到目的为内部DNS服务器。
       当DST-NAT能正常工作时,我们就可以做将内部用户到外部的TCP 80出站访问(即标准HTTP访问)重定向到ROS的WEB代理端口。
     使用PING探测网关是否正常,需要实时检测,因此需要做到System--Scheduler里,由于网络正常是使用Hotspot,因此当探测网关出问题时,需要停止Hotspot服务,脚本如下(下面的00:0C:29:9B:11:38 是交换机MAC,10.0.105.1是ROS的LAN地址,10.0.105.9是内部的DNS服务器和提问错误页面提示的WEB服务器地址):

:if ([/ping 00:0C:29:9B:11:38 count=1] = 0)  do={
  :if ( [ /ip hotspot get hotspot1 disabled] = false ) do={
      /ip hotspot disable hotspot1}
  :if ( [ /ip proxy get enabled] = false ) do={
      /ip proxy set enabled=yes}
  :if ([:len [/ip firewall nat find comment="local_error"]]=0 ) do={
      /ip firewall nat add chain=dstnat action=dst-nat to-addresses=10.0.105.1 to-ports=8080 protocol=tcp in-interface=LAN dst-port=80 comment="local_error"
      /ip firewall nat add chain=dstnat action=dst-nat to-addresses=10.0.105.9 to-ports=53 protocol=udp in-interface=LAN dst-port=53 comment="local_error"}} else={
  :if ([:len [/ip firewall nat find comment="local_error"]]>0 ) do={
      /ip firewall nat remove [/ip firewall nat find comment="local_error"]}
  :if ( [ /ip proxy get enabled] = true ) do={
      /ip proxy set enabled=no}
  :if ( [ /ip hotspot get hotspot1 disabled] = true ) do={
      /ip hotspot enable hotspot1}}

ROS的web 代理里的设置如下:


DNS服务器我使用的是FreeBSD下的BIND,named.root的配置如下:

192.168.1.9为任意IP均可
错误页面提示的WEB服务器和DNS服务器是在一个系统下,用的是nginx。nginx的配置文件如下:


评分

参与人数 1铜板 -5 收起 理由
47771885 -5 神马都是浮云

查看全部评分

routeros
发表于 2011-10-20 11:36:17 | 显示全部楼层
“nginx的配置文件如下:”。。。帖子还没完吧
routeros
回复

使用道具 举报

发表于 2011-10-20 17:13:17 | 显示全部楼层
没复制完、、、、、
routeros
回复

使用道具 举报

发表于 2011-10-20 19:32:39 | 显示全部楼层
这篇怎么和我的博文那么像?请问楼主!!
routeros
回复

使用道具 举报

 楼主| 发表于 2011-10-21 15:57:52 | 显示全部楼层
网上转载,版权归原作者所有,这里共享互相学习,本人不承担任何责任。
routeros
回复

使用道具 举报

 楼主| 发表于 2011-10-21 15:58:29 | 显示全部楼层
routeros
回复

使用道具 举报

 楼主| 发表于 2011-10-21 15:58:47 | 显示全部楼层
xieganhui 发表于 2011-10-20 11:36
“nginx的配置文件如下:”。。。帖子还没完吧

网上转载,版权归原作者所有,这里共享互相学习,本人不承担任何责任。
routeros
回复

使用道具 举报

发表于 2011-10-21 16:20:12 | 显示全部楼层
转帖最好 注明 或加上自己的理解说明
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-22 01:14 , Processed in 0.089716 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表