18.1.MikroTik RouterOS
认证以下发到ROS的地址列表/ip/firewall/address list,快过期,还是过期后。
NAS设置,点击过期前后提醒,过期前3天,过期后7天,过期前地址池名为kgq,过期后地址池名为gq,勾上统一下发地址列表。

我们先做ROS的PPPOE默认设置。

我们建立一个用户,用户管理,101为蓝色,正常状态。

拔上号

现在我们改为已经过期,账号同时变成了粉红色(需要至少上线过一次才会变颜色),查看拔号状态,可以看到,ROS的Address Lists已经有一个标记为gq。


我们先做过期后的提醒页面设置
/ip firewall nat
add action=accept chain=srcnat comment="允许访问计费" disabled=no dst-address=192.168.88.1
add action=masquerade chain=srcnat comment="计费上网" disabled=no src-address=192.168.88.1
add action=dst-nat chain=dstnat comment="已经过期用户跳转到计费1084" disabled=no dst-port=80 protocol=tcp src-address-list=gq to-addresses=192.168.88.1 to-ports=1084
add action=masquerade chain=srcnat comment="正常上网" disabled=no src-address=10.11.0.1-10.11.20.254

Mangle设置
/ip firewall mangle
add action=change-mss chain=forward comment=mss disabled=no new-mss=1440 passthrough=yes protocol=tcp tcp-flags=syn
add action=change-ttl chain=forward comment=TTL disabled=no new-ttl=increment:1 passthrough=yes
add action=accept chain=prerouting comment="允许计费用户间互访" disabled=no dst-address=192.168.88.1 src-address=10.11.0.1-10.11.20.254
add action=accept chain=prerouting disabled=no dst-address=10.11.0.1-10.11.20.254 src-address=192.168.88.1
add action=mark-routing chain=prerouting comment="计费上网" disabled=no new-routing-mark=mark1 passthrough=no src-address=192.168.88.1
add action=mark-routing chain=prerouting comment="过期后允许DNS解析" disabled=no dst-port=53 new-routing-mark=mark1 passthrough=yes protocol=udp src-address-list=gq
add action=accept chain=prerouting disabled=no src-address-list=gq
add action=mark-routing chain=prerouting comment="所有正常用户连网,以下也可以是你的负载脚本" disabled=no new-routing-mark=mark1 passthrough=no src-address=10.11.0.1-10.11.20.254

防火墙我们加一些设置,不让过期后的用户访问其余端口,避免QQ登录上连网。
Filter设置
/ip firewall filter
add action=accept chain=forward comment="允许DNS,80和弹窗的端口" disabled=no dst-port=80,1081-1087 protocol=tcp src-address-list=gq
add action=accept chain=forward disabled=no dst-port=53 protocol=udp src-address-list=gq
add action=drop chain=forward comment="不允许过期后连网" disabled=no src-address-list=gq

然后我们在计费里面设置一个用户已经过期,拔号试下

可以看到,已经获取到了用户的资料及过期时间。
我们继续补充过期前的提醒,这个要复杂些。
/ip firewall nat
add action=accept chain=srcnat comment="允许访问计费" disabled=no dst-address=192.168.88.1
add action=masquerade chain=srcnat comment="计费上网" disabled=no src-address=192.168.88.1
add action=dst-nat chain=dstnat comment="已经过期用户跳转到计费1084" disabled=no dst-port=80 protocol=tcp src-address-list=gq to-addresses=192.168.88.1 to-ports=1084
/ip firewall nat
add action=dst-nat chain=dstnat comment="快过期网页跳转" disabled=no dst-port=80 packet-mark=kgq protocol=tcp src-address-list=kgq to-addresses=192.168.88.1 to-ports=1082
add action=dst-nat chain=dstnat disabled=no dst-address=1.2.3.123 dst-port=8883 protocol=tcp src-address-list=kgq to-addresses=192.168.88.1 to-ports=1081
add action=masquerade chain=srcnat comment="正常上网" disabled=no src-address=10.11.0.1-10.11.20.254

Mangle设置
 
