KoolShare

 找回密码
 立即注册
搜索
查看: 105420|回复: 2348

[教程] 华硕及梅林固件改版路由器双线路双拨策略分流方案v3.1.3

  [复制链接]

13

主题

2239

帖子

899

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
505
魔法值
0
注册时间
2018-7-15
发表于 2018-8-19 03:54:00 | 显示全部楼层 |阅读模式
本帖最后由 妙妙呜 于 2019-3-18 05:01 编辑

用途
方案主要目的为实现应用中网络带速叠加,也不能实现路由器多个出口链路网络或带宽的聚合,而是帮助大家在双线路双拨接入路由器的不同网络出口之间精准控制网络访问经由路径,提高路由器使用的稳定性、流畅性和带宽资源利用率,挖掘和发挥设备潜能和剩余价值,减少设备重复采购,改善电磁环境。避免因WiFi信号太多,经常为切换使用SSID而纠结,预防选择恐惧症。

脚本配置好系统路由服务后不驻留内存,只有网段数据集和路由匹配规则加载保存在系统及其策略路由数据库里。所配置的路由器内置服务只在数据上行时对目标地址自动进行判断和分流,系统开销很小,不会对下行数据进行任何处理……

“分流是有序的让每辆车按交通规则在事先规划好的路段上行驶,安全性、舒适性、流畅性更好,事故率低;带速叠加好比是给出两条路,随机分配多辆车路权,同时在道路上任意驰骋,无规则约束,可图一时之快野蛮驾驶,虽然短时间可以增加通过量,但无安全保障,易出事故并造成交通拥堵,双线路双拨负载均衡不使用脚本时就是这种情况。”

v2.6.2版起,在双线路通道不设置系统自动分配流量出口,不启用流量叠加效应的前提下,第一通道按目标网段分配流量;脚本通过运行时自动调整路由器主路由表中的负载均衡流量比例因子,使未分配出口的流量由系统负载均衡机制强制输出到第二通道。
在保证路由器使用的稳定性、流畅性和安全可靠性的基础上,针对路由器各通道网卡芯片特性和型号功用存在不同,导致双线路通道计算能力、I/O能力不均衡,此法可最大限度减少弱势通道分流计算和内存读写的运行载荷,提高网络报文数据包通过速率。
其他如自定义网段网址、SS线路、OpenVP-N Server,以及第二配置文件中自定义流向条目项等均按原有模式分流,方式不变。”

重大升级
当前版本:v3.1.3通用版  发布日期:2019/3/16
  • 在系统记录中增加几条脚本服务未启动成功时的状态信息,便于事后查找问题原因,让生活状态和阴暗面一目了然。

v3.1.2通用版  发布日期:2019/3/15
  • 微调脚本代码架构,提高和加固进程间同步的安全性,防止文件损坏和数据错误。

v3.1.1通用版  发布日期:2019/3/14
  • 完善启动过程中用户配置所用数据传输方式的信息显示。
  • 修复SS启停时不必要信息输出的bug。
  • 调整相同优先级IP规则在系统策略路由库中的排序。

v3.1.0通用版  发布日期:2019/3/13
  • 新增“第一WAN口用户自定义源网址/网段至目标网址/网段高优先级流量出口列表绑定”功能,以方便用户进行更复杂、更怪异的脚本功能配置。
  • 在netfilter网络报文数据包过滤处理规则中加入对“自定义源网址/网段至目标网址/网段”类列表数据的优化处理,阻止无效数据标记,提高传输效率。
  • 使用自定义表链归类封装脚本中创建使用的netfilter网络报文数据包过滤处理规则,提高整体管控能力,执行流程更加清晰、有序和安全,并防止用户配置中的逻辑冲突。
  • 完善脚本启动信息内容。如果信息中出现“All in High Speed direct DT Mode.”,说明所做分流配置已达到路由器双线路传输通道的最大性能状态,参见:http://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=145491&pid=1820284

v3.0.9通用版  发布日期:2019/3/11
  • 优化OpenVP-N Server分流算法逻辑代码,提高执行效率和安全稳定性。

v3.0.8元春通用版  发布日期:2019/3/6
  • 正月三十,惊蛰,这版更新完美的很啊
  • 如果接入的是运营商内网网络,由于有运营商间线路租用情况,获取的公网出口地址会经常动态变化,利用该IP判断WAN口所接入的运营商存在误差,所获运营商信息仅供参考,故在显示的运营商标识后面添加一个额外的“*”号予以提示。
  • 去掉输出到系统记录中策略规则优先级条目统计项为零的无用信息,顺便纠正几个输出信息中土鳖(土造蹩脚)英文的露怯用法,免得文科生看不懂

v3.0.7元春通用版  发布日期:2019/3/5
  • 写了好多郁闷的繁复代码,在SSH窗口中又又增加了一堆脚本启动中的显示信息,可用来验证自己的配置需求,估计又会惹文科生抱怨了

v3.0.6元春通用版  发布日期:2019/3/3
  • 在SSH窗口中又增加了一堆脚本启动中的显示信息,等待过程中不百无聊赖了吧!

v3.0.5元春通用版  发布日期:2019/3/2
  • 修改错别字,将路由器WAN口IP内外网判别显示中的Pravite更正为Private,英文太烂了
  • 在SSH窗口中增加脚本启动中的状态信息显示内容,免得等待过程中感觉无聊。若是碍眼,以后整点儿小说唔的香艳文艺范儿?
  • 完善对从数据文件读入数据进行数据清理的正则表达式,以在文件全文中正确识别所有“#”号后的注释说明文字,甚是完美。

v3.0.4元春通用版  发布日期:2019/3/1
  • 在脚本启动时的WAN口接入运营商自动检测显示功能中增加路由器WAN口IP内外网判别显示功能。
  • 调整“路由器主机内部应用访问外网及外网访问路由器出入口规则”的策略优先级执行时序,避免被其它规则阻断。
  • 优化高速直连和负载均衡强制输出混合搭配设置时的联动机制,当国外目标网段访问出口与负载均衡强制输出出口一致时,彻底屏蔽偏流现象,分流更加精准。
  • 完善脚本配置文件中“策略规则优先级执行顺序”的注释说明,方便用户配置。

更多之前的日志在下面的版本历程部分查看。

重要提示
强烈建议使用你宽带运营商的DNS,许多第三方DNS由于商业等其他原因劫持用户流量,解析返回其指定路径路由的IP网络地址,导致用户不能获得预期路由器流量出口。另外也发现一些用户在路由器和终端上使用的插件或应用修改用户DNS设置,甚至被改成国外DNS,更有甚者以隐藏方式植入,明面上很难觉察。所以当发现流量出口与预期不符时,请检查一下路由器和终端的DNS设置是否正确,lz rule 脚本配置和启动的路由器内置服务只会按照设定方式及APNIC官方等网段数据执行既定逻辑路由流量。

v3.1.3通用版zip完整包  发布日期:2019/3/16
下载地址链接:
lz_rule-v3.1.3.zip.pdf (101.16 KB, 下载次数: 660)

评分

9

查看全部评分

13

主题

2239

帖子

899

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
505
魔法值
0
注册时间
2018-7-15
 楼主| 发表于 2018-8-20 04:41:08 | 显示全部楼层
本帖最后由 妙妙呜 于 2019-3-16 15:54 编辑

沙发啊!
板凳变沙发,自己顶!

v3.1.3 通用版 firewall-start 引导脚本代码:
  1. #!/bin/sh
  2. /jffs/scripts/lz/lz_rule.sh
复制代码

