找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 江中的小鱼

[基础] random图文教程-负载均衡?端口聚合?路由叠加?

[复制链接]
发表于 2009-3-4 21:33:20 | 显示全部楼层
好文章啊,顶.
routeros
回复

使用道具 举报

发表于 2009-3-6 03:47:51 | 显示全部楼层
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶......nnnn
routeros
回复

使用道具 举报

发表于 2009-3-6 21:56:37 | 显示全部楼层
值得学习,知道为什么要标记了
routeros
回复

使用道具 举报

发表于 2009-3-15 20:27:33 | 显示全部楼层
好文章,谢谢,学习。
routeros
回复

使用道具 举报

发表于 2009-3-15 22:02:12 | 显示全部楼层
研究了一下,“您有2个以上的网关”。这是什么意思?

是要有两条入户宽带线吗?

重复拨号不行吗?
routeros
回复

使用道具 举报

发表于 2009-3-18 00:04:37 | 显示全部楼层
好东西学习了
routeros
回复

使用道具 举报

发表于 2009-3-22 00:38:48 | 显示全部楼层
顶你。。。辛苦了。。。。。。。。。
routeros
回复

使用道具 举报

发表于 2009-3-24 15:11:02 | 显示全部楼层
谢谢LZ..........
routeros
回复

使用道具 举报

发表于 2009-3-25 19:22:30 | 显示全部楼层
回帖是种美德
routeros
回复

使用道具 举报

发表于 2009-6-1 23:23:12 | 显示全部楼层
图文的,初学者好用,不过我觉得还是代码好用点
routeros
回复

使用道具 举报

发表于 2009-6-1 23:27:06 | 显示全部楼层
本帖最后由 fanxk 于 2009-6-1 23:29 编辑

转 此文来自网上,没有修改也没有验证 查看文章   
xADSL+RANDOM负载均衡 完美自适应2009-03-17 15:32软件环境:routeros 2.9.27

功能:实现不同带宽多条ADSL的负载均衡和会聚

第一步, 在/interface里新建好PPPOE client填好ADSL用户名和密码,在原来的name前面加上此条的带宽,
如:2mpppoe-out1,4mpppoe-out2,6mpppoe-out6,不要修改name的其它地方.在不要有多余的PPPOE client,
不要勾ADD default route(默认是勾的),清空ROUTES表NAT表和MANGLE表(自己要加的脚本运行完了再加)



第二步, 全自动配置   请修改内网段,默认为 10.10.10.0/24
脚本复制到WINBOX的New Terminal终端粘贴即可(不包括分隔线).

---------------------------------分隔线------------------------------------------------
:local dd "10.10.10.0/24"
:local x [:len [/int fi type="pppoe-out"]]
:local xx
:local b 1
/ip fir nat add chain=srcnat src-address=$dd action=masquerade \
    comment="all" disabled=yes
/ ip fir man add chain=prerouting src-address=$dd protocol=tcp dst-port=443 \
    acti=mark-routing new-routing-mark=r1 passthrough=yes comment="443port"
:foreach a in=[/int fi type="pppoe-out" ] do={
/int set $a com=$b
:set b ($b+1) }
:for i from=1 to=$x do={
:set xx ($i . "." . $i . "." . $i . "." . $i)
/ ip ad add add=($xx . "/32") netw=$xx broa=$xx \
    inte=([/in ge [/in fi com=$i] name]) com=$i
/ ip fir man add chain=prerouting src-address=$dd connection-state=new \
    action=mark-connec new-connection-mark=("c" . $i) com=("con" . $i)
/ ip fir man add chain=prerouting src-address=$dd connection-mark=("c" . $i) \
    action=mark-rout new-routing-mark=("r" . $i) passthrough=no com=("rou" . $i)
/ ip ro add dst-add=0.0.0.0/0 gatew=$xx routing-m=("r" . $i) com=$i check=ping
/ ip fir nat add chain=srcnat src-address=$dd com=$i action=src-nat \
    connection-m=("c" . $i) to-address=$xx to-ports=0-65535 }
/ip fir man add chain=forward protocol=tcp tcp-flags=syn \
    action=change-mss new-mss=1400 comment="ChangMSS1400"
/ ip ro add dst-add=0.0.0.0/0 gatew=1.1.1.1 com=($x+1) check=ping


=================================分隔线==============================================


第三步,创建自适应脚本 将脚本复制到WINBOX的New Terminal终端粘贴即可(不包括分隔线)