/ip firewall mangle
add action=change-mss chain=forward comment=mss disabled=no new-mss=1440 passthrough=yes protocol=tcp tcp-flags=syn
add action=change-ttl chain=forward comment=TTL disabled=no new-ttl=increment:1 passthrough=yes
add action=accept chain=prerouting comment="允许计费用户间互访" disabled=no dst-address=192.168.88.1 src-address=10.11.0.1-10.11.20.254
add action=accept chain=prerouting disabled=no dst-address=10.11.0.1-10.11.20.254 src-address=192.168.88.1
add action=mark-routing chain=prerouting comment="计费上网" disabled=no new-routing-mark=mark1 passthrough=no src-address=192.168.88.1
add action=mark-routing chain=prerouting comment="过期后允许DNS解析" disabled=no dst-port=53 new-routing-mark=mark1 passthrough=yes protocol=udp src-address-list=gq
add action=accept chain=prerouting disabled=no src-address-list=gq
/ip firewall mangle
add action=add-src-to-address-list address-list=kgq_ok address-list-timeout=12h chain=prerouting comment="快过期网页跳转" disabled=no dst-address=1.2.3.123 dst-port=8883 protocol=tcp src-address-list=kgq
add action=accept chain=prerouting disabled=no dst-address=1.2.3.123
add action=mark-packet chain=prerouting disabled=no dst-address=!1.2.3.123 dst-port=80 new-packet-mark=kkgq passthrough=yes protocol=tcp src-address-list=!kgq_ok
add action=mark-packet chain=prerouting disabled=no new-packet-mark=kgq packet-mark=kkgq passthrough=no src-address-list=kgq
add action=mark-routing chain=prerouting comment="所有正常用户连网,以下也可以是你的负载脚本" disabled=no new-routing-mark=mark1 passthrough=no src-address=10.11.0.1-10.11.20.254

kgq_ok表示我们跳转成功的12小时内不再重复跳转,可以看得到的。1.2.3.123配合手动确认,允许通过。最下面的new-packet-mark=kgq是还没有跳转的标记为kgq让nat来跳转。

快过期的用户仍是需要连网的,所以不需要防火墙的阻止。

拔号,成功,我们已经提示了快过期,这里弹出一个1.1.1.1的1083是什么呢,是自动确认的,如果这个被拦截打不开,则需要点

自动确认需要修改计费过期提醒源码才会生效,如下图,要修改为计费的IP。

修改完后,需要切换回编辑模式,点保存才生效,代码编辑模式保存不成功。
可以看到

已经自动确认了。
如果弹不出来,是如何手动确认的呢。

我们可以看到,手动确认的源码是访问一个1.2.3.123:8883的IP和端口,这个IP和端口其实根本不存在,即不是计费的也不是路由的,而是我们随意设置的
那么用户点击后应该会打不开才是。
可是我们的路由会帮他打开。

这一条,用户访问1.2.3.123:8883时,会跳转到计费的1081端口上,这样的话,计费的1081会默认跳转到hao123.com的网站,这样我们就完成了收动确认。
这个能跳转成功的前提是,计费的网关是ROS路由。如果计费的网关不是路由的话,我们可能就PING不通计费了,更谈不上跳转成功了。 \
点击网络设置,网卡设置,网关设置,往下静态路由
route add-net 10.11.0.0/16 gw 192.168.88.254

设置成功后可以看出这一条。

我们把整个段10.11.0.0所有IP,指向到192.168.88.254,再测试

上面的nat和managle及filter源码示列都可以复制到脚本里面运行自动加入,建议先自己做好测试。
用户离线后,快过期的状态还是在里面,需要脚本来把下线用户的快过期提醒删除,下面的脚本对所有过期前提醒功能的有效。

# 凌风认证计费[LFRadius]
# 脚本放在/system/scheduler里,每60秒运行一次便可
# 就改kgq 和kgqok的变量后面的值便可
# http://www.lflflf.net
# ============================================================
:local kgq kgq
:local kgqok kgq_ok
:local ip
/ip firewall address-list
:foreach i in=[find list=$kgqok] do={
:set ip [get $i address]
:if ([:len [find dynamic=yes address=$ip list=$kgq]]=0) do={remove $i}
}


直接复制上面的,只有快过期需要这个脚本一来守护

Ros不支持在云端,提示页面显示出用户信息
© 凌风认证计费 http://www.lflflf.net/

文档更新时间: 2024-03-02 14:52   作者:admin