v3.1.3 通用版 lz_rule_config.sh 配置脚本代码:
  1. #!/bin/sh
  2. # lz_rule_config.sh v3.1.3
  3. # By LZ 妙妙呜 (larsonzhang@gmail.com)

  4. # 本版本采用CIDR(无类别域间路由,Classless Inter-Domain Routing)技术
  5. # 是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。
  6. # CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。
  7. # ————百度百科

  8. #BEIGIN

  9. ## 技巧:上传编辑好的firewall-start文件和本代码至路由器后,开关防火墙即可启动本代码,不必重启路由器。
  10. ##       也可通过SSH命令行窗口直接输入命令运行。
  11. ##       启动/重启        /jffs/scripts/lz/lz_rule.sh
  12. ##       暂停运行         /jffs/scripts/lz/lz_rule.sh stop
  13. ##       终止运行         /jffs/scripts/lz/lz_rule.sh STOP
  14. ##       恢复缺省配置     /jffs/scripts/lz/lz_rule.sh default
  15. ##       模式1启动/重启   /jffs/scripts/lz/lz_rule.sh 1
  16. ##       模式2启动/重启   /jffs/scripts/lz/lz_rule.sh 2
  17. ##       模式3启动/重启   /jffs/scripts/lz/lz_rule.sh 3
  18. ## 提示:暂停命令仅是暂时关闭策略路由服务,重启路由器、线路接入或断开、WAN口IP改变、防火墙开关等事件都会导致本脚本
  19. ##       自启动重新运行。终止命令将彻底停止服务,需SSH命令行窗口手动启动方可运行。
  20. ##       若在Koolshare固件机型上启用过SS服务支持,脚本升级或删除本脚本前请运行停止命令,以清除程序自动
  21. ##       创建的接口文件,亦可手工去/koolshare/ss/postscripts/目录清除P99_lz_rule.sh文件。

  22. ## ----------------------------------------------------
  23. ## ----------------用户运行策略自定义区----------------
  24. ## 缺省设置:
  25. ##       1.去往联通、电信、国内其他ISP、国外ISP的网络访问流量走第一WAN口
  26. ##       2.去往移动、铁通、教育网、长城宽带/鹏博士的网络访问流量走第二WAN口
  27. ##       3.分流模式:模式3
  28. ##                   按网络报文数据包目标访问地址匹配分配出口输出流量
  29. ##                   未被网段数据覆盖的目标网址/网段访问由系统自动分配出口输出流量
  30. ##       4.不干预SS服务
  31. ##       5.OpenVP@NServer客户端访问互联网由系统自动分配出口
  32. ##       6.外网访问路由器使用第一WAN口
  33. ##       7.未启用定时更新ISP网络运营商CIDR网段数据
  34. ##       如有不同需求,请在自定义区修改下面的参数配置

  35. ## 策略规则优先级执行顺序:由高到低排列,系统抢先执行高优先级策略。
  36. ##       OpenVP@NServer客户端访问互联网流量出口分流出口规则
  37. ##       第一WAN口用户自定义源网址/网段至目标网址/网段高优先级流量出口列表绑定出口规则(high_wan_1_src_to_dst_addr_file)
  38. ##       第二WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定出口规则(wan_2_src_to_dst_addr_file)
  39. ##       第一WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定出口规则(wan_1_src_to_dst_addr_file)
  40. ##       最高高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则
  41. ##       最高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则
  42. ##       第二WAN口客户端及源网址/网段高优先级流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(high_wan_2_client_src_addr_file)
  43. ##       第一WAN口客户端及源网址/网段高优先级流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(high_wan_1_client_src_addr_file)
  44. ##       SS服务线路绑定干预出口规则
  45. ##       路由器主机内部应用访问外网及外网访问路由器出入口规则
  46. ##       高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则
  47. ##       用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则
  48. ##       第二WAN口客户端及源网址/网段流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(wan_2_client_src_addr_file)
  49. ##       第一WAN口客户端及源网址/网段流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(wan_1_client_src_addr_file)
  50. ##       用户自定义目标网址/网段(2)(总条目数≤list_mode_threshold阈值时)分流出口规则(custom_data_file_2)
  51. ##       用户自定义目标网址/网段(1)(总条目数≤list_mode_threshold阈值时)分流出口规则(custom_data_file_1)
  52. ##       高速直连绑定国内运营商目标网址/网段分流第二WAN口流量出口规则
  53. ##       高速直连绑定国内运营商目标网址/网段分流第一WAN口流量出口规则
  54. ##       第二WAN口客户端及源网址/网段高优先级流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(high_wan_2_client_src_addr_file)
  55. ##       第一WAN口客户端及源网址/网段高优先级流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(high_wan_1_client_src_addr_file)
  56. ##       端口分流出口规则
  57. ##       协议分流出口规则
  58. ##       第二WAN口客户端及源网址/网段流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(wan_2_client_src_addr_file)
  59. ##       第一WAN口客户端及源网址/网段流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(wan_1_client_src_addr_file)
  60. ##       国内运营商及用户自定义目标网址/网段分流第二WAN口流量出口规则
  61. ##       国内运营商及用户自定义目标网址/网段分流第一WAN口流量出口规则
  62. ##       国外运营商目标网段流量分流出口规则
  63. ##       未被规则和已定义网址/网段数据覆盖的流量分流出口规则

  64. ## 本脚本将全宇宙所有互联网IPv4地址网段划分为如下8个国内外网络运营商目标网段数据集合,使用中首先将所接入网络
  65. ## 运营商网段对应至相应的路由器出口,其他运营商网段可根据使用需求、所属运营商网络跨网段访问品质、本地网络环
  66. ## 境等因素适当配置出口参数即可,以后可根据使用情况随时调整。


  67. ## 一、基础设置

  68. ## 定义待访问网络运营商目标网段的数据流量路由器出口
  69. ## 0--第一WAN口(网络报文数据包目标地址匹配出口方式);
  70. ## 1--第二WAN口(网络报文数据包目标地址匹配出口方式);
  71. ## 2--第一WAN口(高速直连绑定出口方式);
  72. ## 3--第二WAN口(高速直连绑定出口方式);
  73. ## >3--由系统自动分配流量出口,或不使用,或无此网址/网段数据。
  74. ## 注意:1.赋值命令的"="号两边不要有空格;
  75. ##       2.网络报文数据包目标地址匹配出口方式为标准分流方式,适用于所有类型路由器;
  76. ##       3.高速直连绑定出口方式更适用于RT-AC86U、GT-AC5300等博通BCM4906以上性能CPU的路由器;
  77. ##       4.中国大陆之外所有运营商目标网段流量出口不可使用高速直连绑定出口方式;
  78. ##       5.高速直连绑定出口方式不支持实现下载带速叠加功能;
  79. ##       6.如需自定义客户端或外网特定地址访问的路由器网络出口,请在下面的高级设置中配置。
  80. ##       7.所有网段数据文件均在/jffs/scripts/lz/data/目录中;
  81. ##       8.第一次部署本脚本,建议重启路由器后运行。

  82. ## a.中国大陆之外所有运营商目标网段流量出口(网段数据文件:all_cn_cidr.txt,反向使用)
  83. ## 0:第一WAN口;
  84. ## 1:第二WAN口;
  85. ## >1:由系统自动分配流量出口,或表示不使用或无此网段数据;该目标网段流量出口不可使用高速直连绑定出口方式。
  86. ## 缺省值为0。
  87. all_foreign_wan_port=0

  88. ## b.中国电信目标网段流量出口(网段数据文件:chinatelecom_cidr.txt)
  89. ## 缺省值为0。
  90. chinatelecom_wan_port=0

  91. ## c.中国联通/网通目标网段流量出口(网段数据文件:unicom_cnc_cidr.txt)
  92. ## 缺省值为0。
  93. unicom_cnc_wan_port=0

  94. ## d.中国移动目标网段流量出口(网段数据文件:cmcc_cidr.txt)
  95. ## 缺省值为1。
  96. ## 1:表示对中国移动网段的访问使用第二AN口。
  97. cmcc_wan_port=1

  98. ## e.中国铁通目标网段流量出口(网段数据文件:crtc_cidr.txt)
  99. ## 缺省值为1。
  100. crtc_wan_port=1

  101. ## f.中国教育网目标网段流量出口(网段数据文件:cernet_cidr.txt)
  102. ## 缺省值为1。
  103. cernet_wan_port=1

  104. ## g.长城宽带/鹏博士目标网段流量出口(网段数据文件:gwbn_cidr.txt)
  105. ## 缺省值为1。
  106. gwbn_wan_port=1

  107. ## h.中国大陆其他运营商目标网段流量出口(网段数据文件:othernet_cidr.txt)
  108. ## 缺省值为0。
  109. othernet_wan_port=0

  110. ## 运行模式(双线路接通时)
  111. ## 0--模式1:第一WAN口接入带宽<第二WAN口接入带宽,任一带宽≥200Mbps;
  112. ##           第一WAN口按目标网段匹配网络报文数据包输出流量;
  113. ##           第二WAN口通过系统负载均衡强制输出流经第一WAN口之外的其余流量;
  114. ##           可避免第二WAN口通道200Mbps以上带宽时CPU占用率过高和掉速现象。
  115. ## 1--模式2:第一WAN口接入带宽>第二WAN口接入带宽,任一带宽≥200Mbps;
  116. ##           第一WAN口通过系统负载均衡强制输出流经第二WAN口之外的其余流量;
  117. ##           第二WAN口按目标网段匹配网络报文数据包输出流量;
  118. ##           可避免第一WAN口通道200Mbps以上带宽时CPU占用率过高和掉速现象。
  119. ## >1--模式3:第一WAN口、第二WAM口均按各自目标网段匹配网络报文数据包输出流量。
  120. ## 缺省为模式3。
  121. policy_mode=5
  122. ## 模式1、模式2为高流量性能模式,模式3为精准分流模式。
  123. ## 模式1、模式2中,待访问任一运营商目标网段流量出口设置为由系统自动分配流量出口时,将自动切换至模式3运行。
  124. ## 模式1、模式2可能有1/10的偏流率,但不影响使用中的稳定流畅。
  125. ## 模式3分流精准,高带宽时可能会遇到某一通道由于硬件平台非专用多线路多拨接入路由器的设计原因,不能充分发挥系
  126. ## 统连接跟踪模块I/O性能导致CPU占用率过高和掉速现象。

  127. ## 定时更新ISP网络运营商CIDR网段数据(0--启用;非0--禁用)
  128. ## 缺省为禁用。
  129. regularly_update_ispip_data_enable=5

  130. ## 定时更新时间参数定义(建议在当天1:30后执行定时更新)
  131. ## 缺省为每隔5天。
  132. ruid_interval_day=5  ## 间隔天数(1~31);"ruid_interval_day=5"表示每隔5天
  133. ruid_timer_hour=*    ## 时间小时数(0~23,*表示由系统指定);"ruid_timer_hour=3"表示更新当天的凌晨3点
  134. ruid_timer_min=*     ## 时间分钟数(0~59,*表示由系统指定);"ruid_timer_min=18"表示更新当天的凌晨3点18分
  135. ## 网段数据变更不很频繁,建议加大更新间隔时间,且使更新时间尽可能与他人分开,减少存储擦写次数,延长路由器
  136. ## 使用寿命,同时有助于降低远程下载服务器的负荷压力。
  137. ## 脚本运行期间,修改定时设置、路由器重启,或手工停止脚本运行后再次重启,会导致定时更新时间重新开始计数。

  138. ## 定时更新ISP网络运营商CIDR网段数据失败后自动重试次数(0--不重试;>0--重试次数)
  139. ## 缺省为重试5次。
  140. ruid_retry_num=5
  141. ## 若自动重试后经常下载失败,建议自行前往https://ispip.clang.cn/网站手工下载获取与上述8个网络运营商网段数据
  142. ## 文件同名的最新CIDR网段数据,下载后直接粘贴覆盖/jffs/scripts/lz/data/目录内同名数据文件,重启脚本即刻生效。


  143. ## 二、高级设置

  144. ## 用户自定义目标网址/网段(1)流量出口(0--第一WAN口;1--第二WAN口;2--由系统自动分配流量出口;>2--禁用)
  145. ## 缺省为禁用。
  146. custom_data_wan_port_1=5

  147. ## 用户自定义目标网址/网段(1)流量出口数据文件
  148. ## (文本格式,一个网址/网段一行,文件路径、名称可自定义和修改)
  149. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  150. custom_data_file_1="/jffs/scripts/lz/data/custom_data_1.txt"

  151. ## 用户自定义目标网址/网段(2)流量出口(0--第一WAN口;1--第二WAN口;2--由系统自动分配流量出口;>2--禁用)
  152. ## 缺省为禁用。
  153. custom_data_wan_port_2=5

  154. ## 用户自定义目标网址/网段(2)流量出口数据文件
  155. ## (文本格式,一个网址/网段一行,文件路径、名称可自定义和修改)
  156. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  157. custom_data_file_2="/jffs/scripts/lz/data/custom_data_2.txt"

  158. ## 第一WAN口客户端及源网址/网段流量出口列表绑定(0--启用;非0--禁用)
  159. ## 缺省为禁用。
  160. wan_1_client_src_addr=5

  161. ## 第一WAN口客户端及源网址/网段流量出口列表绑定数据文件
  162. ## (文本格式,一个网址/网段一行,文件路径、名称可自定义和修改)
  163. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  164. wan_1_client_src_addr_file="/jffs/scripts/lz/data/wan_1_client_src_addr.txt"

  165. ## 第二WAN口客户端及源网址/网段流量出口列表绑定(0--启用;非0--禁用)
  166. ## 缺省为禁用。
  167. wan_2_client_src_addr=5

  168. ## 第二WAN口客户端及源网址/网段流量出口列表绑定数据文件
  169. ## (文本格式,一个网址/网段一行,文件路径、名称可自定义和修改)
  170. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  171. wan_2_client_src_addr_file="/jffs/scripts/lz/data/wan_2_client_src_addr.txt"

  172. ## 第一WAN口客户端及源网址/网段高优先级流量出口列表绑定(0--启用;非0--禁用)
  173. ## 缺省为禁用。
  174. high_wan_1_client_src_addr=5

  175. ## 第一WAN口客户端及源网址/网段高优先级流量出口列表绑定数据文件
  176. ## (文本格式,一个网址/网段一行,文件路径、名称可自定义和修改)
  177. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  178. high_wan_1_client_src_addr_file="/jffs/scripts/lz/data/high_wan_1_client_src_addr.txt"

  179. ## 第二WAN口客户端及源网址/网段高优先级流量出口列表绑定(0--启用;非0--禁用)
  180. ## 缺省为禁用。
  181. high_wan_2_client_src_addr=5

  182. ## 第二WAN口客户端及源网址/网段高优先级流量出口列表绑定数据文件
  183. ## (文本格式,一个网址/网段一行,文件路径、名称可自定义和修改)
  184. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  185. high_wan_2_client_src_addr_file="/jffs/scripts/lz/data/high_wan_2_client_src_addr.txt"

  186. ## 第一WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定(0--启用;非0--禁用)
  187. ## 缺省为禁用。
  188. wan_1_src_to_dst_addr=5

  189. ## 第一WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件
  190. ## (文本格式,每行的源网址/网段和目标网址/网段之间按顺序用空格隔开,文件路径、名称可自定义和修改)
  191. ## 可以用0.0.0.0/0表示所有未知IP地址。
  192. ## 建议列表条目数量不要多于256条,否则易导致脚本启动时系统策略路由库加载数据时间过长。
  193. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  194. wan_1_src_to_dst_addr_file="/jffs/scripts/lz/data/wan_1_src_to_dst_addr.txt"

  195. ## 第二WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定(0--启用;非0--禁用)
  196. ## 缺省为禁用。
  197. wan_2_src_to_dst_addr=5

  198. ## 第二WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件
  199. ## (文本格式,每行的源网址/网段和目标网址/网段之间按顺序用空格隔开,文件路径、名称可自定义和修改)
  200. ## 可以用0.0.0.0/0表示所有未知IP地址。
  201. ## 建议列表条目数量不要多于256条,否则易导致脚本启动时系统策略路由库加载数据时间过长。
  202. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  203. wan_2_src_to_dst_addr_file="/jffs/scripts/lz/data/wan_2_src_to_dst_addr.txt"

  204. ## 第一WAN口用户自定义源网址/网段至目标网址/网段高优先级流量出口列表绑定(0--启用;非0--禁用)
  205. ## 缺省为禁用。
  206. high_wan_1_src_to_dst_addr=5

  207. ## 第一WAN口用户自定义源网址/网段至目标网址/网段高优先级流量出口列表绑定数据文件
  208. ## (文本格式,每行的源网址/网段和目标网址/网段之间按顺序用空格隔开,文件路径、名称可自定义和修改)
  209. ## 可以用0.0.0.0/0表示所有未知IP地址。
  210. ## 建议列表条目数量不要多于256条,否则易导致脚本启动时系统策略路由库加载数据时间过长。
  211. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  212. high_wan_1_src_to_dst_addr_file="/jffs/scripts/lz/data/high_wan_1_src_to_dst_addr.txt"

  213. ## 本地客户端网址/网段流量出口列表绑定黑名单数据文件
  214. ## (文本格式,一个网址/网段一行,文件路径、名称可自定义和修改)
  215. ## 缺省为空文件。
  216. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  217. ## 列入该名单列表的网址/网段不受按网段分流、协议分流和端口分流规则控制
  218. ## 表中的客户端访问外网时,模式1走第二WAN口,模式2走第一WAN口,模式3时由系统自动分配出口。
  219. local_ipsets_file="/jffs/scripts/lz/data/local_ipsets_data.txt"

  220. ## 内网保留网址/网段列表数据文件
  221. ## (文本格式,一个网址/网段一行,文件路径、名称可自定义和修改)
  222. ## 必备的预置非公网网址/网段列表数据文件,可根据应用环境增添、删除或修改条目内容。
  223. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  224. private_ipsets_file="/jffs/scripts/lz/data/private_ipsets_data.txt"

  225. ## 协议分流(0--启用;非0--禁用)
  226. ## 缺省为禁用。
  227. ## 该功能需要系统中有用于OSI模型第七层应用层控制的layer7模块,否则需重新编译和配置Linux内核,打netfilter
  228. ## 补丁和安装l7-protocals协议包。
  229. l7_protocols=5

  230. ## 协议分流流量出口网络应用层协议绑定列表文件(文件路径、名称可自定义和修改)
  231. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  232. ## 文件中协议项取值:0--第一WAN口;1--第二WAN口;>1--禁用。
  233. ## 缺省为禁用。
  234. l7_protocols_file="/jffs/scripts/lz/configs/lz_protocols.txt"

  235. ## 第一WAN口目标访问端口分流
  236. ## (最多可设置15个不连续的端口号埠,仅针对TCP、UDP、UDPLITE、SCTP四类协议端口;不设置且为空时--禁用)
  237. ## 例如,TCP协议端口:wan0_dest_tcp_port=80,443,6881:6889,25671
  238. ## 其中:6881:6889表示6881~6889的连续端口号,不连续的端口号埠之间用英文半角“,”逗号相隔,不要有多余空格。
  239. wan0_dest_tcp_port=
  240. wan0_dest_udp_port=
  241. wan0_dest_udplite_port=
  242. wan0_dest_sctp_port=

  243. ## 第二WAN口目标访问端口分流
  244. ## (最多可设置15个不连续的端口号埠,仅针对TCP、UDP、UDPLITE、SCTP四类协议端口;不设置且为空时--禁用)
  245. wan1_dest_tcp_port=
  246. wan1_dest_udp_port=
  247. wan1_dest_udplite_port=
  248. wan1_dest_sctp_port=

  249. ## SS服务使用路由器WAN口(0--第一WAN口;1--第二WAN口;>1--不干预SS服务)
  250. ## 缺省为不干预SS服务。
  251. ## 适配koolshare merlin armv7l固件平台,固件版本7.2以上的科学上@网插件 shadow@socks v4.0.9+。
  252. ## 适配koolshare merlin aarch64固件平台的科学上@网插件 shadow2socks v1.4.2+。
  253. ss_wan_port=5

  254. ## OpenVP@NServer客户端访问互联网路由器出口(0--第一WAN口;1--第二WAN口;>1--由系统自动分配出口)
  255. ## 缺省为由系统自动分配出口。
  256. ## 注意:外网客户端访问路由器内置OpenVP@NServer固定通过路由器第一WAN口。
  257. ovs_client_wan_port=5

  258. ## 路由器主机内部应用访问外网WAN口
  259. ## (0--第一WAN口;1--第二WAN口;2--按网段分流、协议分流和端口分流规则匹配出口;>2--由系统自动分配出口)
  260. ## 缺省为第一WAN口。
  261. ## 该端口也用于外网访问路由器Asuswrt管理界面及内网设备,正常应与DDNS出口保持一致,一般不建议更改缺省值。
  262. ## 大部分380及以下系列版本固件系统DDNS已内部绑定第一WAN口,更改或可导致访问失败。
  263. wan_access_port=0

  264. ## 网址/网段绑定流量出口列表数据处理模式转换条目数阈值(单位:条目数)
  265. ## 缺省阈值为256条。
  266. ## 列表数据总条目数≤该阈值时,采用高速直连绑定出口方式将列表中的网址/网段绑定至指定路由器出口。该方式
  267. ## 系统资源占用少,效率高,不会造成高带宽掉速;缺点是网址/网段条目数不能太多,否则会造成脚本启动时系统策
  268. ## 略路由库加载数据时间过长。
  269. ## 列表数据总条目数>该阈值时,采用系统内核的netfilter网络过滤模块标记报文数据包方式将列表中的网址/网段绑
  270. ## 定至指定路由器出口。该方式会增加网络通道CPU运算及I/O资源运行开销,但适合处理大数据量的网址/网段数据。
  271. ## 本阈值仅作用于用户自定义目标网址/网段流量出口数据文件及WAN口客户端及源网址/网段流量出口列表绑定数据文
  272. ## 件,对WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件无影响。
  273. list_mode_threshold=256

  274. ## 阻止网段分流时分流无效网络数据包(0--启用;非0--禁用)
  275. ## 缺省为禁用;一些网络应用会产生非正常状态网络数据包,若由此导致网络访问故障,请禁用此项。
  276. prevent_invalid_network_packets=5

  277. ## 网段分流时验证网络数据包校验和(0--启用;非0--禁用)
  278. ## 缺省为启用;禁用可减少路由器部分系统运算和I/O操作开销,稍许提高网络吞吐能力,有安全风险。
  279. network_packets_checksum=0

  280. ## 路由表缓存(0--启用;非0--禁用)
  281. ## 缺省为启用。
  282. route_cache=0

  283. ## 自动清理路由表缓存(0或>24--禁用;1~24--时间间隔,以小时为单位)
  284. ## 缺省为每4小时清理一次。
  285. clear_route_cache_time_interval=4

  286. ## 外置用户自定义配置脚本(0--执行,随脚本初始化时启动执行;非0--禁用)
  287. ## 缺省为禁用。
  288. custom_config_scripts=5

  289. ## 外置用户自定义配置脚本文件全路径文件名(文件路径、名称可自定义和修改)
  290. ## 可在其中加入自定义全局变量并初始化,也可加入随系统启动自动执行的其他自定义脚本代码。
  291. custom_config_scripts_filename="/jffs/scripts/lz/custom_config.sh"

  292. ## 外置用户自定义双线路脚本(0--执行,仅在双线路同时接通WAN口网络条件下执行;非0--禁用)
  293. ## 缺省为禁用。
  294. custom_dualwan_scripts=5

  295. ## 外置用户自定义双线路脚本文件全路径文件名(文件路径、名称可自定义和修改)
  296. custom_dualwan_scripts_filename="/jffs/scripts/lz/custom_dualwan_scripts.sh"

  297. ## 外置用户自定义清理资源脚本(0--执行;非0--禁用)
  298. ## 缺省为禁用。
  299. custom_clear_scripts=5

  300. ## 外置用户自定义清理资源脚本文件全路径文件名(文件路径、名称可自定义和修改)
  301. custom_clear_scripts_filename="/jffs/scripts/lz/custom_clear_scripts.sh"


  302. ## --------------用户运行策略自定义区结束--------------
  303. ## ----------------------------------------------------

  304. #END
