b、这时d出“PPPoEServerlist”对话框,点击左边的“+”号,“Interface”选项里选择内网网卡,选中“OnesessionPerHost”,按OK
二、创建IP地址池a、点击主菜单中的“IP-Pool”
b、点击“+”号,在出现的对话框中输入name,如“PPPoE”,adress,如“19216821-1921682254”。按OK
三、为刚创建的IP地址池建立路由。
a、选择主菜单中的“IP-Firewall”,在出现的“Firewall”对话框中,点击“SourceNAT”选项卡,点击“+”号,d出“SrcNATRule”对话框,
点击“General”选项卡,在“SrcAdress”中输入IP地址池的网络号和掩码,如:19216820,掩码为24b、点击“Action”选项卡,
和以前一样,在“Action”选项中选择“masquerade”,按OK
四、建立用户和用户限制。
a、点击主菜单下面的“PPP”,在出现的对话框中,点击“Profiles”选项卡,双击下面前面有“”号的默认设置,d出“PPPProfile”对话框,
点击“General”选项卡,在name里输入名称,随便。
localaddress和remoteaddress中要选择刚才在IPPool里建立的地址池。
DNSServer中输入DNS服务器地址,按右边的“……”号可以多增加几个。
b、然后按“limit”选项卡,
里面的TxBitRate和RxBitRate分别是下行和上行的带宽,根据需要设置,1024000就是1M选中OnlyOne和ChangeTCPMSS,按OK
c、点击主菜单下面的“PPP”,在d出的对话框中选择“Secrets”,并点击左边的“+”号,d出“NewPPPSecret”对话框,
分别输入name(用户名),Password(密码)
service中选择“pppoe”,按OK注:在此可以增加更多用户。
好了,现在只要客户端连在局域网上,不要设置IP,或者随便怎么设置IP,都可以通过PPPoE拨号上网了。同时,只有在ARPlist里进行了MAC-IP绑定的电脑不用拨号,开机就可以上网可能是DISABLE了LAN端口了,你只有从ROS服务器上登陆,用命令ENABLE LAN端口
如果知道与ADSL相连的WAN口的地址,你也可以通过WAN口来ENABLE LAN端口,但不如前一方法方便。这个也叫动态限速。很容易实现。
PPPOE全自动智能限速脚本
#首先建一个 脚本 A,然后放到计划里执行。内容如下
######################################################################
:local RxCurPacket 0
:local RxCurAddress 0
:local RxCurUser 0
:local RxCurRate 0
:local TxCurRate 0
:local RxMaxRate 40000
:local TxMaxRate 400000
:local RxCurMax 200
:local RxCurMaxb 70
:foreach i in=[/interface find mtu=1480] do={/interface monitor $i once do={:set RxCurPacket ($received-packets-per-second+$sent-packets-per-second); :set RxCurRate ($received-bits-per-second); :set TxCurRate ($sent-bits-per-second); :set RxCurAddress [/ppp active get $i address]; :set RxCurUser [/ppp active get $i name]};:if($RxCurMax<$RxCurPacket) do={/ip firewall nat add chain=dstnat src-address=$RxCurAddress action=dst-nat to-addresses=192168025 to-ports=80 comment=$RxCurUser}; :if($RxCurMaxb<$RxCurPacket) do={/queue simple add name=$RxCurUser target-addresses=$RxCurAddress limit-at=0/0 max-limit=50000/250000 burst-limit=80000/500000 burst-threshold=70000/400000 burst-time=5/10}; :if($RxMaxRate<$RxCurRate) do={/queue simple add name=$RxCurUser target-addresses=$RxCurAddress limit-at=0/0 max-limit=50000/250000 burst-limit=80000/500000 burst-threshold=70000/400000 burst-time=5/10}; :if($TxMaxRate<$TxCurRate) do={/queue simple add name=$RxCurUser target-addresses=$RxCurAddress limit-at=0/0 max-limit=50000/250000 burst-limit=80000/500000 burst-threshold=70000/400000 burst-time=5/10}}
:for aa from 1 to 200 do={/queue simple remove (queue $aa)}
###########################################################################
#说明:我的环境是光纤50M 用户在200,所以分给每个人的速度还是比较大的。mtu=1480根据自己ROS /interface 显示的值修改
首先对超过规定的速度和包量的用户进行限速,:set RxCurPacket ($received-packets-per-second+$sent-packets-per-second)就是定义变量RxCurPacket为上行和下行包量之和。RxCurMax 400 中的400为自己定义的包量数,可以根据自己的需要更改。
:if($RxCurMax<$RxCurPacket)就是说当当前某用户的包量超过限制值时,执行do={/ip firewall nat add chain=dstnat src-address=$RxCurAddress action=dst-nat to-addresses=192168025 to-ports=80 comment=$RxCurUser},这里是给超很多包的用户的打开网页时的警告。主页服务器可以自己架一个IIS来做。主页内容可以自己定义,比如我的“
尊敬的用户:
您好!
由于你的流量过大,影响了别人的正常应用,系统将自动对你的连接封闭。
请关闭下载软件等,再尝试新开网页。避免再次被系统拦截。
谢谢合作! ”
RxCurMaxb 200就是正常的限制包量值,我算了下,一般速度在150多K的时候,总包量差不多就到200了,这个时候就应该限制。:set RxCurRate ($received-bits-per-second)定义从用户看是上传的变量。:set TxCurRate ($sent-bits-per-second)从用户看是下栽的变量定义:local RxMaxRate 450000 就是当上传大于450K就限速:local TxMaxRate 800000 就是下载大于800K就限制速,这里速度和真实的速度换算要除8哦。:set RxCurAddress [/ppp active get $i address] 就是定义获取用户的地址 :set RxCurUser [/ppp active get $i name]定义获取用户名。/queue simple add name=$RxCurUser target-addresses=$RxCurAddress limit-at=0/0 max-limit=50000/250000 burst-limit=80000/500000 burst-threshold=70000/400000 burst-time=5/10 这里是定义最大速度 爆发速度,爆发时间等,根据自己的需要修改。:for aa from 1 to 200 do={/queue simple remove (queue $aa)}是防止获取错误而添加默认名的全局限速队列。
-------------------------------------------------------
#然后建一个 脚本 B,为用户给限制以后,速度下来了解除限制,
:local RxCurPacket 0
:local RxCurAddress 0
:local RxCurUser 0
:local RxCurMin 80
:foreach i in=[/interface find mtu=1480] do={/interface monitor $i once do={:set RxCurPacket ($received-packets-per-second+$sent-packets-per-second); :set RxCurAddress [/ppp active get $i address]; :set RxCurUser [/ppp active get $i name]}; :if($RxCurMin>$RxCurPacket) do={/queue simple remove [find name=$RxCurUser]; /ip firewall nat remove [find comment=$RxCurUser]}}
说明和上面的差不多,这里说下作用,:if($RxCurMin>$RxCurPacket) do={/queue simple remove [find name=$RxCurUser]; /ip firewall nat remove [find comment=$RxCurUser]}就是当总包量小于80个的时候,删除用户的限制速度和网页警告,这样用户就不再限速度,然后如果速度又超过了A 脚本 里的速度值话,又会自动限速了。这样循环反复。
定义计划时间的时候限制 脚本 如果要实时检查的话,时间可以设3-5秒。解除 脚本 的时间要比限制 脚本 的长30秒以上,样子才效果明显。不过比较占内存
pppoe有突发限制
/queue simple set [/queue simple find limit-at=128000/256000] max-limit=128000/1000000 priority=8 burst-limit=1000000/4000000 burst-threshold=64000/128000 burst-time=30s/50s
limit-at=128000/256000就是PPPOE用户初始值
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)