----------------------------------分隔线----------------------------------------------
/ system scheduler
add name="Xadsl" start-time=00:00:00 interval=20s on-event={
:global x [:len [/int fi type="pppoe-out"]]
:local nad
:local oad
:local face
:local am 0
:local cc 0
:local rm
:local disx
:local ll [:len [/interface find running=true type="pppoe-out"]]
:local pt [/int find running=true type="pppoe-out"]
:local pf [/int find running=false type="pppoe-out"]
:for i from=1 to=$x do={
:if ([/int get [/int find com=$i] running] =true) do={
   :set face [/int get [/int find com=$i] name]
   :set nad [/ip ad get [/ip ad find dyna=true inte=$face] add]
   :set nad [:pick $nad 0 [:find $nad "/"]]
   :set oad [/ip add get [/ip add find comment=$i] addr]
   :set oad [:pick $oad 0 [:find $oad "/"]]
   :if ($oad != $nad) do={
     /ip ad set [/ip ad find comm=$i] addr=$nad netw=$nad broa=$nad
     /ip route set [/ip route find comment=$i] gateway=$nad
     /ip fi nat set [/ip fi nat find comm=$i] to-address=$nad
   } } }
:if ($ll>=2) do={
:foreach i in=[/int fi type="pppoe-out" running=yes ] do={   
   :set am ($am+([:pick ([/int get $i name]) 0 1 ])) }
:for i from=1 to=($ll -1) do={
   :set rm [:pick ([/int get [:pick $pt ($i -1) $i] name]) 0 1 ]
   :set rm (($rm * 1000) / $am)
   :if ([:pick $rm 2 3] >5) do={ :set rm ($rm+10) }
   :set rm ($rm /10)
   /ip fi man set [/ip fir man fi com=("con" . $i)] random=$rm
   :set am ($am -([:pick ([/int get [:pick $pt ($i -1) $i] name]) 0 1])) }
/ip fi ma unset [/ip fi ma fi com=("con" . $ll)] random
:if ([/ip fi na get [/ip fi na fi com=all] disa] =no) do={
   /ip fi na set [/ip fi na fi com=all] disa=yes }
:if ([/ip fi ma get [/ip fi ma fi com=("con" . $ll)] disa] =true) do={
   :for i from=1 to=$ll do={
     /ip fi ma set [/ip fi ma fi com=("con" . $i)] disa=no
     /ip fi ma set [/ip fi ma fi com=("rou" . $i)] disa=no } }
:if ([/ip fi ma get [/ip fi ma fi com=("con" . ($ll+1))] disa] =no) do={
   :for i from=1 to=($x - $ll) do={
     /ip fi ma set [/ip fi ma fi com=("con" . ($x -($i -1)))] disa=yes
     /ip fi ma set [/ip fi ma fi com=("rou" . ($x -($i -1)))] disa=yes } }
:for i from=1 to=($x - $ll) do={
/ip fir nat set [/ip fir nat find com=[/int get \
      [:pick $pf ($i -1) $i] com]] disa=yes
/ip rou set [/ip rou find com=[/int get \
      [:pick $pf ($i -1) $i] com]] disa=yes }
:for i from=1 to=$x do={
:set cc ($cc +[:len [/ip ro get [/ip ro fi com=$i] routing-m]]) }
:set disx [:len [/ip ro fi disa=true]]
:if (($disx !=($x - $ll))||($cc != ($ll*2))) do={
:for i from=1 to=$ll do={
    /ip fi na set [/ip fi na fi com=[/int get \
       [:pick $pt ($i -1) $i] com]] disa=no
    /ip fi na set [/ip fir nat find com=[/int get \
       [:pick $pt ($i -1) $i] com]] connection-mark=("c" . $i)
    /ip ro set [/ip ro find com=[/int get \
       [:pick $pt ($i -1) $i] com]] disa=no
    /ip ro set [/ip ro fi com=[/int get \
       [:pick $pt ($i -1) $i] com]] routing-mark=("r" . $i) }}
:for i from=1 to=($x - $ll) do={
   /ip fi na unset [/ip fi na fi com=[/int get \
       [:pick $pf ($i -1) $i] com]] connection-mark
   /ip ro unset [/ip ro fi com=[/int get \
       [:pick $pf ($i -1) $i] com]] routing-m }
}
:set disx [:len [/ip ro fi disa=true]]
:if ($ll=1) do={
:if ([/ip fi na get [/ip fi na fi com=all] disa] =yes) do={
   /ip fi na set [/ip fi na fi com=all] disa=no }
:if ($disx != $x) do={
   :for i from=1 to=$x do={
    /ip fi na set [/ip fi na fin com=$i] disa=yes
    /ip ro set [/ip ro fi com=$i] disa=yes
    /ip ro unset [/ip ro fi com=$i] routing-mark } }
}
:delay 2s
:if ([/ip ro get [/ip ro fi com=($x+1)] active] != true) do={
    :set nad [/ip add get [/int get [/int fi runn=true \
         type=pppoe-out] comm] netw]
    /ip ro set [/ip ro fi com=($x+1)] gatew=$nad }
}
routeros
回复

使用道具 举报

发表于 2009-6-2 00:40:56 | 显示全部楼层
留个QQ~!麻烦作者联系我,ROS爱好者也可以过来聊聊~!
67088833
routeros
回复

使用道具 举报

发表于 2009-6-12 16:43:50 | 显示全部楼层
难得的好文章
routeros
回复

使用道具 举报

发表于 2010-4-27 11:59:33 | 显示全部楼层
收藏收藏,謝謝.
routeros
回复

使用道具 举报

发表于 2010-4-29 17:42:25 | 显示全部楼层
学习了  多谢楼主提供~~
routeros
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 17:52 , Processed in 0.069745 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

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