复制代码

v3.1.3 通用版 lz_rule_func_config.sh 配置脚本代码:
  1. #!/bin/sh
  2. # lz_rule_func_config.sh v3.1.3
  3. # By LZ 妙妙呜 (larsonzhang@gmail.com)

  4. # 本版本采用CIDR(无类别域间路由,Classless Inter-Domain Routing)技术
  5. # 是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。
  6. # CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。
  7. # ————百度百科

  8. #BEIGIN

  9. ## 技巧:上传编辑好的firewall-start文件和本代码至路由器后,开关防火墙即可启动本代码,不必重启路由器。
  10. ##       也可通过SSH命令行窗口直接输入命令运行。
  11. ##       启动/重启        /jffs/scripts/lz/lz_rule.sh
  12. ##       暂停运行         /jffs/scripts/lz/lz_rule.sh stop
  13. ##       终止运行         /jffs/scripts/lz/lz_rule.sh STOP
  14. ##       恢复缺省配置     /jffs/scripts/lz/lz_rule.sh default
  15. ##       模式1启动/重启   /jffs/scripts/lz/lz_rule.sh 1
  16. ##       模式2启动/重启   /jffs/scripts/lz/lz_rule.sh 2
  17. ##       模式3启动/重启   /jffs/scripts/lz/lz_rule.sh 3
  18. ## 提示:暂停命令仅是暂时关闭策略路由服务,重启路由器、线路接入或断开、WAN口IP改变、防火墙开关等事件都会导致本脚本
  19. ##       自启动重新运行。终止命令将彻底停止服务,需SSH命令行窗口手动启动方可运行。
  20. ##       若在Koolshare固件机型上启用过SS服务支持,脚本升级或删除本脚本前请运行停止命令,以清除程序自动
  21. ##       创建的接口文件,亦可手工去/koolshare/ss/postscripts/目录清除P99_lz_rule.sh文件。

  22. ## ----------------------------------------------------
  23. ## -------客户端或指定网址访问路由器出口自定义区-------

  24. ## 策略规则优先级执行顺序:由高到低排列,系统抢先执行高优先级策略。
  25. ##       OpenVP@NServer客户端访问互联网流量出口分流出口规则
  26. ##       第一WAN口用户自定义源网址/网段至目标网址/网段高优先级流量出口列表绑定出口规则(high_wan_1_src_to_dst_addr_file)
  27. ##       第二WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定出口规则(wan_2_src_to_dst_addr_file)
  28. ##       第一WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定出口规则(wan_1_src_to_dst_addr_file)
  29. ##       最高高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则--优先级ID:IP_RULE_PRIO_CUSTOM_TOP_HIGH
  30. ##       最高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则--优先级ID:IP_RULE_PRIO_CUSTOM_TOP
  31. ##       第二WAN口客户端及源网址/网段高优先级流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(high_wan_2_client_src_addr_file)
  32. ##       第一WAN口客户端及源网址/网段高优先级流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(high_wan_1_client_src_addr_file)
  33. ##       SS服务线路绑定干预出口规则
  34. ##       路由器主机内部应用访问外网及外网访问路由器出入口规则
  35. ##       高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则--优先级ID:IP_RULE_PRIO_CUSTOM_HIGH
  36. ##       用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则--优先级ID:IP_RULE_PRIO_CUSTOM
  37. ##       第二WAN口客户端及源网址/网段流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(wan_2_client_src_addr_file)
  38. ##       第一WAN口客户端及源网址/网段流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(wan_1_client_src_addr_file)
  39. ##       用户自定义目标网址/网段(2)(总条目数≤list_mode_threshold阈值时)分流出口规则(custom_data_file_2)
  40. ##       用户自定义目标网址/网段(1)(总条目数≤list_mode_threshold阈值时)分流出口规则(custom_data_file_1)
  41. ##       高速直连绑定国内运营商目标网址/网段分流第二WAN口流量出口规则
  42. ##       高速直连绑定国内运营商目标网址/网段分流第一WAN口流量出口规则
  43. ##       第二WAN口客户端及源网址/网段高优先级流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(high_wan_2_client_src_addr_file)
  44. ##       第一WAN口客户端及源网址/网段高优先级流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(high_wan_1_client_src_addr_file)
  45. ##       端口分流出口规则
  46. ##       协议分流出口规则
  47. ##       第二WAN口客户端及源网址/网段流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(wan_2_client_src_addr_file)
  48. ##       第一WAN口客户端及源网址/网段流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(wan_1_client_src_addr_file)
  49. ##       国内运营商及用户自定义目标网址/网段分流第二WAN口流量出口规则
  50. ##       国内运营商及用户自定义目标网址/网段分流第一WAN口流量出口规则
  51. ##       国外运营商目标网段流量分流出口规则
  52. ##       未被规则和已定义网址/网段数据覆盖的流量分流出口规则


  53. ## 自定义客户端或指定特定网址/网段访问的路由器网络出口
  54. ## 提示:可定义一些内网网址/绑定使用指定WAN口访问外网,实际中可随时根据需要将终端IP切换到这些网址,从而
  55. ##       使用指定的WAN口访问外网。现实中有些网站会将访问请求跨网段跳转到另一处,同时会验证你的出口是否
  56. ##       唯一,这时你可能需要这段时间内走固定WAN口出游,这些预定义内网网址/网段就很有用了。
  57. ##       此外,还可在此设定访问某些外网地址使用指定的路由器WAN口。
  58. ##       为提高传输性能,使用命令方式将客户端绑定路由器网络出口后,建议同时将客户端本地网址/网段填入
  59. ##       local_ipsets_data.txt(本地客户端网址/网段流量出口列表绑定黑名单数据文件)中,阻止路由器对该客户
  60. ##       端设备进行额外的网址/网段分流、协议分流及端口分流计算。
  61. ##       此功能也可使用网址/网段列表数据文件方式,通过lz_rule_config.sh中的路由器WAN口客户端及源网址/网段
  62. ##       列表绑定功能或用户自定义目标网址/网段功能来替代,或使用WAN口用户自定义源网址/网段至目标网址/网段
  63. ##       流量出口列表绑定功能替代下述命令方式,该类方式无需填写本地客户端网址/网段流量出口列表绑定黑名单
  64. ##       数据文件,脚本已含内置的自动处理机制。

  65. ## 命令格式:
  66. ##       第一WAN口:ip add [ from 源IP地址/ip网段/all ] [ to 目标IP地址/ip网段/all ] table $WAN0 prio $[优先级]
  67. ##       第二WAN口:ip add [ from 源IP地址/ip网段/all ] [ to 目标IP地址/ip网段/all ] table $WAN1 prio $[优先级]
  68. ##       说明:[...] 为可选项,但前两个[...] 必留其一,且两个[...] 中的IP地址/ip网段/all不能相同;
  69. ##             使用网段表示法时,务必用ip地址计算器(网上找)验算,得到的地址范围内的地址是否是需要的网络地址;
  70. ##             [优先级]为必选项,按照上面的策略优先级执行顺序选择。

  71. ## 为避免脚本升级更新或重新安装导致配置重置为缺省状态,需要重新录入自定义代码,强烈建议将代码放入lz_rule_config.sh中定义的
  72. ## 外置用户自定义双线路脚本文件中,今后不需要在此文件中重复添加和编辑代码。或可将此文件复制并重命名为上述外置用户自定义双线
  73. ## 路脚本文件,并在lz_rule_config.sh中设置为可执行状态。另外,切不可在外置用户自定义双线路脚本文件与本文件中保存相同的可执
  74. ## 行的自定义脚本命令代码。

  75. ## 第二WAN口:路由表ID号为 WAN1
  76. ## 指定如下地址的客户端绑定使用WAN1口访问外网,优先级优先级按上述策略优先级执行顺序选择,条目可添加、减少或删除;
  77. ## 如下命令条目为示例,请根据实际需求修改,不需要可删除(初始处于注释状态,不影响脚本正常运行);
  78. ## 若直接修改下述示例条目命令使用,请删除行首处"#"号注释符。
  79. #ip rule add from 10.0.0.63 table $WAN1 prio $IP_RULE_PRIO_CUSTOM_TOP_HIGH        ## 我的移动机顶盒,必须走第二WAN口的移动宽带才能播放视频
  80. #ip rule add from 10.0.0.234/31 table $WAN1 prio $IP_RULE_PRIO_CUSTOM_HIGH        ## 为我手机和其他设备10.0.0.234~235两个地址预留使用第二WAN口

  81. ## 第一WAN口:路由表ID号为 WAN0
  82. ## 指定如下地址的客户端绑定使用WAN0口访问外网,优先级:优先级按上述策略优先级执行顺序选择,条目可添加、减少或删除;
  83. ## 如下命令条目为示例,请根据实际需求修改,不需要可删除(初始处于注释状态,不影响脚本正常运行);
  84. ## 若直接修改下述示例条目命令使用,请删除行首处"#"号注释符。
  85. #ip rule add from all to 10.0.0.8 table $WAN0 prio $IP_RULE_PRIO_CUSTOM_TOP_HIGH        ## 我的网盘,WAN口应与外网访问路由器WAN口一致
  86. #ip rule add from 10.0.0.8 table $WAN0 prio $IP_RULE_PRIO_CUSTOM_TOP_HIGH        ## 我的网盘,WAN口应与外网访问路由器WAN口一致
  87. #ip rule add from all to 60.12.67.92 table $WAN0 prio $IP_RULE_PRIO_CUSTOM_TOP        ## 使用高优先级通过第一WAN口访问该网址(www.asus.com.cn)
  88. #ip rule add from all to 103.10.4.108 table $WAN0 prio $IP_RULE_PRIO_CUSTOM_TOP_HIGH        ## 使用高优先级通过第一WAN口访问该网址(www.asuscomm.com)
  89. #ip rule add from 10.0.0.76 table $WAN0 prio $IP_RULE_PRIO_CUSTOM        ## 我的 MacBook Air 笔记本,要运行某联通应用,必须使用第一WAN口
  90. #ip rule add from 10.0.0.210 table $WAN0 prio $IP_RULE_PRIO_CUSTOM_TOP_HIGH        ## 我的智能平板电视,需使用固定WAN口访问被ISP绑定的视频
  91. #ip rule add from 10.0.0.228/30 table $WAN0 prio $IP_RULE_PRIO_CUSTOM_TOP        ## 为我手机和其他设备10.0.0.228~229两个地址预留使用第一WAN口


  92. ## 其他自定义脚本代码(仅在双线路同时接通广域网络条件下执行)
  93. ## 若需设置和初始化自定义全局变量请在同目录的lz_rule_config.sh文件内添加相应代码
  94. ## 若需启动或停止服务时清理相关数据和释放占用的系统资源,请在/jffs/scripts/lz/func目录中的lz_clear_custom_scripts_data.sh文件内嵌入相应脚本代码
  95. <<EOF
  96. if [ -f "/目录名/自定义脚本文件名.sh" ]; then
  97.         chmod +x "/目录名/自定义脚本文件名.sh" > /dev/null 2>&1
  98.         /bin/sh /目录名/自定义脚本文件名.sh
  99. fi
  100. EOF


  101. ## -----客户端或指定网址访问路由器出口自定义区结束-----
  102. ## ----------------------------------------------------

  103. #END
复制代码

v3.1.3 通用版 lz_rule.sh 主执行脚本代码:
  1. #!/bin/sh
  2. # lz_rule.sh v3.1.3
  3. # By LZ 妙妙呜 (larsonzhang@gmail.com)

  4. # 本版本采用CIDR(无类别域间路由,Classless Inter-Domain Routing)技术
  5. # 是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。
  6. # CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。
  7. # ————百度百科

  8. #BEIGIN

  9. ## 技巧:上传编辑好的firewall-start文件和本代码至路由器后,开关防火墙即可启动本代码,不必重启路由器。
  10. ##       也可通过SSH命令行窗口直接输入命令运行。
  11. ##       启动/重启        /jffs/scripts/lz/lz_rule.sh
  12. ##       暂停运行         /jffs/scripts/lz/lz_rule.sh stop
  13. ##       终止运行         /jffs/scripts/lz/lz_rule.sh STOP
  14. ##       恢复缺省配置     /jffs/scripts/lz/lz_rule.sh default
  15. ##       模式1启动/重启   /jffs/scripts/lz/lz_rule.sh 1
  16. ##       模式2启动/重启   /jffs/scripts/lz/lz_rule.sh 2
  17. ##       模式3启动/重启   /jffs/scripts/lz/lz_rule.sh 3
  18. ## 提示:暂停命令仅是暂时关闭策略路由服务,重启路由器、线路接入或断开、WAN口IP改变、防火墙开关等事件都会导致本脚本
  19. ##       自启动重新运行。终止命令将彻底停止服务,需SSH命令行窗口手动启动方可运行。
  20. ##       若在Koolshare固件机型上启用过SS服务支持,脚本升级或删除本脚本前请运行停止命令,以清除程序自动
  21. ##       创建的接口文件,亦可手工去/koolshare/ss/postscripts/目录清除P99_lz_rule.sh文件。

  22. ## ----------------------------------------------------
  23. ## -------------全局数据定义及初始化-------------------

  24. ## 版本号
  25. LZ_VERSION=v3.1.3

  26. ## 停止SS服务指令
  27. SS_START="ss_start"

  28. ## 停止SS服务指令
  29. SS_STOP="ss_stop"

  30. [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && {
  31.         echo $(date) [PVID: $]: LZ $LZ_VERSION script commands start......
  32.         echo $(date) [PVID: $]: By LZ \(larsonzhang@gmail.com\)
  33. }
  34. echo $(date) [PVID: $]: -------- LZ $LZ_VERSION rules come here! ----------- >> /tmp/syslog.log

  35. ## 项目文件部署路径
  36. PATH_BASE=/jffs/scripts
  37. PATH_LZ=${PATH_BASE}/lz
  38. PATH_CONFIGS=${PATH_LZ}/configs
  39. PATH_FUNC=${PATH_LZ}/func
  40. PATH_DATA=${PATH_LZ}/data

  41. ## 同步锁文件路径
  42. PATH_LOCK=/var/lock

  43. ## 文件同步锁全路径文件名
  44. LOCK_FILE=${PATH_LOCK}/lz_rule.lock

  45. ## 同步锁文件ID
  46. LOCK_FILE_ID=555

  47. ## 设置文件同步锁
  48. [ ! -d ${PATH_LOCK} ] && {
  49.         mkdir -p ${PATH_LOCK}
  50.         chmod 777 ${PATH_LOCK}
  51. }
  52. exec 555>"${LOCK_FILE}"
  53. flock -x 555

  54. ## 第一WAN口路由表ID号
  55. WAN0=100

  56. ## 第二WAN口路由表ID号
  57. WAN1=200

  58. ## ---------------------主执行脚本---------------------

  59. main(){
  60.         [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  61.                 echo $(date) [PVID: $]: Initialization script configuration parameters......

  62.         ## 使项目文件部署路径、配置脚本、功能脚本和数据文件处于可运行状态
  63.         [ ! -d ${PATH_LZ} ] && mkdir -p ${PATH_LZ}
  64.         chmod 775 ${PATH_LZ}
  65.         [ ! -d ${PATH_CONFIGS} ] && mkdir -p ${PATH_CONFIGS}
  66.         chmod 775 ${PATH_CONFIGS}
  67.         [ ! -d ${PATH_FUNC} ] && mkdir -p ${PATH_FUNC}
  68.         chmod 775 ${PATH_FUNC}
  69.         [ ! -d ${PATH_DATA} ] && mkdir -p ${PATH_DATA}
  70.         chmod 775 ${PATH_DATA}
  71.         cd ${PATH_FUNC}/
  72.         chmod -R 775 *
  73.         cd ${PATH_CONFIGS}/
  74.         chmod -R 775 *
  75.         cd ${PATH_DATA}/
  76.         chmod -R 775 *
  77.         cd ${PATH_LZ}/
  78.         chmod -R 775 *

  79.         ## 调用自定义配置子例程宏定义
  80.         CALL_CONFIG_SUBROUTINE="source ${PATH_CONFIGS}"

  81.         ## 调用功能子例程宏定义
  82.         CALL_FUNC_SUBROUTINE="source ${PATH_FUNC}"

  83.         ## 初始化脚本配置
  84.         ## 输入项:
  85.         ##     $1--主执行脚本运行输入参数
  86.         ## 返回值:无
  87.         ${CALL_FUNC_SUBROUTINE}/lz_initialize_config.sh "$1"

  88.         ## 载入用户自定义配置
  89.         ## 策略分流的用户自定义配置在/jffs/scripts/lz/configs/目录下的lz_rule_config.sh
  90.         ## 和lz_rule_func_config.sh文件中
  91.         ${CALL_CONFIG_SUBROUTINE}/lz_rule_config.sh

  92.         ## 载入外置用户自定义配置脚本文件
  93.         if [ "$custom_config_scripts" = "0" -a ! -z "$custom_config_scripts_filename" ]; then
  94.                 if [ -f "$custom_config_scripts_filename" ]; then
  95.                         chmod 775 "$custom_config_scripts_filename" > /dev/null 2>&1
  96.                         source "$custom_config_scripts_filename"
  97.                 fi
  98.         fi

  99.         ## 全局常量、变量定义及初始化
  100.         ## 输入项:
  101.         ##     全局常量
  102.         ## 返回值:无
  103.         ${CALL_FUNC_SUBROUTINE}/lz_define_global_variables.sh

  104.         ## 载入函数功能定义
  105.         ${CALL_FUNC_SUBROUTINE}/lz_rule_func.sh

  106.         [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && {
  107.                 echo $(date) [PVID: $]: Configuration parameters initialization is complete.
  108.                 echo $(date) [PVID: $]: Get the router device information......
  109.         }

  110.         ## 启动延时5秒
  111. #        sleep 5s

  112.         ## 删除自动清理路由表缓存定时任务
  113.         if [ -n "$( cru l | grep "#${CLEAR_ROUTE_CACHE_TIMEER_ID}#" )" ]; then
  114.                 cru d ${CLEAR_ROUTE_CACHE_TIMEER_ID} > /dev/null 2>&1
  115.         fi

  116.         ## 获取路由器基本信息并输出至系统记录
  117.         ## 输入项:
  118.         ##     $1--主执行脚本运行输入参数
  119.         ##     全局变量
  120.         ##         route_hardware_type--路由器硬件类型
  121.         ##         route_os_name--路由器操作系统名称
  122.         ##         policy_mode--分流模式
  123.         ## 返回值:
  124.         ##     MATCH_SET--iptables设置操作符宏变量,全局常量
  125.         ##     route_local_ip--路由器本地IP地址,全局变量
  126.         lz_get_route_info "$1"

  127.         [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  128.                 echo $(date) [PVID: $]: Initializes the policy routing library......
  129.         echo $(date) [PVID: $]: -------- LZ $LZ_VERSION rules initializing! -------- >> /tmp/syslog.log

  130.         ## 处理系统负载均衡分流策略规则
  131.         ## 输入项:
  132.         ##     全局常量
  133.         ## 返回值:无
  134.         lz_sys_load_balance_control

  135.         ## 加载ipset组件:S大神的GT-AC5300_384_21140官改固件提供了自己的支持,不需要加载。
  136.         ## 输入项:无
  137.         ## 返回值:无
  138.         lz_load_ipset_module

  139.         ## 加载hashlimit组件
  140.         ## 输入项:无
  141.         ## 返回值:无
  142.         [ "$limit_client_download_speed" = "0" ] && lz_load_hashlimit_module

  143.         ## 数据清理
  144.         ## 输入项:
  145.         ##     $1--主执行脚本运行输入参数
  146.         ##     全局常量
  147.         ## 返回值:
  148.         ##     ip_rule_exist--删除后剩余条目数,正常为0,全局变量
  149.         lz_data_cleaning "$1"

  150.         [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  151.                 echo $(date) [PVID: $]: Policy routing library has been initialized.
  152.         echo $(date) [PVID: $]: -------- LZ $LZ_VERSION rules initialized! --------- >> /tmp/syslog.log

  153.         ## 接到停止运行命令
  154.         ## SSH中执行“/jffs/scripts/lz_rule.sh stop”或“/jffs/scripts/lz_rule.sh STOP”,都会立刻停止本脚本配
  155.         ## 置的策略路由服务,若“/jffs/firewall-start”中的“/jffs/scripts/lz_rule.sh”引导启动命令未清除,路
  156.         ## 由器重启、线路接入或断开、防火墙开关等事件都会导致自启动运行本脚本。
  157.         if [ "$1" = "stop" -o "$1" = "STOP" ]; then
  158.                 ## 输出当前分流规则每个优先级的条目数至系统记录
  159.                 ## 输入项:
  160.                 ##     $1--IP_RULE_PRIO_TOPEST--分流规则条目优先级上限数值(例如:IP_RULE_PRIO-29=24971)
  161.                 ##     $2--IP_RULE_PRIO--既有分流规则条目优先级下限数值(例如:IP_RULE_PRIO=25000)
  162.                 ## 返回值:无
  163.                 lz_ip_rule_output_syslog "$IP_RULE_PRIO_TOPEST" "$IP_RULE_PRIO"

  164.                 ## 清除接口脚本文件
  165.                 ## 输入项:
  166.                 ##     $1--主执行脚本运行输入参数
  167.                 ##     全局常量
  168.                 ## 返回值:无
  169.                 lz_clear_interface_scripts "$1"

  170.                 [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  171.                         echo $(date) [PVID: $]: Policy routing service has stopped.
  172.                 echo $(date) [PVID: $]: -------- LZ $LZ_VERSION rules stopped! ------------- >> /tmp/syslog.log

  173.                 return
  174.         fi

  175.         ## 创建firewall-start启动文件并添加脚本引导项
  176.         ## 输入项:
  177.         ##     全局常量
  178.         ## 返回值:无
  179.         lz_create_firewall_start_command

  180.         ## 创建更新ISP网络运营商CIDR网段数据的脚本文件及定时任务
  181.         ## 输入项:
  182.         ##     $1--主执行脚本运行输入参数
  183.         ##     全局变量及常量
  184.         ## 返回值:无
  185.         lz_create_update_ispip_data_file "$1"

  186.         ## 流量路由策略部署
  187.         ## 脚本中先add的rule优先级低
  188.         ## 脚本使用 IP_RULE_PRIO+1 ~ IP_RULE_PRIO_TOPEST 31个优先级,数值越小,优先级越高,网络访问
  189.         ## 数据包优先匹配高优先级规则
  190.         ## 部署条件:双线接入成功,系统内成功自建wan0、wan1路由表,案中规则尚未部署
  191.         ## 重要说明:WAN0口指路由器接入宽带的第一WAN口,路由表为wan0;WAN1口指第二WAN口,路由表为wan1
  192.         ## 案例背景:第一WAN口接联通宽带,100M,响应快,稳定,上行带宽小
  193.         ##           第二WAN口接移动宽带,200M,有些low,承诺话费送的
  194.         ##           尽可能选品质好的宽带接第一WAN口
  195.         ##           若与本案例应用背景不同,可在/jffs/scripts/lz/configs/目录下的lz_rule_config.sh和
  196.         ##           lz_rule_func_config.sh文件中“用户运行策略自定义区”修改路由器策略路由配置

  197.         if [ $( ip route show table $WAN0 | grep -c "dev" ) -gt 0 -a \
  198.                 $( ip route show table $WAN1 | grep -c "dev" ) -gt 0 -a \
  199.                 $ip_rule_exist = 0 ]; then

  200.                 [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && {
  201.                         echo $(date) [PVID: $]: The router has successfully joined into two WANs.
  202.                         echo $(date) [PVID: $]: Policy routing service is being started......
  203.                 }

  204.                 ## 部署流量路由策略
  205.                 ## 输入项:
  206.                 ##     $1--主执行脚本运行输入参数
  207.                 ##     全局常量及变量
  208.                 ## 返回值:无
  209.                 lz_deployment_routing_policy "$1"

  210.                 ## 输出当前分流规则每个优先级的条目数至系统记录
  211.                 ## 输入项:
  212.                 ##     $1--IP_RULE_PRIO_TOPEST--分流规则条目优先级上限数值(例如:IP_RULE_PRIO-29=24971)
  213.                 ##     $2--IP_RULE_PRIO--既有分流规则条目优先级下限数值(例如:IP_RULE_PRIO=25000)
  214.                 ## 返回值:无
  215.                 lz_ip_rule_output_syslog "$IP_RULE_PRIO_TOPEST" "$IP_RULE_PRIO"

  216.                 [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  217.                         echo $(date) [PVID: $]: Policy routing service has been started successfully.
  218.                 echo $(date) [PVID: $]: -------- LZ $LZ_VERSION rules run ok! -------------- >> /tmp/syslog.log

  219.         else

  220.                 [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  221.                         echo $(date) [PVID: $]: The router hasn\'t been connected to the two WANs.
  222.                 echo $(date) [PVID: $]: LZ The router hasn\'t been connected to the two WANs. >> /tmp/syslog.log

  223.                 ## 输出当前分流规则每个优先级的条目数至系统记录
  224.                 ## 输入项:
  225.                 ##     $1--IP_RULE_PRIO_TOPEST--分流规则条目优先级上限数值(例如:IP_RULE_PRIO-29=24971)
  226.                 ##     $2--IP_RULE_PRIO--既有分流规则条目优先级下限数值(例如:IP_RULE_PRIO=25000)
  227.                 ## 返回值:无
  228.                 lz_ip_rule_output_syslog "$IP_RULE_PRIO_TOPEST" "$IP_RULE_PRIO"

  229.                 ## 清除接口脚本文件
  230.                 ## 输入项:
  231.                 ##     $1--主执行脚本运行输入参数
  232.                 ##     全局常量
  233.                 ## 返回值:无
  234.                 lz_clear_interface_scripts "$1"

  235.                 [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  236.                         echo $(date) [PVID: $]: The policy routing service isn\'t running.
  237.                 echo $(date) [PVID: $]: -------- No LZ $LZ_VERSION rules run! -------------- >> /tmp/syslog.log
  238.         fi
  239. }

  240. ## 极限情况下文件锁偶有锁不住的情况发生,与预期不符。利用系统自带的策略路由数据库做进程间异步模式同步,
  241. ## 虽会降低些效率,代码也不好看,但作为同步过程中的二次防御手段还是很值得。一旦脚本执行过程中意外中断,
  242. ## 可通过手工删除垃圾规则条目或重启路由器清理策略路由库中的垃圾数据
  243. if [ $( ip rule show | grep -c "from 168.168.168.168 to 169.169.169.169" ) = 0 ]; then
  244.         ## 临时规则,用于进程间同步,防止启动时系统或其它应用同时调用和执行两个以上的lz脚本实例
  245.         ## 如与系统中现有规则冲突,可酌情修改;高手们会用更好的方法,请教教我,谢啦!
  246.         ip rule add from 168.168.168.168 to 169.169.169.169 table $WAN0

  247.         ## 刷新系统cache,使上述命令立即生效
  248.         ip route flush cache

  249.         sleep 1s

  250.         if [ $( ip rule show | grep -c "from 168.168.168.168 to 169.169.169.169" ) -gt 1 ]; then
  251.                 ip rule del from 168.168.168.168 to 169.169.169.169 > /dev/null 2>&1

  252.                 ip route flush cache

  253.                 echo $(date) [PVID: $]: LZ Another script instance is running. >> /tmp/syslog.log
  254.                 echo $(date) [PVID: $]: -------- LZ $LZ_VERSION rules running! ------------- >> /tmp/syslog.log

  255.                 if [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ]; then
  256.                         echo $(date) [PVID: $]: The policy routing service is being started by another instance.
  257.                         echo $(date) [PVID: $]: LZ $LZ_VERSION script commands executed!
  258.                 fi

  259.                 ## 解除文件同步锁
  260.                 flock -u 555
  261.                 rm -rf "${LOCK_FILE}"

  262.                 exit
  263.         fi

  264.         ## 执行主脚本
  265.         main "$1"

  266.         ## 删除进程间同步用临时规则,要与脚本开始时的添加命令一致
  267.         if [ $( ip rule show | grep -c "from 168.168.168.168 to 169.169.169.169" ) != 0 ]; then
  268.                 ip rule del from 168.168.168.168 to 169.169.169.169 > /dev/null 2>&1
  269.         fi

  270.         ## 刷新系统cache,使上述命令立即生效
  271.         ip route flush cache

  272. else

  273.         [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  274.                 echo $(date) [PVID: $]: The policy routing service is being started by another instance.
  275.         echo $(date) [PVID: $]: LZ Another script instance is running. >> /tmp/syslog.log
  276.         echo $(date) [PVID: $]: -------- LZ $LZ_VERSION rules running! ------------- >> /tmp/syslog.log
  277. fi

  278. [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  279.         echo $(date) [PVID: $]: LZ $LZ_VERSION script commands executed!

  280. ## 解除文件同步锁
  281. flock -u 555
  282. rm -rf "${LOCK_FILE}"

  283. #END
复制代码

以上为部分代码,完整代码请在主帖中下载完整包。

13

主题

2239

帖子

899

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
505
魔法值
0
注册时间
2018-7-15
 楼主| 发表于 2018-8-19 04:26:44 | 显示全部楼层
本帖最后由 妙妙呜 于 2018-10-13 13:25 编辑

华硕及梅林固件改版路由器双拨不同ISP之策略分流方案v2.2.7通用版
文件名:firewall-start,无后缀,该文件名不可更改,否则系统不认。请将该文件粘贴到路由器的/jffs/scripts/目录下,权限0777,可在WinSCP中查看文件及文件夹的属性并修改权限。注意:相对于初版,脚本中的路径、执行脚本文件名有修改
  1. #!/bin/sh
  2. # firewall-start
  3. cd /jffs/scripts/lz/
  4. ./lz_rule.sh
复制代码

文件名:lz_rule.sh,请将该文件及配套的网段数据文件一并粘贴到/jffs/scripts/lz/目录里,权限0775
请在/jffs/scripts/下建立lz命名的子目录,文件夹权限至少是0775。若要改此文件名(后缀“.sh”不可更改)、路径,需同时修改上面firewall-start文件中的原有路径。注意:相对于之前版本,脚本安装路径有重大改变。此处代码内容与主贴下载链接中完整包一致,为能发表,在敏感词中添加了@标记,复制使用中请注意删除此标记。建议还是用下载的完整包,这里主要用于浏览。
  1. #!/bin/sh
  2. # lz_rule.sh v2.2.7
  3. # By LZ

  4. # 本版本采用CIDR(无类别域间路由,Classless Inter-Domain Routing)技术
  5. # 是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。
  6. # CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。
  7. # ————百度百科

  8. #BEIGIN

  9. ## 技巧:上传编辑好的firewall-start文件和本代码至路由器后,开关防火墙即可启动本代码,不必重启路由器。
  10. ##       高手可通过SSH命令行窗口直接调用执行。
  11. ##       启动命令:/jffs/scripts/lz/lz_rule.sh
  12. ##       停止命令:/jffs/scripts/lz/lz_rule.sh stop
  13. ## 提示:停止命令仅是暂时关闭策略路由服务,重启路由器、线路接入或断开、防火墙开关等事件都会导致本脚本自启动重新运行

  14. ## ----------------------------------------------------
  15. ## ----------------用户运行策略自定义区----------------
  16. ## 缺省设置:
  17. ##       1.去往联通、电信、国外ISP的网络访问流量走第一WAN口
  18. ##       2.去往移动、铁通、教育网、长城宽带/鹏博士的网络访问流量走第二WAN口
  19. ##       3.不屏蔽系统负载均衡策略分流功能,去往国内其他ISP以及未被规则和网段数据覆盖的网络访问流量由系统自动分配出口
  20. ##       如有不同需求,请在自定义区修改下面的参数配置

  21. ## 用户策略执行优先级:由低到高排列;系统抢先执行高优先级策略。
  22. ##       未被规则和网段数据覆盖的网络访问--ISP服务器IP网段数据--自定义网址网段--客户端使用自定义函数--SS服务

  23. ## 定义待访问ISP服务器IP网段的路由器数据流量出口
  24. ## 0--访问路由器接入宽带的第一WAN口;1--访问路由器接入宽带的第二WAN口;
  25. ## 0与1之外的无符号整数--不使用或无此网段数据,或在不屏蔽系统负载均衡时由系统自动分配流量出口,在屏蔽系统负载
  26. ## 均衡策略分流功能后,对该ISP目标网段的访问将通过第一WAN口实现。
  27. ## 注意:1.赋值命令的"="号两边不要有空格;
  28. ##       2.如需指定客户端的外网出口,请编辑下面“用户客户端使用指定路由器出口访问外网自定义函数”中的内容。
  29. ##       3.第一次部署本版脚本,请重启路由器后运行。

  30. ## a.中国之外所有IP地址,所用网段数据文件:all_cn_cidr.txt
  31. ## 0:中国之外所有IP地址的访问使用第一WAN口;
  32. ## 1:使用第二WAN口;
  33. ## 大于1:表示不使用或无此网段数据,或在不屏蔽系统负载均衡时由系统自动分配流量出口,以下类推
  34. all_foreign_wan_no=0

  35. ## b.中国电信,所用网段数据文件:chinatelecom_cidr.txt
  36. chinatelecom_wan_no=0

  37. ## c.中国联通/网通,所用网段数据文件:unicom_cnc_cidr.txt
  38. unicom_cnc_wan_no=0

  39. ## d.中国移动,所用网段数据文件:cmcc_cidr.txt
  40. ## 1表示中国移动IP地址的访问使用第二AN口
  41. cmcc_wan_no=1

  42. ## e.中国铁通,所用网段数据文件:crtc_cidr.txt
  43. crtc_wan_no=1

  44. ## f.中国教育网,所用网段数据文件:cernet_cidr.txt
  45. cernet_wan_no=1

  46. ## g.长城宽带/鹏博士,所用网段数据文件:gwbn_cidr.txt
  47. gwbn_wan_no=1

  48. ## h.中国其他ISP
  49. othernet_wan_no_1=3        ## 所用网段数据文件:othernet_cidr.txt,包含数据比较多,必要时,可自主切分成三份分别控制使用
  50. othernet_wan_no_2=5        ## 所用网段数据文件:othernet2_cidr.txt,如不存在,请将该值设为0和1以外的无符号整数
  51. othernet_wan_no_3=5        ## 所用网段数据文件:othernet3_cidr.txt,如不存在,请将该值设为0和1以外的无符号整数

  52. ## i.用户自定义网址网段-1
  53. custom_data_wan_no_1=5

  54. ## 用户自定义网址网段数据文件,文本格式,结构参考前述网段数据文件结构,可自定义文件名,要求填入全路径文件名
  55. custom_data_file_1="/jffs/scripts/lz/custom_data_1.txt"

  56. ## j.用户自定义网址网段-2
  57. custom_data_wan_no_2=5

  58. ## 用户自定义网址网段数据文件,文本格式,结构参考前述网段数据文件结构,可自定义文件名,要求填入全路径文件名
  59. custom_data_file_2="/jffs/scripts/lz/custom_data_2.txt"

  60. ## SS服务使用路由器WAN口(0--第一WAN口;1--第二WAN口;0和1之外的无符号整数--不使用SS服务)
  61. ## 适配Merlin-Koolshare固件版本7.2以上的科学@上网@插件 sh@ado@wso@cks 4.0.9
  62. ss_wan_no=5

  63. ## 是否屏蔽使用系统负载均衡策略中的分流功能
  64. ## 不屏蔽时,脚本会自动降低系统负载均衡策略执行优先级,避免系统负载均衡策略先于用户策略执行。
  65. ## 若屏蔽可获得最佳性能,资源占用率最低,完全由自主掌控流量分流方式。
  66. ## 若不屏蔽,可将去往某ISP网段访问的出口号设为大于1的无符号整数,该网段及所有未被用户策略覆盖的网络访问,将由系统
  67. ## 原生的负载均衡机制自动进行分流控制,如在双拨同一ISP的情况下,若ISP没有限制和封堵,可实现带速叠加效应;若是不同
  68. ## ISP之间,由于网络品质等客观条件存在差异,带速叠加效果有达不到预期的可能。
  69. ## 0--不屏蔽,使用系统负载均衡;1--屏蔽,不使用系统负载均衡
  70. sys_load_balance_idle=0

  71. ## 用户客户端使用指定路由器出口访问外网自定义函数
  72. ## 注意:该函数内容可以为空,但不可删除该脚本函数定义框架
  73. function lz_ip_rule_from_localip_to_wan_outlet() {

  74.         ## 提示:可定义一些网址固定使用指定WAN口访问外网,实际中可根据随时需要将终端IP切换成这些网址,从而使用指定的WAN口外访。
  75.         ##       现实中有些网站会将访问请求跨网段跳转到另一处,同时会验证你的出口是否唯一,这时你可能需要这段时间内走固定WAN口
  76.         ##       出游,这些预定义内网网址就很有用了。

  77.         ## 命令格式:
  78.         ##       去往第一WAN口:ip add [ from 源IP地址/ip网段/all ] [ to 目标IP地址/ip网段/all ] table $WAN0 $IP_RULE_PRIO_0
  79.         ##       去往第二WAN口:ip add [ from 源IP地址/ip网段/all ] [ to 目标IP地址/ip网段/all ] table $WAN1 $IP_RULE_PRIO_1
  80.         ##       说明:[...] 表示可省略不书写,但两个[...] 必留其一;两个[...] 中的IP地址/ip网段/all不能相同;
  81.         ##             使用网段表示法时,务必用ip地址计算器(网上找)算一下,得到的地址范围内的地址是否是你要的那些具体地址

  82.         ## 第二WAN口:路由表ID号为 WAN1
  83.         ## 指定如下地址的客户端仅使用WAN1口访问外网,优先级:IP_RULE_PRIO_1,条目可添加、减少或删除;
  84.         ## 如下命令条目为案例,请根据实际需求修改,不需要可删除(初始处于注释状态,不影响脚本正常运行)。
  85. #        ip rule add from 10.0.0.63 table $WAN1 prio $IP_RULE_PRIO_1                ## 我的移动机顶盒,必须走第二WAN口的移动宽带才能播放视频
  86. #        ip rule add from 10.0.0.234/31 table $WAN1 prio $IP_RULE_PRIO_1        ## 为我手机和其他设备10.0.0.234~235两个地址预留使用第二WAN口

  87.         ## 第一WAN口:路由表ID号为 WAN0
  88.         ## 指定如下地址的客户端仅使用WAN0口访问外网,优先级:IP_RULE_PRIO_0,条目可添加、减少或删除;
  89.         ## 如下命令条目为案例,请根据实际需求修改,不需要可删除(初始处于注释状态,不影响脚本正常运行)。
  90. #        ip rule add from 10.0.0.76 table $WAN0 prio $IP_RULE_PRIO_0                ## 我的 MacBook Air 笔记本,要运行某联通应用,必须使用第一WAN口
  91. #        ip rule add from 10.0.0.210 table $WAN0 prio $IP_RULE_PRIO_0        ## 我的智能平板电视,需使用固定WAN口访问被ISP绑定的视频
  92. #        ip rule add from 10.0.0.228/30 table $WAN0 prio $IP_RULE_PRIO_0        ## 为我手机和其他设备10.0.0.228~229两个地址预留使用第一WAN口

  93.         return 0
  94. }

  95. ## --------------用户运行策略自定义区结束--------------
  96. ## ----------------------------------------------------


  97. ## -------------全局常量、变量定义及初始化-------------

  98. ## 第一WAN口路由表ID号
  99. WAN0=100

  100. ## 第二WAN口路由表ID号
  101. WAN1=200

  102. ## 第一WAN口报文数据包标记
  103. FWMARK0=0x9999

  104. ## 第二WAN口报文数据包标记
  105. FWMARK1=0x8888

  106. ## 用户自定义网址网段报文数据包标记-1
  107. CUSTOM_FWMARK_0=0x7777

  108. ## 用户自定义网址网段报文数据包标记-2
  109. CUSTOM_FWMARK_1=0x6666

  110. ## 策略规则基础优先级
  111. IP_RULE_PRIO=25000

  112. ## 第一WAN口自定义策略规则优先级
  113. IP_RULE_PRIO_0=$(( $IP_RULE_PRIO - 3 ))

  114. ## 第二WAN口自定义策略规则优先级
  115. IP_RULE_PRIO_1=$(( $IP_RULE_PRIO - 3 ))

  116. ## SS自定义策略规则优先级
  117. SS_RULE_FROM_PRIO=$(( $IP_RULE_PRIO - 5 ))
  118. SS_RULE_TO_PRIO=$(( $IP_RULE_PRIO - 4 ))

  119. ## SS服务支持的WAN口路由表ID号
  120. SS_WAN_ID=$WAN1
  121. [ $ss_wan_no = 0 ] && SS_WAN_ID=$WAN0
  122. [ $ss_wan_no = 1 ] && SS_WAN_ID=$WAN1

  123. ## iptables --match-set针对不同硬件类型选项宏变量
  124. MATCH_SET='--match-set'

  125. ## 第一WAN口报文数据包标记使用标志
  126. fwmark_0_used=0

  127. ## 第二WAN口报文数据包标记使用标志
  128. fwmark_1_used=0

  129. ## 用户自定义网址网段报文数据包标记-1使用标志
  130. custom_fwmark_0_used=0

  131. ## 用户自定义网址网段报文数据包标记-2使用标志
  132. custom_fwmark_1_used=0

  133. ## 路由器硬件类型
  134. route_hardware_type=$( uname -m )

  135. ## 路由器操作系统名称
  136. route_os_name=$( uname -o )


  137. ## ----------------------函数定义----------------------

  138. ## 获取路由器基本信息并输出至系统记录函数
  139. ## 输入项:无
  140. ## 返回值:路由器本地IP地址
  141. function lz_get_route_info() {

  142.         ## 输出显示路由器硬件类型及设置操作符
  143.         case $route_hardware_type in
  144.                 armv7l)
  145.                         MATCH_SET='--match-set'
  146.                 ;;
  147.                 mips)
  148.                         MATCH_SET='--set'
  149.                 ;;
  150.                 *)
  151.                         MATCH_SET='--match-set'
  152.                 ;;
  153.         esac
  154.         [ -z "$route_hardware_type" ] && route_hardware_type="Unknown"
  155.         echo $(date): LZ Hardware type:  $route_hardware_type >> /tmp/syslog.log

  156.         ## 输出显示路由器主机名
  157.         local route_hostname=$( uname -n )
  158.         [ -z "$route_hostname" ] && route_hostname="Unknown"
  159.         echo $(date): LZ Host Name:  $route_hostname >> /tmp/syslog.log

  160.         ## 输出显示路由器操作系统内核名称
  161.         local route_Kernel_name=$( uname )
  162.         [ -z "$route_Kernel_name" ] && route_Kernel_name="Unknown"
  163.         echo $(date): LZ Kernel Name:  $route_Kernel_name >> /tmp/syslog.log

  164.         ## 输出显示路由器操作系统内核发行编号
  165.         local route_kernel_release=$( uname -r )
  166.         [ -z "$route_kernel_release" ] && route_kernel_release="Unknown"
  167.         echo $(date): LZ Kernel Release:  $route_kernel_release >> /tmp/syslog.log

  168.         ## 输出显示路由器操作系统内核版本号
  169.         local route_kernel_version=$( uname -v )
  170.         [ -z "$route_kernel_version" ] && route_kernel_version="Unknown"
  171.         echo $(date): LZ Kernel Version:  $route_kernel_version >> /tmp/syslog.log

  172.         ## 输出显示路由器操作系统名称
  173.         [ -z "$route_os_name" ] && route_os_name="Unknown"
  174.         echo $(date): LZ OS Name:  $route_os_name >> /tmp/syslog.log

  175.         if [ "$route_os_name" = "Merlin-Koolshare" ]; then
  176.                 ## 输出显示路由器固件版本号
  177.                 local firmware_version=$( nvram get extendno | cut -d "X" -f2 | cut -d "-" -f1 | cut -d "_" -f1 )
  178.                 [ -z "$firmware_version" ] && firmware_version="Unknown"
  179.                 echo $(date): LZ Firmware Version:  $firmware_version >> /tmp/syslog.log
  180.         fi

  181.         ## 获取路由器本地网络信息
  182.         ## 由于不同系统中ifconfig返回信息的格式有一定差别,需分开处理
  183.         ## Linux的其他版本的格式暂不掌握,做框架性预留处理
  184.         local route_local_info=""
  185.         case $route_Kernel_name in
  186.                 Linux)
  187.                         route_local_info="$( /sbin/ifconfig br0 )"
  188.                 ;;
  189.                 FreeBSD|OpenBSD)
  190.                         route_local_info=""
  191.                 ;;
  192.                 SunOS)
  193.                         route_local_info=""
  194.                 ;;
  195.                 *)
  196.                         route_local_info=""
  197.                 ;;
  198.         esac

  199.         local route_local_link_status="Unknown"
  200.         local route_local_encap="Unknown"
  201.         local route_local_mac="Unknown"
  202.         local route_local_ip="Unknown"
  203.         local route_local_bcast_ip="Unknown"
  204.         local route_local_ip_mask="Unknown"

  205.         if [ ! -z "$route_local_info" ]; then
  206.                 ## 获取路由器本地网络连接状态
  207.                 route_local_link_status=$( echo $route_local_info | awk -F " " '{print $2}' )
  208.                 [ -z "$route_local_link_status" ] && route_local_link_status="Unknown"

  209.                 ## 获取路由器本地网络封装类型
  210.                 route_local_encap=$( echo $route_local_info | awk -F " " '{print $3}' | awk -F ":" '{print $2}' )
  211.                 [ -z "$route_local_encap" ] && route_local_encap="Unknown"

  212.                 ## 获取路由器本地网络MAC地址
  213.                 route_local_mac=$( echo $route_local_info | awk -F " " '{print $5}' )
  214.                 [ -z "$route_local_mac" ] && route_local_mac="Unknown"

  215.                 ## 获取路由器本地网络地址
  216.                 route_local_ip=$( echo $route_local_info | awk -F " " '{print $7}' | awk -F ":" '{print $2}' )
  217.                 [ -z "$route_local_ip" ] && route_local_ip="Unknown"

  218.                 ## 获取路由器本地广播地址
  219.                 route_local_bcast_ip=$( echo $route_local_info | awk -F " " '{print $8}' | awk -F ":" '{print $2}' )
  220.                 [ -z "$route_local_bcast_ip" ] && route_local_bcast_ip="Unknown"

  221.                 ## 获取路由器本地网络掩码
  222.                 route_local_ip_mask=$( echo $route_local_info | awk -F " " '{print $9}' | awk -F ":" '{print $2}' )
  223.                 [ -z "$route_local_ip_mask" ] && route_local_ip_mask="Unknown"
  224.         fi

  225.         ## 输出路由器网络状态基本信息至Asuswrt系统记录
  226.         [ -z "$route_local_info" ] && echo $(date): LZ Route Local Info:  Unknown >> /tmp/syslog.log
  227.         echo $(date): LZ Route Status:  $route_local_link_status >> /tmp/syslog.log
  228.         echo $(date): LZ Route Encap:  $route_local_encap >> /tmp/syslog.log
  229.         echo $(date): LZ Route HWaddr:  $route_local_mac >> /tmp/syslog.log
  230.         echo $(date): LZ Route Local IP Addr:  $route_local_ip >> /tmp/syslog.log
  231.         echo $(date): LZ Route Local Bcast:  $route_local_bcast_ip >> /tmp/syslog.log
  232.         echo $(date): LZ Route Local Mask:  $route_local_ip_mask >> /tmp/syslog.log

  233.         ## 返回路由器本地地址
  234.         echo $route_local_ip
  235. }

  236. ## 处理系统负载均衡分流策略函数
  237. ## 输入项:无
  238. ## 返回值:无
  239. function lz_sys_load_balance_control() {

  240.         ## 梅林官方384.6固件启动双线路负载均衡时,系统在防火墙过滤包时会将所有数据包分别打上0x80000000/0xf0000000、
  241.         ## 0x90000000/0xf0000000用于负载均衡控制的特殊标记,并在系统的策略路由库中自动添加如下两条对具有负载均标记
  242.         ## 的数据包进行分流控制的高优先级规则:
  243.         ##     150:        from all fwmark 0x80000000/0xf0000000 lookup wan0
  244.         ##     150:        from all fwmark 0x90000000/0xf0000000 lookup wan1
  245.         ## 这两条规则易导致策略分流脚本运行时的分流控制出现失效现象,如不能按指定路径访问外网,网络卡慢、断流,网站页
  246.         ## 面忽然打不开,IPTV、爱奇艺、腾讯视频等音视频应用不能正常播放等诸如此类现象。一旦退出负载均衡或某一路接入断
  247.         ## 开,系统会自动清除上述设置。其它版本的华硕、梅林及改版固件是否有类似问题尚待验证。
  248.         ## 解决方法如下:

  249.         ## a.对固件系统中第一WAN口的负载均衡分流策略采取主动控制措施
  250.         local sys_load_balance_wan0_exist=$( ip rule show | grep -c "from all fwmark 0x80000000/0xf0000000" )
  251.         if [ $sys_load_balance_wan0_exist -gt 0 ]; then
  252.                 ip rule del from all fwmark 0x80000000/0xf0000000 table $WAN0
  253.                 ## 不清除系统负载均衡策略中的分流功能,但降低其执行优先级,防止先于自定义分流规则执行
  254.                 ip rule add from all fwmark 0x80000000/0xf0000000 table $WAN0 prio $(( $IP_RULE_PRIO + 1 ))
  255.         fi

  256.         ## b.对固件系统中第二WAN口的负载均衡分流策略采取主动控制措施
  257.         local sys_load_balance_wan1_exist=$( ip rule show | grep -c "from all fwmark 0x90000000/0xf0000000" )
  258.         if [ $sys_load_balance_wan1_exist -gt 0 ]; then
  259.                 ip rule del from all fwmark 0x90000000/0xf0000000 table $WAN1
  260.                 ## 不清除系统负载均衡策略中的分流功能,但降低其执行优先级,防止先于自定义分流规则执行
  261.                 ip rule add from all fwmark 0x90000000/0xf0000000 table $WAN1 prio $(( $IP_RULE_PRIO + 1 ))
  262.         fi
  263. }

  264. ## 加载ipset组件函数
  265. ## 输入项:无
  266. ## 返回值:无
  267. function lz_load_ipset_module() {
  268. <<EOF
  269.         ## S大的GT-AC5300_384_21140官改固件提供了自己的支持,不需要加载。
  270.         ## 如有老版本出现兼容性问题,需要加载,可去掉注释符使用
  271.         modprobe xt_set > /dev/null 2>&1
  272.         lsmod | grep "xt_set" > /dev/null 2>&1 || \
  273.         for module in ip_set ip_set_hash_net ip_set_hash_ip xt_set
  274.         do
  275.                 insmod $module > /dev/null 2>&1
  276.         done
  277. EOF
  278.         xt=`lsmod | grep xt_set` > /dev/null 2>&1
  279.         OS=$( uname -r )
  280.         if [ -f /lib/modules/${OS}/kernel/net/netfilter/xt_set.ko ] && [ -z "$xt" ];then
  281.                 insmod /lib/modules/${OS}/kernel/net/netfilter/xt_set.ko
  282.         fi
  283. }

  284. ## 删除旧分流规则并输出旧分流规则每个优先级的条目数至系统记录函数
  285. ## 输入项:$1--旧分流规则条目优先级上限数值(例如:IP_RULE_PRIO - 6 = 24994)
  286. ##         $2--旧分流规则条目优先级下限数值(例如:IP_RULE_PRIO = 25000)
  287. ## 返回值:删除后剩余条目数,正常为0
  288. ## 严重注意:同时会删除该范围内系统中非本脚本建立的规则,如有冲突,请修改代码中所使用的优先级范围
  289. function lz_delete_ip_rule_output_syslog() {

  290.         local ip_rule_exist=0
  291.         local ip_rule_prio_no=$1
  292.         until [ $ip_rule_prio_no -gt $2 ]
  293.         do
  294.                 ip_rule_exist=$( ip rule show | grep -c "$ip_rule_prio_no:" )
  295.                 echo $(date): LZ ip_rule_prio_$ip_rule_prio_no = $ip_rule_exist >> /tmp/syslog.log
  296.                 if [ $ip_rule_exist -gt 0 ]; then
  297.                         until [ $ip_rule_exist = 0 ]
  298.                         do
  299.                                 ip rule del prio $ip_rule_prio_no
  300.                                 ip_rule_exist=$(( $ip_rule_exist - 1 ))
  301.                         done
  302.                 fi
  303.                 ip_rule_prio_no=$(( $ip_rule_prio_no + 1 ))
  304.         done

  305.         ## 返回删除后剩余条目数,正常为0
  306.         echo $ip_rule_exist
  307. }

  308. ## 删除标记数据包的防火墙过滤规则函数
  309. ## 输入项:$1--报文数据包标记
  310. ## 返回值:无
  311. function lz_delete_iptables_fwmark() {

  312.         for number in $( iptables -t mangle -L OUTPUT -v -n --line-numbers | grep "dst MARK set $1" | cut -d " " -f 1 | sort -nr )
  313.         do
  314.                 iptables -t mangle -D OUTPUT $number
  315.         done
  316.         for number in $( iptables -t mangle -L PREROUTING -v -n --line-numbers | grep "dst MARK set $1" | cut -d " " -f 1 | sort -nr )
  317.         do
  318.                 iptables -t mangle -D PREROUTING $number
  319.         done
  320. }

  321. ## 清理之前设置的标记数据包的防火墙过滤规则函数
  322. ## 输入项:无
  323. ## 返回值:无
  324. function lz_clear_iptables_fwmark() {

  325.         ## 清理标记 FWMARK1 数据包的防火墙过滤规则
  326.         lz_delete_iptables_fwmark $FWMARK1

  327.         ## 清理标记 FWMARK0 数据包的防火墙过滤规则
  328.         lz_delete_iptables_fwmark $FWMARK0

  329.         ## 清理标记 CUSTOM_FWMARK_0 数据包的防火墙过滤规则
  330.         lz_delete_iptables_fwmark $CUSTOM_FWMARK_0

  331.         ## 清理标记 CUSTOM_FWMARK_1 数据包的防火墙过滤规则
  332.         lz_delete_iptables_fwmark $CUSTOM_FWMARK_1
  333. }

  334. ## 清理目标访问服务器IP网段数据集函数
  335. ## 输入项:无
  336. ## 返回值:无
  337. function lz_destroy_ipset() {

  338.         ## a.中国所有IP地址
  339.         ipset -F -q all_cn        ## 清空数据集。若不清空,被系统内核占用无法释放时,再次创建会失败,导致后续无法读入数据
  340.         ipset -X -q all_cn        ## 若集合已被系统内核占用,则什么都不做,未被销毁属正常,重启路由器即可释放

  341.         ## b.中国电信
  342.         ipset -F -q chinatelecom
  343.         ipset -X -q chinatelecom

  344.         ## c.中国联通/网通
  345.         ipset -F -q unicom_cnc
  346.         ipset -X -q unicom_cnc

  347.         ## d.中国移动
  348.         ipset -F -q cmcc
  349.         ipset -X -q cmcc

  350.         ## e.中国铁通
  351.         ipset -F -q crtc
  352.         ipset -X -q crtc

  353.         ## f.中国教育网
  354.         ipset -F -q cernet
  355.         ipset -X -q cernet

  356.         ## g.长城宽带/鹏博士
  357.         ipset -F -q gwbn
  358.         ipset -X -q gwbn

  359.         ## h.中国其他ISP
  360.         ipset -F -q othernet_1
  361.         ipset -X -q othernet_1
  362.         ipset -F -q othernet_2
  363.         ipset -X -q othernet_2
  364.         ipset -F -q othernet_3
  365.         ipset -X -q othernet_3

  366.         ## i.用户自定义网址网段-1
  367.         ipset -F -q custom_data_1
  368.         ipset -X -q custom_data_1

  369.         ## j.用户自定义网址网段-2
  370.         ipset -F -q custom_data_2
  371.         ipset -X -q custom_data_2
  372. }

  373. ## 建立目标网段数据集并设置防火墙标记访问报文数据包过滤规则函数
  374. ## 输入项:$1--网段数据分流出口标号,0、1、大于1的无符号整数,参见自定义区注释说明
  375. ##         $2--是否屏蔽使用系统负载均衡策略中的分流功能。0:不屏蔽,使用系统负载均衡;1:屏蔽,不使用系统负载均衡
  376. ##         $3--全路径网段数据文件名
  377. ##         $4--网段数据集
  378. ##         $5--反向设置标志。0:正常设置;1:给该网段之外的访问报文数据包加标记
  379. ## 返回值:无
  380. function lz_setup_iptables_fwmark() {

  381.         ## 读取目标访问服务器IP网段数据文件并建立数据集
  382.         ## 在路由器通过WAN口转发和响应回复外网目标访问服务器的数据包上设置标记的防火墙过滤规则
  383.         ## 第一WAN口在屏蔽系统负载均衡策略中的分流功能情况下不做标记,且不加载对应的网段数据文件,以提高系统工作效率
  384.         ## FWMARK0--去往第一WAN口的自定义数据包标记;FWMARK1--去往第二WAN口的自定义的数据包标记
  385.         local wan_fwmark=0
  386.         if [ $1 = 1 ] || [ $1 = 0 -a $2 = 0 ]; then
  387.                 ipset -N -q $4 nethash --hashsize 65535
  388.                 sed -e "s/^/-A $4 &/g" $3 | awk '{print $0} END{print "COMMIT"}' | ipset -R
  389.                 [ $1 = 0 ] && wan_fwmark=$FWMARK0 && fwmark_0_used=1
  390.                 [ $1 = 1 ] && wan_fwmark=$FWMARK1 && fwmark_1_used=1
  391.                 [ "$4" = "custom_data_1" ] && wan_fwmark=$CUSTOM_FWMARK_0 && custom_fwmark_0_used=1
  392.                 [ "$4" = "custom_data_2" ] && wan_fwmark=$CUSTOM_FWMARK_1 && custom_fwmark_1_used=1
  393.                 if [ $5 = 0 ]; then
  394.                         iptables -t mangle -A PREROUTING -m set $MATCH_SET $4 dst -j MARK --set-mark $wan_fwmark
  395.                         iptables -t mangle -A OUTPUT -m set $MATCH_SET $4 dst -j MARK --set-mark $wan_fwmark
  396.                 elif [ $5 = 1 ]; then
  397.                         iptables -t mangle -A PREROUTING -m set ! $MATCH_SET $4 dst -j MARK --set-mark $wan_fwmark
  398.                         iptables -t mangle -A OUTPUT -m set ! $MATCH_SET $4 dst -j MARK --set-mark $wan_fwmark
  399.                 fi
  400.         fi
  401.         ## 此处sed和ipset命令的使用,网上很多代码有误,会导致未重启路由器时的运行重置,如操作防火墙、重新拨号后无法正常
  402.         ## 读入或恢复数据,尤其是在线更新新的网段数据文件时,实际并没有被读入,数据集中还是老数据。某我膜拜的大神2.0代码
  403.         ## 中用“ipset -N”重复创建数据集,按道理第二次创建会失败,没搞懂用意,水平有限怕露怯,也不好意思问,只好自己摸索。
  404.         ## 多有得罪,请多多海涵,其实很多代码都是从你那里直接拷贝粘贴过来的,连变量名和格式都没改,就是证明这里充满了剽窃。
  405.         ## 正因为如此,所以要将代码公布出来让跟多的人来剽窃,从而在未来出现更多、更伟大的成果,这也就是代码开源的崇高意义。
  406. }

  407. ## 初始化各目标网址网段数据访问路由策略函数
  408. ## 输入项:无
  409. ## 返回值:无
  410. function lz_initialize_ip_data_policy() {

  411.         ## a.中国之外所有IP地址
  412.         lz_setup_iptables_fwmark $all_foreign_wan_no $sys_load_balance_idle "/jffs/scripts/lz/all_cn_cidr.txt" all_cn 1

  413.         ## b.中国电信
  414.         lz_setup_iptables_fwmark $chinatelecom_wan_no $sys_load_balance_idle "/jffs/scripts/lz/chinatelecom_cidr.txt" chinatelecom 0

  415.         ## c.中国联通/网通
  416.         lz_setup_iptables_fwmark $unicom_cnc_wan_no $sys_load_balance_idle "/jffs/scripts/lz/unicom_cnc_cidr.txt" unicom_cnc 0

  417.         ## d.中国移动
  418.         lz_setup_iptables_fwmark $cmcc_wan_no $sys_load_balance_idle "/jffs/scripts/lz/cmcc_cidr.txt" cmcc 0

  419.         ## e.中国铁通
  420.         lz_setup_iptables_fwmark $crtc_wan_no $sys_load_balance_idle "/jffs/scripts/lz/crtc_cidr.txt" crtc 0

  421.         ## f.中国教育网
  422.         lz_setup_iptables_fwmark $cernet_wan_no $sys_load_balance_idle "/jffs/scripts/lz/cernet_cidr.txt" cernet 0

  423.         ## g.长城宽带/鹏博士
  424.         lz_setup_iptables_fwmark $gwbn_wan_no $sys_load_balance_idle "/jffs/scripts/lz/gwbn_cidr.txt" gwbn 0

  425.         ## h.中国其他ISP
  426.         lz_setup_iptables_fwmark $othernet_wan_no_1 $sys_load_balance_idle "/jffs/scripts/lz/othernet_cidr.txt" othernet_1 0
  427.         lz_setup_iptables_fwmark $othernet_wan_no_2 $sys_load_balance_idle "/jffs/scripts/lz/othernet2_cidr.txt" othernet_2 0
  428.         lz_setup_iptables_fwmark $othernet_wan_no_3 $sys_load_balance_idle "/jffs/scripts/lz/othernet3_cidr.txt" othernet_3 0

  429.         ## i.用户自定义网址网段-1
  430.         lz_setup_iptables_fwmark $custom_data_wan_no_1 $sys_load_balance_idle "$custom_data_file_1" custom_data_1 0

  431.         ## j.用户自定义网址网段-2
  432.         lz_setup_iptables_fwmark $custom_data_wan_no_2 $sys_load_balance_idle "$custom_data_file_2" custom_data_2 0
  433. }

  434. ## 清除firewall-start中脚本引导项函数
  435. ## 输入项:无
  436. ## 返回值:无
  437. function lz_clear_firewall_start_command() {

  438.         if [ -d /jffs/scripts ] && [ ! -f /jffs/scripts/firewall-start ]; then
  439.                 sed -i '/lz_rule/d' /jffs/scripts/firewall-start > /dev/null 2>&1
  440.         fi
  441. }

  442. ## 删除SS服务启停触发脚本文件函数
  443. ## 输入项:无
  444. ## 返回值:无
  445. function lz_clear_ss_start_command() {

  446.         if [ -d /koolshare/ss/postscripts ] && [ -f /koolshare/ss/postscripts/P99_lz_rule.sh ]; then
  447.                 rm /koolshare/ss/postscripts/P99_lz_rule.sh > /dev/null 2>&1
  448.         fi
  449. }

  450. ## 创建firewall-start启动文件并添加脚本引导项函数
  451. ## 输入项:无
  452. ## 返回值:无
  453. function lz_create_firewall_start_command() {

  454.         if [ ! -d /jffs/scripts ]; then
  455.                 mkdir -p /jffs/scripts
  456.         fi

  457.         if [ ! -f /jffs/scripts/firewall-start ]; then
  458.                 cat > /jffs/scripts/firewall-start <<EOF
  459. #!/bin/sh
  460. EOF
  461.         fi

  462.         local write_scripts=$( cat /jffs/scripts/firewall-start | grep "lz_rule" )
  463.         if [ -z "$write_scripts" ]; then
  464.                 sed -i '1a /jffs/scripts/lz/lz_rule.sh' /jffs/scripts/firewall-start
  465.                 chmod +x /jffs/scripts/firewall-start
  466.         fi
  467. }

  468. ## 创建SS服务启停触发脚本文件函数
  469. ## 脚本命名格式:P+数字+名字.sh
  470. ## 输入项:无
  471. ## 返回值:无
  472. function lz_create_ss_start_command() {

  473.         if [ ! -d /koolshare/ss/postscripts ]; then
  474.                 mkdir -p /koolshare/ss/postscripts
  475.         fi

  476.         if [ ! -f /koolshare/ss/postscripts/P99_lz_rule.sh ]; then
  477.                 cat > /koolshare/ss/postscripts/P99_lz_rule.sh <<EOF
  478. #!/bin/sh

  479. # sh@ado@wso@cks script for AM380 merlin firmware
  480. # by sadog (sadoneli@gmail.com) from koolshare.cn

  481. # 此脚本是一个示例,实际写法按照自己的方法来做
  482. # 更改此脚本的名字,保证此脚本的名字格式是: P+数字+名字.sh
  483. # 例如在/koolshare/ss/postscripts下放入两个脚本:P01V2ray.sh, P99Brook.sh
  484. # SS插件运行后货自动按照数字从小到大顺序运行 P01V2ray.sh start, P99Brook.sh start
  485. # SS插件关闭前会自动按照数字从大到小顺序运行 P99Brook.sh stop, P01V2ray.sh stop
  486. #------------------------------------------
  487. source /koolshare/scripts/base.sh
  488. # 读取SS配置
  489. eval \`dbus export ss\`
  490. # 保持打印日志时间格式和ss插件一致
  491. alias echo_date='echo 【\$(TZ=UTC-8 date -R +%Y年%m月%d日\ %X)】:'
  492. #------------------------------------------
  493. start_lz_rule() {
  494.         echo_date "Start lz_rule"
  495.         # do something here
  496.         if [ -d /jffs/scripts/lz ] && [ -f /jffs/scripts/lz/lz_rule.sh ] && \
  497.                 [ -r /jffs/scripts/lz/lz_rule.sh ] && [ -x /jffs/scripts/lz/lz_rule.sh ]; then
  498.                 echo \$(date): -------- LZ rules catching ss! --------- >> /tmp/syslog.log
  499.                 /jffs/scripts/lz/lz_rule.sh
  500.                 echo \$(date): -------- LZ rules locked ss! ----------- >> /tmp/syslog.log
  501.         fi
  502. }

  503. stop_lz_rule() {
  504.         echo_date "Stop lz_rule"
  505.         # do something here
  506.         if [ -d /jffs/scripts/lz ] && [ -f /jffs/scripts/lz/lz_rule.sh ] && \
  507.                 [ -r /jffs/scripts/lz/lz_rule.sh ] && [ -x /jffs/scripts/lz/lz_rule.sh ]; then
  508.                 echo \$(date): -------- LZ rules unlocking ss! -------- >> /tmp/syslog.log
  509.                 /jffs/scripts/lz/lz_rule.sh
  510.                 echo \$(date): -------- LZ rules released ss! --------- >> /tmp/syslog.log
  511.         fi
  512. }
  513. #------------------------------------------
  514. case \$1 in
  515.         start)
  516.                 start_lz_rule
  517.         ;;
  518.         stop)
  519.                 stop_lz_rule
  520.         ;;
  521. esac

  522. EOF
  523.                 chmod +x /koolshare/ss/postscripts/P99_lz_rule.sh
  524.         fi
  525. }

  526. ## SS服务支持(线路分流)函数
  527. ## 科学@上网@插件v4.0.9
  528. ## 输入项:无
  529. ## 返回值:无
  530. function lz_ss_support() {
  531.         
  532.         if [ $ss_wan_no = 0 ] || [ $ss_wan_no = 1 ]; then

  533.                 ## AM380 merlin firmware
  534.                 ## 适用于koolshare merlin armv7l固件平台,不支持X7.2以下的固件版本
  535.                 if [ "$route_os_name" = "Merlin-Koolshare" ] && [ "$route_hardware_type" = "armv7l" ]; then

  536.                         local firmware_version=$( nvram get extendno | cut -d "X" -f2 | cut -d "-" -f1 | cut -d "_" -f1 )
  537.                         local firmware_comp=$( versioncmp $firmware_version 7.2 )
  538.                         if [ "$firmware_comp" != "1" ]; then

  539.                                 ## 在dbus数据库加载环境数据
  540.                                 eval `dbus export ss`

  541.                                 ## 获取SS服务运行参数
  542.                                 local ss_enable=$( dbus get ss_basic_enable )
  543.                                 local ss_mode=$( dbus get ss_acl_default_mode )
  544.                                 local ss_server=$( dbus get ss_basic_server_ip )
  545.                                 [ "$ss_enable" == "0" ] && ss_mode=0

  546.                                 ## 创建SS服务启停触发脚本文件:P99_lz_rule.sh
  547.                                 lz_create_ss_start_command
  548.                                 
  549.                                 if [ ! -z "$ss_server" ] && [ $ss_mode != 0 ]; then
  550.                                         local nodes=$( dbus list ssconf_basic_server_ | cut -d "=" -f1 | cut -d "_" -f4 | sort -n )
  551.                                         for node in $nodes
  552.                                         do
  553.                                                 ss_server_ip=$( dbus get ssconf_basic_server_$node )
  554.                                                 if [ ! -z "$ss_server_ip" ]; then
  555.                                                         ip rule add from $ss_server_ip table $SS_WAN_ID prio $SS_RULE_FROM_PRIO
  556.                                                         ip rule add to $ss_server_ip table $SS_WAN_ID prio $SS_RULE_TO_PRIO
  557.                                                 fi
  558.                                         done
  559.                                 fi
  560.                         fi
  561.                 fi
  562.         fi
  563. }

  564. ## 输出当前分流规则每个优先级的条目数至系统记录函数
  565. ## 输入项:$1--当前分流规则条目优先级上限数值(例如:IP_RULE_PRIO - 6 = 24994)
  566. ##         $2--当前分流规则条目优先级下限数值(例如:IP_RULE_PRIO = 25000)
  567. ## 返回值:无
  568. function lz_ip_rule_output_syslog() {

  569.         ## 读取所有符合本方案所用优先级数值的规则条目数并输出至系统记录
  570.         local ip_rule_exist=0;
  571.         local ip_rule_prio_no=$1
  572.         until [ $ip_rule_prio_no -gt $2 ]
  573.         do
  574.                 ip_rule_exist=$( ip rule show | grep -c "$ip_rule_prio_no:" )
  575.                 echo $(date): LZ ip_rule_prio_$ip_rule_prio_no = $ip_rule_exist >> /tmp/syslog.log
  576.                 ip_rule_prio_no=$(( $ip_rule_prio_no + 1 ))
  577.         done
  578. }


  579. ## ---------------------主执行脚本---------------------

  580. echo $(date): -------- LZ rules come here! ----------- >> /tmp/syslog.log

  581. ## 启动延时10秒
  582. sleep 10s

  583. ## 获取路由器基本信息并输出至系统记录函数
  584. route_local_ip=$( lz_get_route_info )

  585. if [ $( ip rule show | grep -c "from 168.168.168.168 to 169.169.169.169" ) = 0 ]; then
  586.         ## 临时规则,用于进程间同步,防止启动时系统同时调用和执行两个以上的本脚本
  587.         ## 如与系统中现有规则冲突,可酌情修改;高手们会用更好的方法,请教教我,谢啦!
  588.         ip rule add from 168.168.168.168 to 169.169.169.169 table $WAN0

  589.         echo $(date): -------- LZ rules initializing! -------- >> /tmp/syslog.log

  590.         ## 处理系统负载均衡分流策略
  591.         lz_sys_load_balance_control

  592.         ## 加载ipset组件:S大的GT-AC5300_384_21140官改固件提供了自己的支持,不需要加载。
  593.         ## 初始处于注释状态,如有老版本出现兼容性问题,需要加载,可去掉注释符使用
  594.         lz_load_ipset_module

  595.         ## 删除旧规则和使用过的数据集,防止重置后再次添加
  596.         ## 删除旧分流规则并输出旧分流规则每个优先级的条目数至系统记录
  597.         ## 删除优先级 IP_RULE_PRIO - 5 ~ IP_RULE_PRIO 的旧规则
  598.         ## 严重注意:同时会删除该范围内系统中非本脚本建立的规则,如有冲突,请修改代码中所使用的优先级范围
  599.         ip_rule_exist=$( lz_delete_ip_rule_output_syslog $(( $IP_RULE_PRIO - 6 )) $IP_RULE_PRIO )

  600.         ## 清理之前设置的标记数据包的防火墙过滤规则
  601.         lz_clear_iptables_fwmark

  602.         ## 清理目标访问服务器IP网段数据集
  603.         lz_destroy_ipset

  604.         ## 删除SS服务启停触发脚本文件
  605. #        lz_clear_ss_start_command

  606.         ## 清除firewall-start中脚本引导项
  607. #        lz_clear_firewall_start_command

  608.         echo $(date): -------- LZ rules initialized! --------- >> /tmp/syslog.log

  609.         ## 接到停止运行命令
  610.         ## SSH中执行”/jffs/scripts/lz_rule.sh stop“或”/jffs/scripts/lz_rule.sh STOP“,都会立刻停止本脚本配置的
  611.         ## 策略路由服务,若”/jffs/firewall-start“中的”/jffs/scripts/lz_rule.sh“引导启动命令未清除,路由器重启、
  612.         ## 线路接入或断开、防火墙开关等事件都会导致自启动运行本脚本
  613.         if [ $1 = "stop" > /dev/null 2>&1 ] || [ $1 = "STOP" > /dev/null 2>&1 ]; then

  614.                 ## 输出当前分流规则每个优先级的条目数至系统记录,调试用,无需要可删除
  615.                 lz_ip_rule_output_syslog $(( $IP_RULE_PRIO - 6 )) $IP_RULE_PRIO

  616.                 ## 删除SS服务启停触发脚本文件
  617.                 lz_clear_ss_start_command

  618.                 echo $(date): -------- LZ rules stoped! -------------- >> /tmp/syslog.log

  619.                 ## 删除进程间同步用临时规则,要与脚本开始时的添加命令一致
  620.                 if [ $( ip rule show | grep -c "from 168.168.168.168 to 169.169.169.169" ) != 0 ]; then
  621.                         ip rule del from 168.168.168.168 to 169.169.169.169 table $WAN0
  622.                 fi

  623.                 ## 刷新系统cache,使上述命令立即生效
  624.                 ip route flush cache

  625.                 ## 停止并退出本脚本配置的策略路由服务
  626.                 echo $(date): The script commands executed!

  627.                 exit 0
  628.         fi

  629.         ## 创建firewall-start启动文件并添加脚本引导项
  630.         lz_create_firewall_start_command

  631.         ## 分流策略部署
  632.         ## 脚本中先add的rule优先级低
  633.         ## 脚本使用 IP_RULE_PRIO + 1 ~ IP_RULE_PRIO - 6 八个优先级,数值越小,优先级越高,网络访问数据包优先匹配高优先级规则
  634.         ## 部署条件:双线接入成功,系统内成功自建wan0、wan1路由表,案中规则尚未部署
  635.         ## 重要说明:WAN0口指路由器接入宽带的第一WAN口,路由表为wan0;WAN1口指第二WAN口,路由表为wan1
  636.         ## 案例背景:第一WAN口接联通宽带,100M,响应快,稳定,上行带宽小
  637.         ##           第二WAN口接移动宽带,200M,有些low,承诺话费送的
  638.         ##           尽可能选品质好的宽带接第一WAN口
  639.         ##           若与本案例应用背景不同,可至本代码开始处的“用户运行策略自定义区”修改路由器数据分流出口

  640.         if [ $( ip route show table $WAN0 | grep -c "dev" ) -gt 0 -a \
  641.                 $( ip route show table $WAN1 | grep -c "dev" ) -gt 0 -a \
  642.                 $ip_rule_exist = 0 ]; then

  643.                 ## 初始化各目标网址网段数据访问路由策略
  644.                 lz_initialize_ip_data_policy

  645.                 if [ $sys_load_balance_idle != 0 ]; then
  646.                         ## 所有不匹配规则或存在未被网段数据涵盖的外网目标IP地址访问时,客户端流量走WAN0口
  647.                         ## 屏蔽系统负载均衡策略中的分流功能,阻止路由器对客户端网络访问流量的负载均衡分流控制
  648.                         ## 也可根据需要将wan0改为wan1走WAN1口
  649.                         ip rule add to 0.0.0.0/0 table $WAN0 prio $IP_RULE_PRIO
  650.                 fi

  651.                 ## 添加访问各IP网段目标服务器的路由器出口规则,进行数据分流配置
  652.                 ## wan0--WAN0--第一WAN口;wan1--WAN1--第二WAN口
  653.                 ## 案例结合本地网络状况和本机系统调优情况,除对部分客户端指定网络访问出口外,移动、铁通、教育网、
  654.                 ## 长城宽带/鹏博士的网络访问走WAN1口,去往联通、电信、国外ISP的网络访问走WAN0口,去往国内其他ISP
  655.                 ## 以及未被规则和网段数据覆盖的网络访问由系统负载均衡自动分配出口

  656.                 ## 部署分流规则

  657.                 ## WAN1--200--第二WAN口:根据数据包标记,按目标网段分流,优先级:IP_RULE_PRIO - 1
  658.                 if [ $fwmark_1_used = 1 ]; then
  659.                         ip rule add fwmark $FWMARK1 table $WAN1 prio $(( $IP_RULE_PRIO - 1 ))
  660.                 fi

  661.                 ## WAN0--100--第一WAN口:根据数据包标记,按目标网段分流,优先级:IP_RULE_PRIO - 1
  662.                 if [ $fwmark_0_used = 1 ]; then
  663.                         ip rule add fwmark $FWMARK0 table $WAN0 prio $(( $IP_RULE_PRIO - 1 ))
  664.                 fi

  665.                 ## 用户自定义网址网段-1
  666.                 if [ $custom_fwmark_0_used = 1 ]; then
  667.                         if [ $custom_data_wan_no_1 = 1 ]; then
  668.                                 ip rule add fwmark $CUSTOM_FWMARK_0 table $WAN1 prio $(( $IP_RULE_PRIO - 2 ))
  669.                         elif [ $custom_data_wan_no_1 = 0 ]; then
  670.                                 ip rule add fwmark $CUSTOM_FWMARK_0 table $WAN0 prio $(( $IP_RULE_PRIO - 2 ))
  671.                         fi
  672.                 fi

  673.                 ## 用户自定义网址网段-2
  674.                 if [ $custom_fwmark_1_used = 1 ]; then
  675.                         if [ $custom_data_wan_no_2 = 1 ]; then
  676.                                 ip rule add fwmark $CUSTOM_FWMARK_1 table $WAN1 prio $(( $IP_RULE_PRIO - 2 ))
  677.                         elif [ $custom_data_wan_no_2 = 0 ]; then
  678.                                 ip rule add fwmark $CUSTOM_FWMARK_1 table $WAN0 prio $(( $IP_RULE_PRIO - 2 ))
  679.                         fi
  680.                 fi

  681.                 ## 自定义客户端使用指定路由器出口访问外网
  682.                 lz_ip_rule_from_localip_to_wan_outlet

  683.                 ## SS服务支持(线路分流)
  684.                 lz_ss_support

  685.                 if [ -z "$route_local_ip" ] || [ "$route_local_ip" = "Unknown" ]; then
  686.                         route_local_ip=192.168.50.1
  687.                 fi

  688.                 ## 互联网访问路由器管理页面及华硕路由器APP终端支持,优先级:IP_RULE_PRIO - 6
  689.                 ## 华硕DDNS:www.asuscomm.com [103.10.4.108] 各地实测值可能不同,存在变化的可能
  690.                 ## 应用中若连不上DDNS,可 ping www.asuscomm.com 取实测值修改此处
  691.                 ## 若该DDNS地址值总不能固定,无法稳定使用,请至代码开始处将国外IP网址访问改走WAN0口,即:all_foreign_wan_no=0
  692.                 ## 开启路由器DDNS客户端时,注意要用WAN0的外网动态/静态IP地址做外网访问路由器的指向
  693. #                ip rule add to 103.10.4.108 table $WAN0 prio $(( $IP_RULE_PRIO - 6 ))
  694.                 ip rule add from $route_local_ip table $WAN0 prio $(( $IP_RULE_PRIO - 6 ))

  695.                 ## 输出当前分流规则每个优先级的条目数至系统记录
  696.                 lz_ip_rule_output_syslog $(( $IP_RULE_PRIO - 6 )) $IP_RULE_PRIO

  697.                 echo $(date): -------- LZ rules run ok! -------------- >> /tmp/syslog.log

  698.         else

  699.                 ## 输出当前分流规则每个优先级的条目数至系统记录
  700.                 lz_ip_rule_output_syslog $(( $IP_RULE_PRIO - 6 )) $IP_RULE_PRIO

  701.                 echo $(date): -------- No LZ rules run! -------------- >> /tmp/syslog.log        
  702.         fi

  703.         ## 删除进程间同步用临时规则,要与脚本开始时的添加命令一致
  704.         if [ $( ip rule show | grep -c "from 168.168.168.168 to 169.169.169.169" ) != 0 ]; then
  705.                 ip rule del from 168.168.168.168 to 169.169.169.169 table $WAN0
  706.         fi

  707.         ## 刷新系统cache,使上述命令立即生效
  708.         ip route flush cache

  709. else

  710.         echo $(date): -------- LZ rules is runing! ------------ >> /tmp/syslog.log        
  711. fi

  712. echo $(date): The script commands executed!

  713. exit 0

  714. #END
复制代码



6

主题

53

帖子

558

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
531
魔法值
0
注册时间
2015-5-11
发表于 2018-8-20 14:40:01 | 显示全部楼层
顶~~~学习~~~~

13

主题

587

帖子

1030

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
805
魔法值
0
注册时间
2015-5-17
发表于 2018-8-20 19:06:04 | 显示全部楼层
如果是电信单线双拨有办法解决这些问题又能叠加网速么

13

主题

2239

帖子

899

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
505
魔法值
0
注册时间
2018-7-15
 楼主| 发表于 2018-8-20 19:25:06 | 显示全部楼层
heeroyuyj 发表于 2018-8-20 19:06
如果是电信单线双拨有办法解决这些问题又能叠加网速么

取决于你的电信ISP是否真的支持,是否会限速等,如果都可以,理论上开启负载均衡即可

6

主题

185

帖子

438

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
389
魔法值
0
注册时间
2014-8-22
发表于 2018-8-21 12:40:34 | 显示全部楼层
感谢大神倾情奉献。现在的带宽基本上200M起步,双线接入的场景不多,除非商用。
反而是IPTV和外网这类场景相对的多了起来。大神可否编辑一个类似的规则,同样双线接入,WAN1外网,WAN2走IPTV,路由做组拨转发,翻WALL,看上去原理和你这个双线一致,可能具体IP需要调整,本人实属小白,没这个能力。

13

主题

2239

帖子

899

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
505
魔法值
0
注册时间
2018-7-15
 楼主| 发表于 2018-8-21 12:56:44 | 显示全部楼层
antren 发表于 2018-8-21 12:40
感谢大神倾情奉献。现在的带宽基本上200M起步,双线接入的场景不多,除非商用。
反而是IPTV和外网这类场景 ...

学习和研究之中,正逐步进化,谢谢支持!

838

主题

3470

帖子

1万

积分

大魔导师

Rank: 9Rank: 9Rank: 9

精华
0
门户文章
0
魔力币
14753
魔法值
0
注册时间
2017-5-9

R7000

发表于 2018-8-21 12:56:46 | 显示全部楼层
感谢楼主分享

9

主题

239

帖子

526

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
453
魔法值
0
注册时间
2016-5-18
发表于 2018-8-22 13:13:55 | 显示全部楼层
大侠辛苦了,有个基本的问题,您这最后联通,移动双叠加,到底什么效果。
suzuki

13

主题

2239

帖子

899

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
505
魔法值
0
注册时间
2018-7-15
 楼主| 发表于 2018-8-22 16:47:37 | 显示全部楼层
codej 发表于 2018-8-22 13:13
大侠辛苦了,有个基本的问题,您这最后联通,移动双叠加,到底什么效果。 ...

只是双拨分流,运行稳定流畅。
不考虑叠加,帖里已说的很明白。
这种路由器,固件里的负载均衡算法比较low,联通、移动宽带品质差异较大,负载均衡无法自动调整。感觉不同运营商之间做叠加效果都不太好,不能持久稳定。

8

主题

110

帖子

155

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
129
魔法值
0
注册时间
2017-8-14
发表于 2018-8-22 19:21:21 | 显示全部楼层
妙妙呜 发表于 2018-8-19 04:26
华硕及梅林固件改版路由器双拨不同ISP之策略分流方案V1.0进阶版文件名:firewall-start,无后缀,该文件名 ...

请教下,怎么上传文件到路由器中呀

13

主题

2239

帖子

899

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
505
魔法值
0
注册时间
2018-7-15
 楼主| 发表于 2018-8-22 20:28:01 | 显示全部楼层
allen840330 发表于 2018-8-22 19:21
请教下,怎么上传文件到路由器中呀

可以用WinSCP,网上有下

0

主题

15

帖子

136

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
134
魔法值
0
注册时间
2018-6-18
发表于 2018-8-22 21:12:10 | 显示全部楼层
gt5300官改能用不?

13

主题

2239

帖子

899

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
505
魔法值
0
注册时间
2018-7-15
 楼主| 发表于 2018-8-22 21:40:59 | 显示全部楼层
本帖最后由 妙妙呜 于 2018-8-22 21:51 编辑
six5206 发表于 2018-8-22 21:12
gt5300官改能用不?

华硕官方、梅林官方及改版原则上都可以,GT还未曾拥有,但你可以试试,不好就删掉,不会损坏机器。
刚获得来自APNIC的最新、最全、最准确,今晨零时的全国ISP服务器网段数据,分流将更加精准,正在做适配测试,很快就会有小版本升级,非常值得期待。

6

主题

85

帖子

171

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
152
魔法值
0
注册时间
2018-8-21
发表于 2018-8-23 07:39:25 | 显示全部楼层
非常有用的帖子,对小白帮助很大。

0

主题

15

帖子

136

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
134
魔法值
0
注册时间
2018-6-18
发表于 2018-8-23 09:41:17 | 显示全部楼层
妙妙呜 发表于 2018-8-22 21:40
华硕官方、梅林官方及改版原则上都可以,GT还未曾拥有,但你可以试试,不好就删掉,不会损坏机器。
刚获得 ...

关键我是小白,怎么装?

13

主题

2239

帖子

899

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
505
魔法值
0
注册时间
2018-7-15
 楼主| 发表于 2018-8-23 14:37:57 | 显示全部楼层
本帖最后由 妙妙呜 于 2018-8-23 18:08 编辑
six5206 发表于 2018-8-23 09:41
关键我是小白,怎么装?

主贴内已说明步骤,先用PC到网上百度下载安装最新中文版WinSCP,用无线或有线连上路由器,用WinSCP登录,然后如同用Windows的资源管理器,在图形界面中创建目录、粘贴、修改文件夹及文件属性。。。就可以了

8

主题

110

帖子

155

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
129
魔法值
0
注册时间
2017-8-14
发表于 2018-8-23 18:45:47 | 显示全部楼层
妙妙呜 发表于 2018-8-22 20:28
可以用WinSCP,网上有下


好的
我试试看
谢谢

8

主题

110

帖子

155

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
129
魔法值
0
注册时间
2017-8-14
发表于 2018-8-23 19:21:18 | 显示全部楼层
能用在电信加移动上吗?
我的路由器地址是192.168.50.1,需要在代码里修改吗?

联系我们|手机版|KoolShare ( 沪ICP备13045430号

GMT+8, 2019-3-19 02:06 , Processed in 0.107841 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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