KoolShare

 找回密码
 立即注册
搜索
查看: 182909|回复: 4633

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

  [复制链接]

15

主题

3654

帖子

1839

积分

大魔法师

Rank: 5Rank: 5

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

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

“网速取决于用户的网络设备软硬件、运营商网络和互联网基础设施,以及目标站点服务器的吞吐能力。

方案中提供的脚本不是实现网络访问加速、带宽扩展/聚合的应用工具,也不能消除一些设备本身或第三方软件引起的通讯故障。

方案主要作用是帮助用户在实现路由器双线路接入后,通过在路由器中执行方案所供脚本代码,对系统运行参数进行优化配置,使用户能够正常、流畅和稳定的使用路由器,从而可以精确地访问、操控和利用内外部网络资源,消除和避免因受到路由器系统内部负载均衡算法机制的制约,无法保证用户访问外部的数据链路,每次都能够经由合理的设备网络出口,导致出现打不开网页,无法持续正常的进行网络认证、登录、会话、交易,以及出现卡慢、断流等诸多种不确定的异常状况。

方案脚本采用无人值守方式运行,由设备事件触发驱动,可动态、实时和自动地匹配路由器网络接入的各种工作状态;具有让用户根据网络访问过程中的源、目标地址(IPv4网段/网址),自主规划、控制和调配路由器外网进出口网络流量的经由路径(策略分流)等更多功能,且支持在现有方案基础上挂载自有代码和进行二次开发。

若在实际应用中无任何效果改善或作用,或是用户完全没有解决上述问题的意愿或需求,则超不建议继续采纳本方案。”

“通过多拨实现带宽叠加不如花钱直接对单条线路的带宽升级,才是真正意义上的增加带宽。个人用户拉两条宽带,第二条很多都是承诺移动手机话费后免费送的。之所以用双线路双拨,只是不想浪费那条网络,不想增加设备投资或搞出一堆无线WiFi信号,不用白不用。

当然,一开始是很多人都想当然地认为可以将两条宽带用某种方法接入一台路由器,合在一起就能增加实际使用带宽,提高网速。用过后则很失望,根本不像想象中自己希望的那个样子。该死的带速叠加只有可能在有限条件下的P2P下载过程中出现,而且日常上网时卡慢、断流、不稳定等异常现象反而令人更糟心。

要说痛苦的领悟,就是为实现这个分流方案,让路由器双线路双拨用起来更爽,日积月累和执著地写出庞大数量的脚本代码和那么大篇幅的帖子了。总之,辛苦后的结果很好,达到了最初折腾这玩意儿的初衷,实际体验也超出使用预期。”
游客,如果您要查看本帖隐藏内容请回复

重大升级
v3.2.8通用版  发布日期:2019/10/11
  • 对RT-AC86U等机型的udpxy指令进行兼容性适配。

v3.2.7通用版  发布日期:2019/9/30
  • 修复IPTV模式配置命令执行过程中,脚本配置参数初始化时一处命令字符缺失的BUG。
  • 优化IPTV功能代码。
  • 某些机型,如RT-AC86U,固件内缺少显性的IGMP组播数据代理转发功能(内部独有一种bcmmcastctl命令),无法简单支持IPTV机顶盒通过路由器直接接入运营商IPTV网络,但可支持UDPXY代理转发,由此在脚本启动过程中出现IGMP组播路由启动失败属正常现象。若不希望看到此故障信息,可在脚本配置文件的参数设置中关闭IGMP组播数据代理转发功能。

v3.2.6通用版  发布日期:2019/9/11
  • 2019/9/9的v3.2.6及之前版本中,OpenVP-N Server仅支持第三层网络的TUN接口类型,在此基础上新增第二层网络的TAP接口类型支持。

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

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

v3.2.8通用版zip完整包  发布日期:2019/10/11
下载地址链接:
游客,如果您要查看本帖隐藏内容请回复

下载后请去掉文件名中的“.pdf”后缀,然后解压。包内所有ISP网络运营商CIDR网段数据源自苍神(clang,Koolshare开发组)的APNIC官方每日更新(2019/10/11零点)

如无下载权限或不能成功下载,请回帖留邮件地址索取。

为便于使用最新网段数据,脚本中已内置定时自动更新ISP网络运营商CIDR网段数据文件功能,缺省禁用,在/jffs/scripts/lz/configs/lz_rule_config.sh脚本配置文件中设置启用,也可自行前往网站 https://ispip.clang.cn/ 获取最新ISP网络运营商CIDR网段数据,下载后直接粘贴覆盖/jffs/scripts/lz/data/目录内同名数据文件,重启脚本即刻生效。

为避免帖子下沉,方便大家及时发现软件更新和找到下载出处,出于对无底线、无止境、无收益的三无公益事业支持,下载软件后请帮忙顶一下本帖,谢谢哈!

历史版本完整包
下载地址链接:
游客,如果您要查看本帖隐藏内容请回复


LZ路由器双线路双拨策略分流脚本小白安装教程
https://koolshare.cn/thread-148853-1-1.html
(出处: KoolShare)

部署
  • 下载后请去掉文件名中的“.pdf”后缀,解压后将包内所有文件和文件夹,建议使用WinSCP类工具软件,一并上传至路由器的/jffs/scripts/目录内,将其中/jffs/scripts/firewall-start/jffs/scripts/lz/lz_rule.sh两个文件的权限设置为0755,同时可使用WinSCP中的内嵌编辑器设定和修改脚本配置文件中的运行参数。
  • 文件上传路由器,建议使用图形化界面的WinSCP(有中文版)。之前请在路由器的系统设置里开启Telnet和SSH,端口22(缺省)。WinSCP可通过WIFI或网线使用SCP协议连接路由器,用路由器Asuswrt管理界面的用户名、密码登录,简单方便,便于调试。
  • 梅林系列固件上安装和运行脚本前请在路由器的“系统管理-系统设置”界面里开启“Enable JFFS custom scripts and configs”选项,否则可能无法运行。
  • v2.6.8之前版本升级安装或删除本脚本前请先执行终止运行命令:/jffs/scripts/lz/lz_rule.sh STOP,其中“STOP”为大写,以彻底停止服务运行和清除程序动态创建的多个旧接口文件,需手工输入启动命令方可重新运行。使用小写参数“stop”的为暂停命令,路由器事件会触发脚本启动再次运行。
  • 从v2.6.8版起,版本升级安装已不需要停止脚本运行和清空旧版本文件,只要将新版本的所有文件和文件夹直接粘贴覆盖旧版本,再以手工命令方式重启一次脚本(/jffs/scripts/lz/lz_rule.sh),原有的脚本配置可自动恢复到新版本中。不必每次更新都要重新配置一遍脚本。如果想使用版本的新增功能或调整配置,请在配置恢复之后再去设置。
  • 由于文件结构发生变化,由v2.5.2之前版本升级时请清除旧脚本代码文件后再行安装。
  • 华硕官方原厂固件过于封闭,系统缺少ipset模块和所需事件引导接口,nvram命令方式开启jffs2分区及scripts定制脚本运行权限后也不具备lz脚本运行条件,目前仅支持官改、梅林及其改版固件。原厂固件建议采用该方案:华硕及梅林改版路由器双线路双拨不同ISP的简单方法https://koolshare.cn/thread-144463-1-1.html

配置
  • 为方便自定义应用策略,网段数据分流自定义设置在/jffs/scripts/lz/configs/目录下的lz_rule_config.sh脚本配置文件中;使用自定义客户端路由器网络出口和特定网址访问的设置请参看本帖下面访问外网外网访问两个标题部分的内容。
  • 所供网段数据文件均在/jffs/scripts/lz/data/目录中,涵盖中国大陆全部互联网络运营商的网段数据,应根据当地网络状况和使用经验设定并随时调整各运营商网络地址段数据访问的路由器出口,以取得最佳应用体验。
  • 为保证获得最佳性能,请首先在配置文件中找到所接入的宽带ISP(运营商)网段,将出口设定为路由器对应接入的宽带网络端口,其他网段出口可根据使用体验设定。运营商之间跨网段访问会有时延差异或性能瓶颈,各地情况不同,使用中应根据实际效果调整和优化网段出口设定参数。
  • /jffs/scripts/lz/func/目录中是主脚本运行中必备的功能性子脚本,不要独立运行。
  • 若下载的文件结构与上面描述不同,请重新下载
  • 若本脚本在Koolshare固件机型上启用过SS服务支持,脚本升级或删除本脚本前请执行停止命令:/jffs/scripts/lz/lz_rule.sh STOP,以清除程序动态自动创建的旧接口文件,亦可手工至路由器/koolshare/ss/postscripts/目录清除P99_lz_rule.sh文件。
  • 配置案例:https://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=145491&pid=1765652

运行模式
模式1:
  • 适用于第一WAN口接入带宽<第二WAN口接入带宽,任一带宽≥200Mbps
  • 第一WAN口按目标网段匹配网络报文数据包输出流量
  • 第二WAN口通过系统负载均衡强制输出流经第一WAN口之外的其余流量
  • 可减少第二WAN口通道200Mbps以上带宽时CPU占用率过高和掉速现象
模式2:
  • 适用于第一WAN口接入带宽>第二WAN口接入带宽,任一带宽≥200Mbps
  • 第一WAN口通过系统负载均衡强制输出流经第二WAN口之外的其余流量
  • 第二WAN口按目标网段匹配网络报文数据包输出流量
  • 可减少第一WAN口通道200Mbps以上带宽时CPU占用率过高和掉速现象
模式3:
  • 第一WAN口、第二WAM口均按各自目标网段匹配网络报文数据包输出流量
  • 模式1、模式2中,待访问任一网段地址的数据流量由系统自动分配出口时,将自动切换至模式3运行
模式1、2为高流量性能模式,模式3为精准分流模式,运行模式参数在/jffs/scripts/lz/configs/lz_rule_config.sh脚本配置文件中设置。
上述"模式配置"命令执行后会自动完成脚本相应模式配置参数的修改,后续再次手工修改配置参数或进行脚本的启动/重启操作请使用“启动/重启”命令,无需再次用该命令作为此模式的脚本启动命令,否则可能会将之后修改的配置参数回滚到刚执行完此命令时的状态。

极速模式(v3.1.4版添加)
  • 极速模式基于高速直连绑定出口技术和系统中的链路负载均衡功能,事先将策略分流规则中源地址和目标地址构成的经由路径,通过在系统中逐条自动生成高级策略路由命令,提前精准映射到规划好的路由器出口,无中间环节,CPU资源占用小,传输效率高,精准分流,稳定性高。缺点就是对于性能较弱的路由器,脚本启动时,系统策略路由库第一次加载地址映射数据的时间较长,但对于主频800MHz以上CPU的路由器影响不大或可接受。
  • 使用极速模式配置,不必关注具体应该执行那种运行模式。极速模式配置对运行模式进行了更高层的应用级封装,充分发挥路由器内策略路由库的传输调度功能,会根据用户对运营商网段出口参数的基础设置情况自动设定运行模式参数,帮助做出最优化的高速直连绑定出口的传输设置。如果认为自己的路由器性能很差,可以不采用。
  • 通过使用"极速模式配置"命令实现功能配置,可将当前配置自动优化并修改为路由器最大带宽性能传输模式配置,自动选择和设置策略路由分流服务的运行模式(模式1或模式2)。采用混搭的高速直连绑定出口及系统负载均衡强制输出的通道流量传输控制方式,精准分流,不支持系统自动分配流量出口、协议分流、端口分流,同时也不支持下载地址位于同一个路由器WAN出口分流网段的P2P带速叠加下载。极速模式会在配置命令启动过程中关闭已配置且不符合要求的上述功能,如与需求不符,请之后手工修改配置。老型号或弱势硬件机型可能会有脚本服务启动时间过长的情况,可通过合理设定网段出口参数解决,可将条目数量巨大的数据文件的网址/网段流量出口(例如:中国大陆其他运营商目标网段流量出口、中国电信目标网段流量出口)与"中国大陆之外所有运营商及所有未被定义的目标网段流量出口"保持一致。
  • 启用方法/步骤:设置基本的网址/网段出口参数,完成脚本基础设置;在SSH命令行窗口输入"极速模式配置"命令(/jffs/scripts/lz/lz_rule.sh hd)启动脚本,脚本将自动完成配置并启动所需服务。
  • 极速模式成功运行后,脚本启动信息结束前会出现“All in High Speed direct DT Mode.”字样。
  • "极速模式配置"命令执行后会自动完成脚本相应模式配置参数的修改,后续再次手工修改配置参数或进行脚本的启动/重启操作请使用“启动/重启”命令,无需再次用该命令作为此模式的脚本启动命令,否则可能会将之后修改的配置参数回滚到刚执行完此命令时的状态。

IPTV模式(v3.1.7版添加)
  • "IPTV模式配置"命令(/jffs/scripts/lz/lz_rule.sh iptv)用于通过路由器双线路同时接入运营商宽带和运营商IPTV的应用场景,要求第一WAN口接入运营商宽带第二WAN口接入运营商IPTV网络,使用中同时要求用户拥有IPTV播放源网址/网段IP地址,并将上述网址/网段IP地址条目填入脚本配置文件高级设置参数wan_2_src_to_dst_addr_file所指定的第二WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件wan_2_src_to_dst_addr.txt中,每个条目由源网址/网段和目标网址/网段两个字段构成,字段间用空格隔开,可输入多个条目,具体格式参考相应的注释说明
  • "IPTV模式配置"命令仅在路由器上提供运营商宽带运营商IPTV的传输通道以及IGMP组播数据转内网传输代理udpxy组播数据转http流传输代理的参数配置,用户可在PC、手机等与路由器有线或无线连接的终端上使用vlc或者potplayer等软件播放udpxy代理过的播放源地址,如http://192.168.50.1:8888/rtp/239.76.253.100:9000,其中192.168.50.1:8888为路由器本地地址及udpxy访问端口。注意,该模式有可能不支持运营商IPTV机顶盒原有的流媒体播放连接方式,若要保持机顶盒的原有网络连接及播放方式请另寻他法。用户如需使用其他代理等传输优化技术请自行部署及配置,如需添加额外的脚本代码,建议使用高级设置中"外置用户自定义配置脚本"、"外置用户自定义双线路脚本"及"外置用户自定义清理资源脚本"三个功能,并在指定的脚本文件中添加代码,使用方法参考脚本配置文件中的相应注释说明
  • "IPTV模式配置"命令执行后会自动完成脚本相应模式配置参数的修改,后续再次手工修改配置参数或进行脚本的启动/重启操作请使用“启动/重启”命令,无需再次用该命令作为此模式的脚本启动命令,否则可能会将之后修改的配置参数回滚到刚执行完此命令时的状态。
  • 《双线路双拨路由器IPTV设置步骤》 https://koolshare.cn/thread-160195-1-1.html (出处: KoolShare)
  • 《北京联通IPTV机顶盒如何通过无线连接路由器实现收看电视?》 https://koolshare.cn/thread-161284-1-1.html (出处: KoolShare)

运行
脚本启动有如下触发方式:
  • 重启路由器
  • 开关防火墙
  • 双线双拨成功接入
  • 在SSH命令行窗口手工输入启动命令:/jffs/scripts/lz/lz_rule.sh

SSH脚本操作命令
  • 启动/重启              /jffs/scripts/lz/lz_rule.sh
  • 暂停运行               /jffs/scripts/lz/lz_rule.sh stop
  • 终止运行               /jffs/scripts/lz/lz_rule.sh STOP
  • 恢复缺省配置        /jffs/scripts/lz/lz_rule.sh default
  • 模式1配置             /jffs/scripts/lz/lz_rule.sh 1
  • 模式2配置             /jffs/scripts/lz/lz_rule.sh 2
  • 模式3配置             /jffs/scripts/lz/lz_rule.sh 3
  • 极速模式配置        /jffs/scripts/lz/lz_rule.sh hd(v3.1.4版添加)
  • IPTV模式配置       /jffs/scripts/lz/lz_rule.sh iptv(v3.1.7版添加)
"暂停运行"命令仅是暂时关闭策略路由服务,重启路由器、线路接入或断开、WAN IP改变、防火墙开关等事件都会导致本脚本自启动重新运行。终止运行命令将彻底停止服务,需SSH命令行窗口手动启动方可运行。
上述命令中的“模式配置”命令用于脚本配置参数的修改,可简化脚本特殊工作模式参数配置的工作量,执行后会自动完成脚本相应模式配置参数的修改,后续再次手工修改配置参数或进行脚本的启动/重启操作请使用“启动/重启”命令,无需再次用“模式配置”命令作为相应模式脚本的启动命令,否则可能会将之后修改的配置参数回滚到刚执行完此命令时的状态。

数据更新
  • v2.5.6通用版起提供手动更新ISP网络运营商CIDR网段数据文件功能。脚本软件安装完成并启动后,会在/jffs/scripts/lz/目录内自动生成一个名字为lz_update_ispip_data.sh的可执行脚本文件,接通外部互联网的前提下,在SSH命令行手工输入 /jffs/scripts/lz/lz_update_ispip_data.sh命令,即可自动完成网段数据文件的下载和更新。
  • 建议每隔一段时间(至少1个月)进行一次更新,保持基础数据常新,使脚本能够长期精准运行。
  • v2.5.8通用版提供定时自动更新ISP网络运营商CIDR网段数据文件功能,缺省禁用,在/jffs/scripts/lz/configs/lz_rule_config.sh脚本配置文件中设置启用。
  • 网段数据变更不很频繁,建议加大更新间隔时间,减少存储擦写次数,延长路由器使用寿命,同时有助于降低远程下载服务器的负荷压力。

访问外网
若有内网设备需要固定使用路由器某个出口访问外网,如要求该设备仅固定通过第二WAN口访问外网,现假设 abc.def.ghi.jkl 为你设备内网IPv4地址,设置步骤如下:
  • /jffs/scripts/lz/configs/lz_rule_config.sh脚本配置文件中根据策略优先级选择符合需求的某WAN口客户端及源网址/网段流量出口列表绑定数据文件功能,此处假定选择第二WAN口客户端及源网址/网段高优先级流量出口列表绑定数据文件功能。
  • 通过脚本配置文件找到高级设置参数high_wan_2_client_src_addr_file所指定的路由器中第二WAN口客户端及源网址/网段高优先级流量出口列表绑定数据文件high_wan_2_client_src_addr.txt,在该文件中填入如下网络地址条目:
    1. abc.def.ghi.jkl # 使用固定出口访问外网的设备内网地址
    复制代码
    每个条目中只能有一个设备内网IPv4地址字段;另可额外加入“#”号,其后为注释说明;每个列表文件中可填入多个设备地址条目。
  • 修改脚本配置文件/jffs/scripts/lz/configs/lz_rule_config.sh中的高级设置参数high_wan_2_client_src_addr0,启用第二WAN口客户端及源网址/网段高优先级流量出口列表绑定功能。
  • 保存上述修改后的文件,之后重启LZ策略分流脚本完成设置。如有多个设备需要固定从此出口访问外网,可添加多个设备地址条目。

外网访问
当前版本已升级采用最新的流量出口列表绑定数据文件的设置方法,不再使用早期的命令设置方式。需要从外网访问路由器本地网络的终端设备(如NAS、服务器等)时,要求在DDNS能通过路由器第一WAN口正常使用(或有确定的外网IP地址),以及能从外网访问路由器Asuswrt管理界面的前提下,可在/jffs/scripts/lz/configs/lz_rule_config.sh脚本配置文件中根据策略优先级选择符合需求的流量出口列表绑定数据文件功能。现假设 abc.def.ghi.jkl 为你设备内网IPv4地址,要求能够从外网通过第一WAN口访问该设备,设置步骤如下:
  • 通过脚本配置文件找到高级设置参数wan_1_src_to_dst_addr_file所指定的路由器中第一WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件wan_1_src_to_dst_addr.txt,在该文件中填入如下网络地址条目:
    1. 0.0.0.0/0 abc.def.ghi.jkl # 外网访问内网设备经由映射
    2. abc.def.ghi.jkl 0.0.0.0/0 # 内网设备发送数据包至外网经由映射
    复制代码
    第一条为从外网访问路由器内部网络某设备的经由路径网络映射第二条是路由器内部网络某设备向外网发送数据包的经由路径网络映射。条目中的0.0.0.0/0表示任一地址。每个条目源网址/网段目标网址/网段两个字段构成,字段间用空格隔开,可输入多个条目,具体格式参考相应的注释说明
  • 修改脚本配置文件/jffs/scripts/lz/configs/lz_rule_config.sh中的高级设置参数wan_1_src_to_dst_addr0,启用第一WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定功能。
  • 保存上述修改后的文件,之后重启LZ策略分流脚本完成设置。如有多个设备需要从外网访问,可添加多个地址条目对。
若要能够从外网通过第二WAN口访问内网指定设备,可参照上述方法选择填写第二WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件,然后启用第二WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定功能。
本方法除可用于定义从外网访问内网设备的功能外,亦可用于定义任意源地址目标地址使用指定路由器出口进行网络访问经由路径,其中的源地址和目标地址可为所需的任意内外网IP地址

负载均衡与带速叠加
  • 关于华硕梅林固件双线路双拨路由器的负载均衡与带速叠加 https://koolshare.cn/thread-150518-1-1.html (出处: KoolShare)
  • 方案脚本代码已取消sys_load_balance_idle参数,进化为动态自动控制系统负载均衡,所供8个ISP网段都设定出口就相当于原来老版本中的sys_load_balance_idle=1,彻底屏蔽系统负载均衡;如果有一个网段出口参数设定值>1,则该网段由系统负载均衡控制,随机分配流量出口,相当于原来不屏蔽系统负载均衡,即sys_load_balance_idle=0。
  • 分流是让流量走一个出口,叠加则是借助系统负载均衡的操控让流量走两个出口,分流和叠加是一对矛盾。可以一部分网段分流,一部分网段去玩叠加,但玩叠加有可能造成这部分网段的网络访问不稳定,跳外网出口IP,偶尔打不开网页或断流等现象。有利必有弊,需要用户自己根据需要把握这个平衡。但对于同一网段,不可能既要分流,又能叠加,违背自然规律。
  • 其实把那个国内其他ISP网段设定成系统负载均衡自动分配出口就很容易在下载时见到叠加效应,因为其中包含的网段数量相对而言是国内ISP中最多的,余下的网段都设定出口,如此性能较为折中、平衡,负面效应较小。
  • 参考案例(本帖863#楼):https://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=145491&pid=1624920

P2P带速叠加下载
  • 方法一:脚本不是为实现P2P带速叠加下载研发的,而且也无法实现两个网络的聚合,极速模式下支持带速叠加下载的条件更为苛刻,最好的办法就是不使用脚本,由此带来的问题是,除下载带速叠加外,正常的网页访问等业务性能可能会不佳。
  • 方法二:脚本不可能支持路由器内网用户终端外网流量全功能的既可策略分流又能P2P带速叠加下载,最多支持在部分出口网段的带速叠加下载,只需将相关运营商网段的出口参数改为>3,如5。可能的问题是除下载带速叠加外,该网段内正常的网页访问等业务性能可能会不佳。
  • 方法三:脚本仅可有条件的支持P2P下载时的带速叠加,即允许部分终端策略分流,另一部分带速叠加下载且不享受分流功能。方法是首先使用恢复缺省设置命令,将脚本配置恢复为缺省状态,运行模式会由此改为模式3,并由此会自动修改采用高速直连绑定出口的运营商网段出口参数为0或1,然后手工将需要做带速叠加下载的终端的本地IP地址添加到脚本配置文件高级设置中local_ipsets_file参数指定的“本地客户端网址/网段流量出口列表绑定黑名单数据文件(local_ipsets_data.txt)”中,随后重启脚本即可。此时,这些终端将不可通过策略分流技术访问网络,正常的网页访问等业务性能可能会不佳。
  • 方法四:如果需要P2P带速叠加下载的终端为路由器本身,只需将脚本配置文件高级设置中的参数wan_access_port设为大于2的数值,如5,然后以模式3方式运行,并使所有运营商网段出口参数不是2和3的高速直链绑定出口方式,此时会出现DDNS不能正常工作,无法从外网访问路由器管理界面和内部网络的情况。
P2P带速叠加下载只有当下载节点可通过路由器两个WAN出口访问时才能实现。极速模式下,P2P带速叠加下载的条件较为单一,只有当两个(或以上)P2P下载节点的IP地址分别位于路由器两个不同WAN出口的分流网段内时,才有可能出现下载时的带速叠加现象。
带速叠加使用测速软件(如speedtest)不一定能测出来,只有通过P2P下载时的实际流量来测更准确,而且能否出现叠加也取决于网络节点以及CDN分布情况,不一定每次都有或那么靠谱。

应用支持
  • OpenVP.N Server:路由器内置功能,自动适配TUN接口类型,可在脚本配置文件中设置指定其内、外网客户端访问互联网路由器出口,也可由系统自动分配。路由器虚拟专用网服务器及使用方法参见本帖817#楼:
  • https://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=145491&pid=1621182
  • SS插件:支持Koolshare改版固件软件中心内不可描述Science上网插件的使用,可在脚本配置文件中设置干预SS插件服务,为其节点服务器线路分配流量出口。
  • 迅雷、BT等下载工具:如果多线程、多进程下载源于不同出口的网段地址,或许会出现带速叠加现象。若希望下载过程中最大几率出现带速叠加效应,可在脚本配置文件中根据实际情况,将部分或全部网段设定为由系统负载均衡自动分配网络访问出口,或暂停脚本服务,同时避免下载客户端绑定固定出口。
  • v2.6.9之后版本路由器主机内部应用访问外网设置:
           wan_access_port=0,第一wan口(缺省);
           wan_access_port=1,第二wan口;
           wan_access_port=2,按网段匹配选择出口;
           wan_access_port>2,系统自动分配出口(模式3时)。
       调整该出口设置可能会导致不能从外网直接访问路由器,但可借助路由器内置的OpenVP-N服务访问,能解决路由器内部一些应用如BT方式访问外网时对双出口的特殊需求,这样玩儿是不是很酷哟!
  • 支持双网口同步下载(PT、BT等多线程、多进程、多文件P2P下载类),适用于Koolshare改版固件的软件中心下载插件、脚本应用、NAS类存储设备及其他内网下载客户端的设置方法参考本帖1401#楼:
           https://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=145491&pid=1689102

嵌入代码
支持嵌入和执行用户自定义脚本代码:
  • /jffs/scripts/lz/configs/lz_rule_config.sh脚本配置文件的结尾处设置和初始化自定义全局变量和常量,也可加入随系统启动自动执行的脚本代码。为避免与方案脚本代码产生时序和执行冲突,强烈建议使用本项功能,请使用下述的外置用户自定义配置脚本文件
  • /jffs/scripts/lz/configs/lz_rule_func_config.sh脚本配置文件的结尾处添加和编写自定义脚本代码,可在双线路双拨同时接通广域网络条件下执行。为避免与方案脚本代码产生时序和执行冲突,强烈建议使用本项功能,请使用下述的外置用户自定义双线路脚本文件
  • /jffs/scripts/lz/func/lz_clear_custom_scripts_data.sh脚本文件中编制脚本启动、停止时执行自定义脚本所需数据清理和释放资源的脚本代码。为避免与方案脚本代码产生时序和执行冲突,强烈建议使用本项功能,请使用下述的外置用户自定义清理资源脚本文件
  • 外置用户自定义配置脚本文件/jffs/scripts/lz/custom_config.sh,在脚本配置文件高级设置中定义,文件名和目录位置可根据情况改变,可用于设置和初始化自定义全局变量、常量及随系统启动自动执行的脚本代码。为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  • 外置用户自定义双线路脚本文件/jffs/scripts/lz/custom_dualwan_scripts.sh,在脚本配置文件高级设置中定义,文件名和目录位置可根据情况改变,可用于添加和编写自定义脚本代码,能在双线路双拨同时接通广域网络条件下执行。为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  • 外置用户自定义清理资源脚本文件/jffs/scripts/lz/custom_clear_scripts.sh,在脚本配置文件高级设置中定义,文件名和目录位置可根据情况改变,可用于编制脚本启动、停止时执行自定义脚本所需数据清理和释放资源的脚本代码。为避免脚本升级更新或重新安装导致配置重置为缺省状态,建议更改文件名或文件存储路径。
  • 上述外置用户自定义脚本文件的第一行内容必须为“#!/bin/sh”,文件编码格式必须为UNIX(LF)的UTF-8编码格式
  • 示例(本帖1179#楼):https://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=145491&pid=1671482
所嵌入代码仅用于调用和配置系统服务,随主脚本启动完成后退出,不可驻留系统内存运行。

v3.2.8通用版代码示例已发表在本帖2#楼:
https://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=145491&pid=1580255


往事回顾
2018年8月19日方案及初版代码正式出炉,9月19日推出完美的v2.3.6通用版,花费整整一个月时间,31个无人喝彩的日日夜夜,60个以上人/天,经历36个版本黑白盒测试及升级完善,因地制宜,计划执行严苛而又精准,杰出的软件工程实施最佳实践,大功告成。在此诚心感谢来自五湖@四海以社会工程学方式为方案开发提供无私帮助和参与运行测试的所有人员,谢谢你们的倾心奉献,在下这厢有礼了!

上传到你们路由器上,一切掌控在手中,放心的去耍去浪吧!除了自己内心,再也没有什么能够阻挡你们。。。虽然至今还没搞懂路由器Linux,但生活还要继续,狗屎盖茨还得吃

本方案在下面几位神仙方案的基础上,参考和引用了相关思路和代码,按洒家实际需求和应用场景重新编写、修改、补充、调试、优化和实际运行,在此过程中方案最终得以完善。彻底解决以往刷有华硕、梅林及改版固件的一体化普通智能路由器双线双拨不同ISP解决方案中经常存在的掉速、卡慢、断流、不稳定和越用越慢问题,保证这类路由器的双线双拨功能能够长期稳定、可靠和流畅的使用。

KoolShare改版固件国内多ISP、国内外分流脚本 双线双拨策略路由 V2.0
https://koolshare.cn/thread-6388-1-1.html
(出处: KoolShare)

R6400双线双拨,负载均衡解决方案
https://koolshare.cn/thread-143687-1-1.html
(出处: KoolShare)

https://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=143687&pid=1579729

华硕及梅林改版路由器双线路双拨不同ISP的简单方法
https://koolshare.cn/thread-144463-1-1.html
(出处: KoolShare)

方案基于品质差异较大的联通、移动双ISP百兆以上宽带双拨接入(可根据自身情况修改代码),屏蔽了由此造成掉速、卡慢、断流、不稳定和越用越慢的系统自带负载均衡,可长期使用,稳定、可靠和流畅,适合多终端并发应用(只要你带宽足够和CPU撑得住,目标服务器也要能经得住折腾),但不可叠加带速(:后续版本已放开此约束)。毕竟宽带都升级了,非特别要求必要性不大,稳定、可靠和流畅更重要。

现在用这类一体化普通智能路由器,在国内不同ISP之间做双拨接入输出,能成功实现带速叠加且长期稳定流畅使用的概率不高。对此不服的,玩儿软路由的可就此拍砖反对;搞路由器产品推销推广的,就别来凑热闹了,惹不起你们,俺认怂。

本方案代码构成简单,易于普通人理解,未从那些患有强迫症的程序员角度做代码结构的进一步优化。也没必要,总共不超过200行(初版,随着版本升级,代码会越来越多,越来越复杂),效率已经很高了。本人崇尚:简单的,就是最好的。否则小白们阅读起来费劲。其实更深层此的原因是洒家不懂Linux,也不掌握Linux系统命令,对路由器硬件也知之甚少,只能在网上查一个用一个

但尽管放心,作为一名老的不能再老的老程序员,老掉牙了也要充分保证所有代码已经深度高强测调和实际运行,履行了某某某最佳实践之责,可直接复制粘贴,便于额这类可爱的小白们闲暇时把玩。

如何往路由器里灌脚本请参阅文中的链接,坛子里有的是相关帖子,不再敷述,看看就会了。

闲言碎语不要讲,表的是。。。直接代码的招呼!

为保证兼容性,以下两个脚本代码文件务必采用UNIX的ANSI编码格式,建议采用Notepad++编辑工具(有中文版),亦可使用糕手们喜爱的编辑txt文本时用的Windows记事本。

代码上传路由器,建议使用图形化界面的WinSCP(有中文版)。之前请在路由器的系统设置里开启Telnet和SSH,端口22(缺省)。WinSCP可通过WIFI或网线使用SCP协议连接路由器,用路由器管理界面的用户名、密码登录,简单方便,便于调试。

复制本帖代码时请使用PC浏览器,字符之间的空格和间距不要按低级程序语言编程习惯轻易改变。例如,赋值命令的“=”号两边不要加空格,否则产生歧义,变成比较命令。当然,糕手们尽请随意。

初版代码内的策略分流规则使用路由器系统内10000、9999、9998三个优先级(数值越小优先级越高,网络访问数据包优先匹配高优先级规则),进阶版本使用10001~9994范围的优先级,糕手们在本应用之外注入执行路由规则命令时请不要与之冲突,以免增加你的修炼难度。


本方案已在华硕AC68U、网件R6300v2两款路由器上几经锤炼和优化,调试运行成功,尚未发现bug,欢迎各位玩家充分品尝、拍砖。

特别声明:本方案不会对设备和用户执行伤害性控制操作,紧守不作恶底线,所有源代码公开,符合国家法律法规,路由器等设备损坏与方案和本人无关。

再次重申:在该领域内,本人纯属业余野生,但会比专业的做的更好~~~啦啦啦啦啦啦

版本历程
v3.2.6通用版  发布日期:2019/9/9
  • 更新OpenVP-N Server应用处理算法,提供更大的场景包容性和更高的执行效率。

v3.2.5通用版  发布日期:2019/9/1
  • 提高对复杂情况下同时运行多个OpenVP-N Server的适应性和安全可靠性。

v3.2.4通用版  发布日期:2019/6/15
  • 新增IGMP组播数据转内网传输代理控制功能,可实现来自路由器第二WAN口的IPTV组播源数据向内网的传输,用户应根据实际状况选择使用。
  • 增加对静态IP方式连接IPTV网络的IPTV播放数据的传输控制,至此已涵盖PPPoE静态IPDHCP(动态IP)三种IPTV连接接入方式。
  • 完善IPTV数据传输联动控制代码,以期能适应兼容更多不同的设备种类和更为复杂的场景环境。
  • 调整几种外置用户自定义脚本的执行位置,防止用户自定义脚本命令与本脚本代码的执行冲突。
  • 优化代码执行时序和系统功能命令调用时间间隔,提高脚本和系统分流服务执行时的安全可靠性、稳定性和流畅度。

v3.2.3通用版  发布日期:2019/6/10
  • 代码优化,提高安全稳定性。

v3.2.2通用版  发布日期:2019/6/8
  • 在脚本配置文件高级设置中增加WAN口IPTV连接方式设置,可支持IPTV的PPPoEDHCP两种连接方式。
  • 放开udpxy客户端网段地址范围,不仅支持路由器本地地址段的客户端,也可支持其他网段地址的客户端,在此基础上可实现在外网通过OpenVP.N Server客户端远程连接路由器并使用播放器播放IPTV节目。

v3.2.1通用版  发布日期:2019/5/24
  • 增加udpxy缓冲区设置项,便于优化IPTV流传输性能,详情参见脚本配置文件中的高级设置。
  • IGMP组播管理协议版本号的缺省值改为0,并优化该值的控制方式。

v3.2.0通用版  发布日期:2019/5/10
  • 增加双WAN口通道分别或同时接入IPTV的udpxy支持,详情参见脚本配置文件中的高级设置,注意udpxy端口号不要一样。

v3.1.9通用版  发布日期:2019/5/6
  • IPTV模式"中增加对udpxy的配置。执行"IPTV模式配置"命令(/jffs/scripts/lz/lz_rule.sh iptv)时,在路由器上可同时自动完成运营商宽带、运营商IPTV传输的传输通道以及udpxy组播转http流的服务代理配置,用户可在PC、手机等与路由器有线或无线连接的终端上使用vlc或者potplayer等软件播放udpxy代理过的播放源地址,如http://192.168.50.1:8888/rtp/239.76.253.100:9000,其中的192.168.50.1:8888为路由器本地地址及udpxy访问端口。注意,该模式不支持运营商IPTV机顶盒原有的流媒体播放连接方式,若要保持机顶盒的原有网络连接及播放方式请另寻他法。

v3.1.8通用版  发布日期:2019/5/1
  • 进一步完善"IPTV模式配置"命令功能。执行该命令时自动设置wan_2_src_to_dst_addr=0启用wan_2_src_to_dst_addr_file所指定包含有IPTV播放源网址/网段IP地址第二WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件wan_2_src_to_dst_addr.txt
  • 《双线路双拨路由器IPTV设置步骤》https://koolshare.cn/thread-160195-1-1.html (出处: KoolShare)

v3.1.7通用版  发布日期:2019/4/30
  • 新增"IPTV模式配置"命令(/jffs/scripts/lz/lz_rule.sh iptv)。该命令用于通过路由器双线路同时接入运营商宽带和运营商IPTV的应用场景,要求第一WAN口接入运营商宽带第二WAN口接入运营商IPTV网络,使用中同时要求用户拥有IPTV播放源网址/网段IP地址,并将上述网址/网段IP地址条目填入脚本配置文件高级设置参数wan_2_src_to_dst_addr_file所指定的第二WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件wan_2_src_to_dst_addr.txt中,每个条目由源网址/网段和目标网址/网段两个字段构成,字段间用空格隔开,可输入多个条目,具体格式参考相应的注释说明。"IPTV模式配置"命令仅在路由器上提供运营商宽带运营商IPTV的传输通道配置,用户如需使用udpxy代理等传输优化技术请自行部署及配置,如需添加额外的脚本代码,建议使用高级设置中的"外置用户自定义双线路脚本"及"外置用户自定义清理资源脚本"两个功能,并在指定的脚本文件中添加代码,使用方法参考脚本配置文件中的相应注释说明

v3.1.6通用版  发布日期:2019/3/26
  • 精进Netfilter报文数据包过滤匹配处理规则流程算法,最大限度减少和降低数据传输时延和路由器资源占用率。达到预期,吆嘻吆嘻,非常满意,喜悦之情溢于言表,给自己点个赞

v3.1.5通用版  发布日期:2019/3/24
  • 新增脚本启动时检查脚本关键性执行文件是否存在功能,不存在将立刻退出运行,避免启动失败后垃圾数据驻留内存,保持路由器干爽、通透、清洁。
  • 新增脚本配置文件(lz_rule_config.sh)自动恢复功能,误删后,执行脚本启动/重启命令可自动恢复,同时复原之前的配置参数。

v3.1.4通用版  发布日期:2019/3/19
  • 新增SSH命令行"极速模式配置"命令:/jffs/scripts/lz/lz_rule.sh hd,用于将当前配置自动优化并修改为路由器最大带宽性能传输模式配置,自动选择和设置策略路由分流服务的运行模式(模式1或模式2)。采用混搭的高速直连绑定出口及系统负载均衡强制输出的通道流量传输控制方式,精准分流,不支持系统自动分配流量出口、协议分流、端口分流以及带速叠加下载功能,启动过程中会关闭已配置的上述功能,如与需求不符,请之后手工修改配置。老型号或弱势机型可能会有脚本服务启动时间过长的情况,可通过合理设定网段出口参数解决,可将条目数量巨大的数据文件的网址/网段流量出口(例如:中国大陆其他运营商目标网段流量出口中国电信目标网段流量出口与"中国大陆之外所有运营商及所有未被定义的目标网段流量出口"保持一致。
  • 极速模式启用方法/步骤:设置基本的网址/网段出口参数,完成脚本基础设置;在SSH命令行窗口输入"极速模式配置"命令(/jffs/scripts/lz/lz_rule.sh hd)启动脚本,脚本将自动完成配置并启动所需策略路由分流服务。极速模式运行成功后,脚本启动信息结束前会出现“All in High Speed direct DT Mode.”字样。

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.”,说明所做分流配置已达到路由器双线路传输通道的最大性能状态,参见2281#楼:https://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内外网判别显示中的Pr@vite更正为Private,英文太烂了
  • 在SSH窗口中增加脚本启动中的状态信息显示内容,免得等待过程中感觉无聊。若是碍眼,以后整点儿小说唔的香艳文艺范儿?
  • 完善对从数据文件读入数据进行数据清理的正则表达式,以在文件全文中正确识别所有“#”号后的注释说明文字,甚是完美。

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

v3.0.3元春通用版  发布日期:2019/2/28
  • 新增脚本启动时自动对WAN口接入运营商进行检测显示的功能,便于用户快速了解当前之分流设置。
  • 新增内网数据包路由器内流转控制机制,减少多余传输环节,优化系统性能和稳定性。
  • 进一步优化策略分流规则优先级,提高应用体验。

v3.0.2元春通用版  发布日期:2019/2/22
  • 简化定时更新ISP网络运营商CIDR网段数据的时间参数定义方法(详见脚本配置文件内的注释说明),仅设置间隔天数和更新当天的几点几分。去除自由度过大且复杂的个性化时间设定,参数设置错误或超范围设置后脚本会按缺省参数执行,防止设置不当和固件自身缺陷导致系统不断触发定时更新任务并重启脚本,确保更好的兼容新版固件的定时任务运行机制。

v3.0.1元春通用版  发布日期:2019/2/16
  • 大幅度调整和优化报文数据包过滤标识规则执行时序,增强策略分流的精准性、流畅性和稳定性,并在闲暇之余消除一未被任何人发现的原子级超微bug。
  • 优化和完善系统负载均衡干预控制代码,加入新的控制机制,进一步减少模式1、模式2运行时可能的偏流几率,提高采用高速直连和负载均衡强制输出混合搭配设置的用户体验。弱势机型若追求极致性能,推荐采用此法。
  • 补充脚本配置文件中的注释说明。
  • 经过这次对底层核心控制逻辑深思熟虑的大动干戈和不厌其烦的长时间测试,该版本在保持既有功能基础上性能体验焕然一新,改善明显,值得大家长期拥有,快去下载升级吧!

v3.0.0元春通用版  发布日期:2019/2/2
  • 优化数据文件读入时的数据清洗处理代码,完全杜绝脏数据的读入,提高系统的安全性和稳定性。
  • 走过,路过,错过,绝对不可放过,否则就是罪过
  • 哈哈哈,感觉很是完美,可以安心过节了~~~快去下载哦

v2.9.9元春通用版  发布日期:2019/2/1
  • 优化系统的流畅度,提高系统的安全性和稳定性。
  • 在额5年机龄的Netgear R6300v2老路由器(该死的博通BCM4708处理器,主频800M双核)上做了个完整测试,所有7个国内运营商目标网段全部使用高速直连绑定出口,模式3运行,脚本启动时间用了6分40秒,太漫长了,但之后的网络访问确是唰唰的,爽!类似这种老型号机器,还是采用高速直连和负载均衡强制输出通道混合搭配为好,可以极大地减少数据加载和脚本启动时间。如果是处理器性能更强的机器,如RT-AC86U、GT-AC5300等,脚本启动时间肯定会成倍减少,有人试过吗?报将上来

v2.9.8元春通用版  发布日期:2019/1/29
  • 在脚本配置文件中开放定时更新ISP网络运营商CIDR网段数据失败后自动重试次数设置,缺省为5次,用户可根据自己的网络情况对该参数进行调整。
  • 增加自动清理路由表缓存功能,缺省为每4小时清理一次,模式1、模式2运行时,对减小偏流有一定作用。
  • 在判断配置数据是否变更函数中发现并修复一处隐藏很久的验证中国教育网目标网段流量出口参数设置变更的变量名bug,该问题仅与脚本升级过程中自动恢复该配置参数有关。

v2.9.7元春通用版  发布日期:2019/1/28
  • 将输出至系统记录和命令行窗口的脚本启动信息显示命令调整到脚本执行的起始处,便于准确了解脚本启动执行时间。
  • 优化分流业务算法模型,当某一运营商目标网段高速直连出口绑定与系统负载均衡强制输出使用同一通道时,自动释放该网段的高速直连出口绑定,避免重复设置出口,节省系统资源。

v2.9.6元春通用版  发布日期:2019/1/25
  • 发现并修复v2.9.5版本中启用新增的高速直连绑定出口功能时,在一些情况下产生系统负载均衡和运行模式切换联动错误,以及系统记录中网段分流出口信息显示错误,使用v2.9.5版本的用户请尽快升级到本版本。
  • 老型号路由器使用高速直连绑定出口功能混合设置的脚本应用实际配置案例:https://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=145491&pid=1765652

v2.9.5元春通用版  发布日期:2019/1/24
  • 新增运营商目标网段高速直连绑定路由器出口方式,适用于RT-AC86U、GT-AC5300等采用博通BCM4906、BCM4908或更高性能CPU的路由器,可充分发挥此类设备的传输性能,最大程度的消除路由器端传输的延迟和抖动,简直是不可思议的快,一个字——“爽”,当然也可能与事实不符,取决于人品,设置方法详见脚本配置文件中的注释。对于老型号路由器,如网件R6300v2等,若不嫌弃超长的系统策略路由库的数据加载时间,也可享用此功能,就是脚本启动或停止的时间太长,运算速度巨慢,除非你有一个好脾气,俺是忍无可忍了

v2.9.4元禧通用版  发布日期:2019/1/15
  • 调整路由器主机内部应用访问外网及外网访问路由器出入口规则策略优先级执行顺序,防止内外部应用之间不按规矩乱抢路由器系统出口资源,严禁乱打架、打群架

v2.9.3元禧通用版  发布日期:2019/1/14
  • 优化系统的流畅度,提高系统的安全性和稳定性。
  • 补充脚本配置文件中的注释说明。
  • 元旦后发现网络运营商网段数据文件下载服务器主机发生地址迁移,且脚本用户访问量激增,运行工况产生变化,导致网络运营商网段数据定时自动更新经常失败。为保证脚本正常运行,强烈建议老用户将软件版本尽快升级到当前最新版本。由于网段数据更新频度不高,建议加大定时更新时间间隔,降低远程服务器访问压力,提高下载成功率。若经常下载失败,建议自行前往https://ispip.clang.cn/网站手工下载获取与脚本预置的8个网络运营商网段数据文件同名的最新CIDR网段数据(在 ISP IP CIDR 列表内点选TXT格式的数据文件,另存文件至本地),下载后直接上传路由器,粘贴覆盖/jffs/scripts/lz/data/目录内同名数据文件,重启脚本即刻生效。

v2.9.2元禧通用版  发布日期:2019/1/12
  • 优化网络运营商网段数据定时更新代码,降低远程服务器访问压力,提高下载成功率(失败后最多自动重试5次)。
  • 修改脚本配置文件中几处不准确描述。

v2.9.1元禧通用版  发布日期:2018/12/31
  • 发现并修复v2.9.0元禧通用版中一处影响优化SS服务干预代码执行效能的bug。
  • 2018年至此完美收官,不带走一片云彩,明天会更好吗?

v2.9.0元禧通用版  发布日期:2018/12/31
  • 新增网址/网段数据文件中添加注释说明功能,在网址/网段条目后添加“#”注释符号,后面可书写文字说明或助记符号。愿意的话,写首诗也是可以的
  • 在脚本配置文件中开放内置的网址/网段绑定流量出口列表数据处理模式转换条目数阈值配置项,便于用户系统调优。该阈值仅作用于用户自定义目标网址/网段流量出口数据文件及WAN口客户端及源网址/网段流量出口列表绑定数据文件,对WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件无影响。
  • 优化SS服务干预代码,阻止系统netfilter网络过滤模块对节点服务器线路的报文数据包进行连接跟踪和符号标记,提高传输性能,优化传输过程。

v2.8.9圣诞通用版  发布日期:2018/12/28
  • 新增WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定功能,类似于填写路由器负载均衡设置中的路由规则条目表,可完全取代直接使用IP策略路由命令手工绑定路由器流量出口,实现点对点、点对面、面对点和面对面的网络访问出口经由设定(“点”指某具体IP网址,“面”指某一网段)。与使用netfilter网络过滤匹配标记报文数据包分流方式不同,该功能直接使用系统策略路由分流机制,资源占用少,效率高,不会造成高带宽掉速。限于平台性能,尽管没有设置列表条目数量限制,但建议数量不宜过多,以免脚本启动时系统策略路由库数据加载时间过长。一般几百条的加载时间尚可接受,具体还取决于所用路由器硬件和固件性能。

v2.8.8圣诞通用版  发布日期:2018/12/26
  • 取消WAN口客户端及源网址/网段流量出口列表绑定功能中的低资源占用选项,改为根据列表条目数自动切换分流方式,少于64条时采用命令自动绑定路由器出口,大于64条时使用系统内核的netfilter网络过滤模块分配出口,同时用户自定义目标网址/网段功能也采用相同处理方式。

v2.8.7圣诞通用版  发布日期:2018/12/26
  • WAN口客户端及源网址/网段流量出口列表绑定功能中增加低资源占用选项,不使用路由器系统内核的netfilter网络过滤模块,减少通道CPU及I/O资源运行开销,适用于列表条目<32条(推荐数目)的情况,脚本启动时间会有所延长。
  • 优化网段分流算法逻辑,提高边际运行状态的安全稳定性。
  • 将脚本配置文件中的功能划分为基础设置高级设置两大类,初始用户完成基础设置即可操作脚本正常运行。

v2.8.6圣诞通用版  发布日期:2018/12/24
  • 新增WAN口客户端及源网址/网段流量出口列表绑定功能。不擅长系统IP命令的用户可使用此功能,通过填写IPv4格式的网址/网段列表数据文件,实现对指定客户端设备的路由器流量出口绑定的简单设置。结合用户自定义目标网址/网段流量出口数据文件功能,可实现双向访问。此功能不支持源地址/网段至目标地址/网段单一具体经由的流量出口定义,若要实现此类复杂的流量出口需求,还需使用IP命令在lz_rule_func_config.sh脚本配置文件或自定义的外.挂脚本文件中设置。
  • 进一步完善脚本配置文件中的功能注释说明。

v2.8.5通用版  发布日期:2018/12/23

  • 优化网段数据集合并算法,将用户自定义网段数据集根据路由器出口设定,动态合并至WAN口网段数据集中,减少网络访问时网段分流过程中数据包过滤次数,降低路由器网络连接跟踪机制中系统运算、I/O操作运行开销及资源占用。

v2.8.4通用版  发布日期:2018/12/22
  • 增加阻止网段分流时分流无效网络数据包功能, 缺省为禁用状态。一些网络应用可能会由于内存溢出、收到不知属于哪个连接的ICMP错误信息等原因,产生不能被识别属于哪个连接或没有任何状态的网络数据包。启用该功能可阻止系统分流这类无效数据包,提高网络访问流畅性和运行效率。若发现此功能导致网络访问故障或不稳定,可禁用此功能项。
  • 增加网段分流时是否验证网络数据包校验和功能,缺省为启用状态。禁用可适当减少路由器网络连接跟踪机制中系统运算和I/O操作运行开销,稍许提高网络吞吐能力,但存在未进行数据包校验和验证的安全风险。若追求极致性能,可选择性使用。
  • 发现并修复“复原配置文件函数”中一处变量名称错误,涉及v2.7.8~v2.8.3范围版本,会导致脚本配置文件中的路由器内部应用访问外网WAN口参数在版本升级更新过程中,由既有值自动恢复为缺省值。该问题在历史完整包中的相应版本中已得到同步修复。

v2.8.3通用版  发布日期:2018/12/20
  • 优化防火墙数据包过滤标识规则执行时序并调整网段分流策略规则优先级顺序,尽量减少受路由器内其他第三方应用运行的影响。
  • 完善脚本配置文件中的注释说明。

v2.8.2通用版  发布日期:2018/12/14
  • 进一步细化网段分流策略规则优先级层次,提高分流的准确性、流畅性和稳定性。
  • 补充脚本配置文件中的注释说明。

v2.8.1通用版  发布日期:2018/12/12
  • 在读取数据文件创建网段数据集后增加数据集条目数检测,预防极端状况下错误数据被清洗后形成空数据集,导致建立空数据过滤标记规则,使网段分流处理逻辑更加缜密完整,代码更具健壮性、鲁棒性,保障路由器在无人值守情况下运营商网段数据定时自动更新后能够安全可靠的运行,阻止系统服务和路由器被数据文件中的错误数据干死

v2.8.0通用版  发布日期:2018/12/11
  • 在读取数据文件时增加空内容文件判断,提高文件I/O安全性。

v2.7.9通用版  发布日期:2018/12/10
  • 端口分流、协议分流控制过程中增加源地址和排他性处理,减少数据包过滤计算范围,提高处理效率。
  • 完善脚本配置文件中的注释说明。

v2.7.8通用版  发布日期:2018/12/8
  • 端口分流功能中增加UDPLITE、SCTP两个协议的目标访问端口。目前Linux 2.6.36.4版内核固件里的v1.4.14版iptables模块仅支持第三方应用使用TCP、UDP、UDPLITE、SCTP四个下层协议端口。
  • 在系统记录中增加端口分流出口信息。
  • 完善脚本配置文件中的注释说明。

v2.7.7通用版  发布日期:2018/12/7

  • 增加根据TCP、UDP目标访问端口进行流量分流的端口分流功能。
  • 增加根据网络应用特征码进行流量分流的协议分流功能。该功能需要系统中有用于第七层网络控制的layer7模块支持,否则需重新编译、配置Linux内核,打补丁和安装l7-protocals协议包等事项,仅适用于Linux系统编译高手尝试。
  • 扩大策略规则优先级数值范围,以适应新增功能。

v2.7.6通用版  发布日期:2018/12/4
  • 去掉路由器单线路工作时系统记录中策略分流运行模式及路由器内部应用出口无用信息显示。

v2.7.5通用版  发布日期:2018/12/3
  • 扩展用户自定义网址网段分流功能,出口参数中增加系统自动分配出口选项。
  • 将用户自定义网址网段数据从脚本内置的国内外运营商网段实时数据集合中动态剥离,避免对报文数据包重复标识运算,实现对用户自定义目标网址网段出口的轻量级精准独立控制。

v2.7.4通用版  发布日期:2018/12/2
  • 将脚本配置文件中的缺省运行模式调整为模式3。
  • 在系统记录中增加脚本内置运营商网段、用户自定义网段网络访问出口信息显示。

v2.7.3通用版  发布日期:2018/11/30
  • 优化脚本代码,提高系统的安全性和稳定性。
  • 在动态生成的OpenVP-N Server接口文件中加入文件同步锁机制,防止多进程执行时发生命令冲突。

v2.7.2通用版 发布日期:2018/11/28
  • 优化系统的流畅度,提高系统的安全性和稳定性。
  • 在脚本配置文件中新增路由表缓存控制选择项。
  • 新增命令行运行模式切换启动命令,使用方法参见本帖下面的“SSH操作命令”或脚本配置文件中的注释。

v2.7.1通用版  发布日期:2018/11/27
  • 调整文件同步锁位置,涵盖所有外.挂用户自定义脚本文件。

v2.7.0通用版  发布日期:2018/11/24
  • 系统记录中加入路由器主机内部应用访问外网出口的信息。
  • 适配不可描述4.1.6版中新增加的节点域名解析DNS服务器功能,保证脚本获取到与不可描述一致的节点服务器地址。
  • 优化网段分流代码。
  • 读取网段数据文件时加入内容校验及清洗过滤机制,避免读入错误格式和非法数据。

v2.6.9通用版  发布日期:2018/11/22
  • 优化系统的流畅度,提高系统的安全性和稳定性。
  • 扩展路由器出口参数wan_access_port取值范围,将路由器主机内部应用访问外网流量从总体分流过程中剥离出来单独控制,出口可根据需要独立设置。
  • 优化版本更新升级效验后回写配置文件代码执行效率。
  • 修复用户自定义网段分流功能代码中数据集名称错误。

v2.6.8通用版
  • 增加配置参数版本升级自动校验备份恢复功能。

v2.6.7通用版
  • 完善脚本配置文件中运行模式设置注释。
  • 添加外.挂运行用户自定义配置脚本文件功能,每次升级更新安装后可避免重新设置脚本配置参数。

v2.6.6通用版
  • 在设置中增加不受目标网址网段访问匹配分流控制的本地客户端网址列表数据文件,正常网段分流情况下,可自定义内网客户端由系统自动分配出口,满足一些冥顽不化的叠加爱好者的执著追求

v2.6.5通用版
  • 提供执行外部自定义双线路脚本文件及自定义清理资源脚本文件设置功能。

v2.6.3通用版
  • 提供三种分流运行模式,便于系统调优。

v2.6.2通用版
  • 内建复合分流逻辑,进一步优化算法,利用系统负载均衡功能对第二通道下载过程加速,解决双线路接通后由于路由器原因,双通道运算能力不均衡,第二通道数据报文分流标识内存写入速度低,导致第二WAN口通道高速下载时CPU占用快速达到极限,200M以上带宽时下载速率下降,不能充分利用带宽的问题。优化合并运行中网段数据集,提高目标网址HASH散列查询匹配和数据传输效率。

v2.6.1通用版
  • 完善定时更新算法逻辑,将结果检测后输出至系统记录,防止脚本暂停重启导致间隔计数归零,但路由器重启导致间隔计数归零无法克服,最好还是用具体日期时间设定网段数据更新计划。提供定时自动及手动更新网段数据文件功能(参见下方数据更新)。

v2.6.0通用版
  • 优化网络数据包标记机制,提高传输速率。

v2.5.9通用版
  • 加入网段数据集读取保护机制,防止读入不存在或路径填写错误的自定义文件。

v2.5.8通用版
  • 增加嵌入和执行用户自定义脚本代码功能。

v2.5.2通用版
  • 合并功能脚本,精简文件数量,减少启动时搜索、打开及读取文件次数。文件结构发生变化,建议由v2.5.2之前版本升级时清除旧代码文件后再行安装,避免保存垃圾文件。

添加外网访问路由器WAN口自定义设置,适用于可选择设置DDNS出口或可通过第二WAN口外网固定ip访问的固件机型。优化网段数据集哈希散列取值。释放对HAProxy的直接控制,避免影响用户自主深度控制路由器内部资源指令的执行。优化并减少脚本启动及外界触发启动时动态生成事件触发接口文件脚本程序的写入次数,配置不变不写盘。可在脚本配置文件中设置OpenV-P-N Server内外网客户端通过指定的路由器出口访问互联网,并可利用不可描述的节点服务器线路,路由器成了代理服务器,任督二脉已打通,太尼玛好玩了。优化新增功能执行时序、完善事件接口机制及脚本文件结构。提供路由器内置OpenV-P-N Server(TUN接口类型)服务自适应支持功能。对系统负载均衡采用更加完善的动态主动控制机制,确保网络访问全过程的稳定流畅和流量出口分配的精准可靠,同时也留有实现网段数据访问由系统负载均衡自动分配流量出口的旧有机制和手段,结合配置的可自定义性,为用户创造出可充分发挥想象力的、更广阔的场景应用灵活性修复不可描述采用负载均衡模式时节点域名解析不正确导致无法对其线路出口进行干预及干预后出口固定为第二WAN口问题,请不可描述患者及使用不爽的用户尽快升级到新版本。

内置域名解析机制,可处理不可描述节点服务器IP地址为域名格式的情况,以适应多种运行模式;降低路由器系统策略路由库多余开销,仅对不可描述运行中节点进行干预,精准控制。

解决一系列可移植性和兼容性问题后,SHELL标准函数正式回归;优化并完善脚本进程间同步机制;更新和扩充用户自定义策略规则的优先级定义及选择范围,用户可更加灵活的设定和配置应用场景;增加系统记录中采样信息,便于问题诊断和配置调试;与S大神(sadog)讨论后将所有代码由UNIX(LF)的ANSI改为UTF-8编码格式,并与不可描述等应用采取一致的编码类型,增强适配性和兼容性;优化和巩固体系架构,性能更加稳定、可靠、安全和流畅,代码结构由此具备更好的张力,以及实现复杂算法功能的能力。这套代码真的很棒,值得大家信赖!

之前版本已完成 Koolshare Merlin armv7l 固件平台的v4.0.9以上版本不可描述适配,本版适配该插件 Koolshare Merlin aarch64 固件平台的v1.4.2以上版本,覆盖RT-AC86U官改和Merlin改版、GT-AC5300官改等多个新版固件机型。Merlin Koolshare mipsel 架构机型的改版固件,因架构老旧且性能较低,插件已无维护升级且接口能力羸弱,故不再做深度适配,除不能针对不可描述事项进行个性化分流控制外,脚本依然可以从全局角度对其实行整体策略。

版本基于v2.3.0通用版,在继承原有极佳的可靠性、稳定性、流畅性、效率和低资源占用的前提小,进一步扩展脚本代码的可移植性、兼容性,方便用户自定义部署路径,以及在路由器上使用U盘引导启动等多种运行模式。软件采用迭代方式开发,包含之前版本已有功能,并在过程中不断完善。

新手使用前切忌盲目,一定要仔细研读本帖内容。
其中有不少软件工程实施过程中的感悟,以及如何方能坚持不懈,在孤独中奋战,或许这些与你无关,你只想不劳而获的索取,也请在追逐名利的时候暂停一下,让大脑换个节奏转动,给自己补充些真正有益、异于常态、不同凡响的宇宙能量。尽管内容繁杂且废话许多,但阅读乃人生一大乐事,是获取智慧、培养专注度、摆脱低级趣味的良好捷径,或许还会对治疗阅读障碍症有所裨益(地球上有10~30%的人类有阅读障碍,你是其中之一吗?)。在充分理解和掌握的前提下正确部署、安装和配置,定能赢得享受愉悦体验的美好机遇。

友情提示
近来一些使用第三方384系列官改固件的GT-AC5300、RT-AC86U用户反映不能正常运行本方案的 lz rule 脚本,出现 syntax error: unexpected "(" 错误,这是固件不能完全兼容ANSI编码格式的LINUX SHELL标准命令行函数定义所致,可暂时改刷最新的梅林官方或梅林改版固件,即能正常使用该脚本。本人也在想办法适配这类第三方官改固件,但工作量巨大,需要一定的时间。不过这一天已经到来,快来使用伟大的v2.3.0通用版吧,没想到一个通宵就搞定了,太牛逼了!

v2.3.0通用版  发布日期:2018/9/12
干掉一切SHELL标准函数定义,打破坛坛罐罐,提供划时代的可移植性、兼容性、稳定性和卓尔不凡的效率。对程序变量的全过程生命周期进行动态实时管理和控制,确保运行过程的绿色环保和安全稳定,最大限度降低系统资源占用。

感觉脚本启动和运行速度有所提升,更加酣畅淋漓,挥洒自如。如同天外飞仙,水银泻地,脱胎换骨,又如同万马奔腾,紫烟缭绕,群山环抱,难道是我产生错觉了么?可以大言不惭地说,这是当今最好的策略路由脚本,品质上尽善尽美,绝不粗制滥造。因为是我自己用的,只能是最好,没有之一,只有第一,自己去体验吧!

为方便自定义应用策略,避免误改无关代码,已修改原有用户运行策略自定义区的文件位置,网段数据分流自定义设置在/jffs/scripts/lz/configs/目录下的lz_rule_config.sh脚本文件中,使用自定义客户端路由器网络出口和特定网址访问的设置在lz_rule_func_config.sh脚本文件中,请在这两个文件中根据注释指引设定路由策略。所有网段数据文件均在/jffs/scripts/lz/data/目录中,/jffs/scripts/lz/func/目录中是主脚本运行中必备的功能性子脚本,请不要独立运行。若下载的文件结构与此描述不同,请重新下载

v2.3.0通用版在应用功能上与v2.2.7通用版保持一致,今后将在v2.3.0通用版基础上进行升级维护。

v2.3.0通用版zip完整包  发布日期:2018/9/12
下载地址链接:
游客,如果您要查看本帖隐藏内容请回复

包内所有CIDR服务器IP网段数据来自APNIC官方每日更新(2018/10/15零点)。

提示:
下载后请去掉文件名中的“.pdf”后缀,解压后将包内所有文件和文件夹,建议使用WinSCP,一并上传至路由器的/jffs/scripts/目录,将其中所有文件(包括lz文件夹内的所有文件)和lz文件夹权限设置为0755。运行前请在路由器的“系统管理-系统设置”界面里开启“Enable JFFS custom scripts and configs”选项,否则无法运行。华硕原版固件的路由器用户请先在坛里和网上查找有关自启动脚本代码的方法,若方法可行,亦可采用本应用解决方案。

v2.2.7通用版  发布日期:2018/9/11
优化与插件间的通讯接口,减少在JFFS分区擦写文件次数,初始仅进行一次成功写入,后续不再擦写。
终于完成你们都很懂的那个上网插件服务支持功能,无缝衔接,完美解决,一切尽在掌握中。支持当前最新的v4.0.9版插件,其他老版本不知道是否可用,建议升级更新插件。没啥可剽窃和抄袭的情况下,两天内搞定,我都觉得自己天赋异禀,骨骼清奇,非正常人类,实在是厉害!

白天不知夜的黑,点灯熬油,挑灯夜战,不眠不休,功能终于满配。新增内容看脚本注释,请理解。

之前的v2.2.3通用版已增加自定义网址网段数据文件功能(能同时使用两个),可按用户给定策略分配网络访问流量出口。重新梳理代码结构后,脚本自动化执行机制得到极大优化,进一步保证了架构稳定性、扩展性、规范性和代码质量。出于改善用户体验的目的,增加脚本启动时自动获取路由器基本状态信息功能。首次使用时不必再手工设定路由器本地地址,可在Asuswrt管理界面的系统记录内查看脚本启动过程的状态信息,同时更新了网段数据,其他情况参见v2.11通用版。

每天一小步,老子一大步~~~哈哈哈哈哈哈~~~越来越完美了

v2.2.7通用版zip完整包  发布日期:2018/9/11
下载地址链接:
游客,如果您要查看本帖隐藏内容请回复

包内所有CIDR服务器IP网段数据来自APNIC官方每日更新(2018/10/15零点)。

提示:
下载后请去掉文件名中的“.pdf”后缀,解压后将包内所有文件和文件夹,建议使用WinSCP,一并上传至路由器的/jffs/scripts/目录,将其中所有文件(包括lz文件夹内的所有文件)和lz文件夹权限设置为0755。运行前请在路由器的“系统管理-系统设置”界面里开启“Enable JFFS custom scripts and configs”选项,否则无法运行。华硕原版固件的路由器用户请先在坛里和网上查找有关自启动脚本代码的方法,若方法可行,亦可采用本应用解决方案。

v2.2.7通用版代码示例已发表在本帖2#楼:
https://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=145491&pid=1579732

v2.1.1通用版  发布日期:2018/9/1
进一步优化和精简代码,提高对一些本土改版固件SHELL命令解释器的兼容性,更新了来自APNIC官方的CIDR服务器IP网段数据(2018/9/1零点),其他情况参见v2.1.0通用版。

v2.1.1通用版zip完整包  发布日期:2018/9/1
下载地址链接:
游客,如果您要查看本帖隐藏内容请回复


v2.1.0通用版  发布日期:2018/8/30
基于v2.0.2通用版,得益于良好架构和扩展性支持,脚本中开放了对系统负载均衡策略的使用控制,利用系统负载均衡的分流策略,在ISP网络支持等有限条件下可实现带速叠加效应。其他方面情况详见v2.0.2通用版的版本介绍和主执行脚本自定义区内的注释说明。

至此,除了还没进一步整合QoS和VLAN设置等功能(路由器上一般都有,但往往不能很好的支持双线路负载均衡),一些市面上常见的家用级、小企业级多拨上网路由器或软路由具有的策略路由功能已基本集成至该脚本。

如果只有两条宽带,没过多更高级要求,完全可以用这免费东东取而代之。

别再等了,赶紧来用吧!

v2.1.0通用版zip完整包  发布日期:2018/8/30
下载地址链接:
游客,如果您要查看本帖隐藏内容请回复

包内所有CIDR服务器IP网段数据来自APNIC官方每日更新(2018/8/30零点)。

v2.0.2通用版  发布日期:2018/8/28
该版本采用CIDR(无类别域间路由,Classless Inter-Domain Routing)技术的IP网段数据,在主执行脚本lz_rule.sh的开始部分设置有“用户运行策略自定义区”,在代码注释说明的指引下,用户可根据自己的网络接入情况和想象力,以最简单方式配置数据分流策略和自定义客户终端的外网访问出口,最大限度的适应了各地运营商构建的差异性网络环境。

不仅提供了更大的应用灵活性易用性,也避免用户在不熟悉、不理解代码的情况下修改代码导致不必要的错误和意外。在本版代码的升级开发和测试过程中,不仅完善了使用细节,还消除了一些不易察觉的潜在隐患,使代码具有了更好的健壮性和运行稳定性,提高了执行效率

强烈建议用户尽快升级到此版本,不要消耗宝贵的时间和精力去苦读代码了,那是程序员干的事,v2.0.2通用版将让你充分领略和体验策略路由的强大魅力和持久乐趣,喜悦将会陪伴你!走过,路过,不要错过。

v2.0.2通用版在梅林官方384.6固件基础上解决了系统双线路负载均衡启动后导致策略分流脚本出现分流控制失常的现象,兼容380系列固件,请使用之前版本的用户尽快升级。随着固件的升级,一些新架构的功能特性会时不常的与之前的应用发生冲突,莫要惊慌,淡定处之,一切都会好起来的。

可以充分利用脚本自定义区中提供的策略配置灵活性和便利性,除能自定义多个ISP网段访问的分流策略外,还可通过命令定义个性化的路由器网络出口规则。例如,可指定本地地址10.0.0.8的客户端固定使用第一个网络出口,只需添加如下命令:
        ip rule add from 10.0.0.8 table 100 prio 9997
如想指定所有本地客户端对目标地址167.167.167.167的网络访问均使用第二个网络出口,添加如下命令:
        ip rule add from all to 167.167.167.167 table 200 prio 9998
甚至还可以这样,定义本地地址10.0.0.27的客户端对目标地址167.167.167.167的网络访问仅使用第二个网络出口:
        ip rule add from 10.0.0.27 to 167.167.167.167 table 200 prio 9998
这样的规则命令可以添加无数条,当规则发生冲突时,仅执行优先级高的规则。

都介酱紫了,大侠,你还有啥想干而没干的事儿?还想要啥自行车?千万别欲壑难填,人家会不好意思的。

总之,很棒的设计,高品质的代码,完美的体验,用的爽的请点赞,感觉郁闷的请拍砖,吾将很乐意随时给予你们一些迎头痛击的感觉

v2.0.2通用版zip完整包  发布日期:2018/8/28
下载地址链接:
游客,如果您要查看本帖隐藏内容请回复

包内所有CIDR服务器IP网段数据来自APNIC官方每日更新(2018/8/28零点)。
提示:下载后请去掉文件名中的“.pdf”后缀,解压后将包内所有文件和文件夹,建议使用WinSCP,一并上传至路由器的/jffs/scripts/目录,将其中所有文件(包括lz文件夹内的所有文件)和lz文件夹权限设置为0755。运行前请在路由器的“系统管理-系统设置”界面里开启“Enable JFFS custom scripts and configs”选项,否则无法运行。华硕原版固件的路由器用户请先在坛里和网上查找有关自启动脚本代码的方法,若方法可行,亦可采用本应用解决方案。

v1.01版   发布日期:2018/8/23
该版本采用最新、最全、最准确的APNIC官方数据,全面覆盖国内ISP服务器IP网段,分流更加全面和精准。脚本代码中提供了详尽的注释说明,能帮助大家根据自己的实际情况对代码做进一步的方案调整和性能优化。

v1.0.1版分项下载地址链接:
游客,如果您要查看本帖隐藏内容请回复

所有服务器IP网段数据来自APNIC官方每日更新(2018/8/23零点)。
提示:请全部下载所有文件,去掉文件名中的“.1.01.pdf”后缀,数据文件全部粘贴至/koolshare/scripts/lz/目录内,文件权限均设置为0775。

v1.0.1版zip完整包(联通、移动双拨,含上述所有文件)
下载地址链接:
游客,如果您要查看本帖隐藏内容请回复

提示:下载后去掉文件名中的“.pdf”后缀,解压后参照上述说明部署。

v1.0.1进阶版参考、复制、抄袭、剽窃和掠夺了前述大神们的思想、技术和劳动成果,采用数据文件读取技术,通过防火墙规则标记网络访问数据包的方式,让双拨接入的路由器高效实现策略分流处理多目标服务器IP网段的互联网访问,同时也便于今后维护互联网服务器IP网段数据。脚本代码文件中编写了大量通俗易懂的注释,结合本人避免炫技的强健代码能力,详细阐明了本解决方案的实现方式,堪称史上最完美的技术教程,哈哈哈~~~:lol

v1.0.1版代码基于路由器第一WAN口接联通,第二WAN口接移动的背景环境开发,如有不同,请根据实际情况调整代码中的分流策略。

以下提供的v1.0.2版主执行脚本是根据“第一WAN口接电信,第二WAN口接移动,路由器地址192.168.50.1”情况变更的代码。v1.0.2把v1.0.1中有关电信的脚本命令注释掉,将其中的路由器地址由10.0.0.1改为192.168.50.1(用户亦可自己修改为其他地址),并适配了相关内网示例终端的网段地址。修改后,电信、联通、国内外其他ISP以及未被规则和网段数据覆盖的流量走第一WAN口,移动、铁通、教育网、长城宽带/鹏博士的网络访问均走第二WAN口。
下载地址链接:
游客,如果您要查看本帖隐藏内容请回复


v1.0.2版zip完整包(电信、移动双拨)  发布日期:2018/8/23
下载链接地址:
游客,如果您要查看本帖隐藏内容请回复

提示:下载后去掉文件名中的“.pdf”后缀,解压后参照前述说明部署。

初版脚本代码  发布日期:2018/8/19
下载地址链接:
游客,如果您要查看本帖隐藏内容请回复

提示:下载后请去掉文件名中的“.pdf”后缀。
firewall-start,无后缀,该文件名不可更改,否则系统不认。请将该文件粘贴到路由器的/jffs/scripts/目录下,权限0777,可在WinSCP中查看文件及文件夹的属性并修改权限。
cmc_rule.sh,粘贴到/koolshare/scripts/目录里,权限0775。刷有华硕原版、梅林官方及非koolshare改版梅林固件的机器无此目录,请自建,文件夹权限至少是0775。若要改此文件名(后缀“.sh”不可更改)、路径,需同时修改上面firewall-start文件中的原有路径。

洒家纯粹一小白,不懂linux操作命令和系统编程,边试边改,现学现卖。你敢用,咱就敢造。懵懵懂懂,晕头涨脑,不妥之处敬请指正,不吝赐教,谢谢啦!

下图为我采用本方案并开启SMART CONNECT的老网件R6300v2,2.4G、5G无线共用一个SSID,而非简单的将两个SSID改为一个名字。系统能根据信号强弱、数据流量需求自动分配和调整客户端的无线连接频道。尽可能的合二为一,复杂归为简单;老树新花,化腐朽为神奇。

Screenshot_2018-08-20-00-48-00-304_com.android.browser.png

破页面编辑器,排列了一下格式,后面几行居然没了,还没法再次添加。没找到删除重新上传代码的方法,只好到2#楼再传一遍。

在此郑重宣布:v2.2.7通用版完整代码去2#楼领悟:https://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=145491&pid=1579732

特大喜奔:
  • 找到贴内重新上传代码的方法了,现已更新主贴代码。丰富了代码注释,添加了两条SS服务支持的命令,不需要可删除,但不删除也不影响脚本运行。需要说明的是SS本人无法测试,留在此处只是预留。新版已删除,因为这些酸东西都喝完茶解散了,剩下都是野生的,完全不懂怎么搞。不做这个也不影响虚拟通道和酸东西的使用,只要有目标IP地址,完全可以在脚本自定义区设置指定该目标访问使用哪个路由器出口。保持通用性,满足广大人民群众的普遍爱好确实是不错的。
  • 为方便大家使用,本帖中增加了方案代码的下载地址链接。
  • 最新版本已发布,可去2#楼悟道:https://koolshare.cn/forum.php?mod=redirect&goto=findpost&ptid=145491&pid=1580255

评分

12

查看全部评分

15

主题

3654

帖子

1839

积分

大魔法师

Rank: 5Rank: 5

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

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

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

v3.2.8 通用版 lz_rule_config.sh 配置脚本代码:
  1. #!/bin/sh
  2. # lz_rule_config.sh v3.2.8
  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. ## 技巧:
  10. ##       上传编辑好的firewall-start文件和本代码至路由器后,开关防火墙即可启动本代码,不必重启路由器。
  11. ##       也可通过SSH命令行窗口直接输入如下命令:
  12. ##       启动/重启        /jffs/scripts/lz/lz_rule.sh
  13. ##       暂停运行         /jffs/scripts/lz/lz_rule.sh stop
  14. ##       终止运行         /jffs/scripts/lz/lz_rule.sh STOP
  15. ##       恢复缺省配置     /jffs/scripts/lz/lz_rule.sh default
  16. ##       模式1配置        /jffs/scripts/lz/lz_rule.sh 1
  17. ##       模式2配置        /jffs/scripts/lz/lz_rule.sh 2
  18. ##       模式3配置        /jffs/scripts/lz/lz_rule.sh 3
  19. ##       极速模式配置     /jffs/scripts/lz/lz_rule.sh hd
  20. ##       IPTV模式配置     /jffs/scripts/lz/lz_rule.sh iptv
  21. ## 提示:
  22. ##     1."暂停运行"命令仅是暂时关闭策略路由服务,重启路由器、线路接入或断开、WAN口IP改变、防火墙开关等
  23. ##       事件都会导致本脚本自启动重新运行。终止命令将彻底停止服务,需SSH命令行窗口手动启动方可运行。
  24. ##     2."极速模式配置"命令用于将当前配置自动优化并修改为路由器最大带宽性能传输模式配置,自动选择和设置
  25. ##       策略路由分流服务的运行模式(模式1或模式2)。采用混搭的高速直连绑定出口及系统负载均衡强制输出的
  26. ##       通道流量传输控制方式,精准分流,不支持系统自动分配流量出口、协议分流、端口分流以及带速叠加下载
  27. ##       功能,启动过程中会关闭已配置的上述功能,如与需求不符,请之后手工修改配置。老型号或弱势机型可能
  28. ##       会有脚本服务启动时间过长的情况,可通过合理设定网段出口参数解决,可将条目数量巨大的数据文件的网
  29. ##       址/网段流量出口(例如:中国大陆其他运营商目标网段流量出口、中国电信目标网段流量出口)与"中国大
  30. ##       陆之外所有运营商及所有未被定义的目标网段流量出口"保持一致。
  31. ##     3."IPTV模式配置"命令用于通过路由器双线路同时接入运营商宽带和运营商IPTV的应用场景,要求第一WAN口
  32. ##       接入运营商宽带,第二WAN口接入运营商IPTV网络,使用中同时要求用户拥有IPTV播放源的网址/网段IP地址,
  33. ##       并将上述网址/网段IP地址条目填入脚本配置文件高级设置参数wan_2_src_to_dst_addr_file所指定的第二
  34. ##       WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件wan_2_src_to_dst_addr.txt中,
  35. ##       每个条目由源网址/网段和目标网址/网段两个字段构成,可输入多个条目,具体格式参考相应的注释说明。
  36. ##     4."IPTV模式配置"命令在路由器上提供运营商宽带、运营商IPTV传输的传输通道、IGMP组播数据转内网传输
  37. ##       代理以及UDPXY组播数据转HTTP流传输代理的参数配置,用户可在PC、手机等与路由器有线或无线连接的终
  38. ##       端上使用vlc或者potplayer等软件播放udpxy代理过的播放源地址,如:
  39. ##       http://192.168.50.1:8888/rtp/239.76.253.100:9000,其中192.168.50.1:8888为路由器本地地址及udpxy
  40. ##       访问端口。注意,该模式有可能不支持运营商IPTV机顶盒原有的流媒体播放连接方式,若要保持机顶盒的原
  41. ##       有网络连接及播放方式请另寻他法。用户如需使用其他传输代理等优化技术请自行部署及配置,如需添加额
  42. ##       外的脚本代码,建议使用高级设置中的"外置用户自定义配置脚本"、"外置用户自定义双线路脚本"及"外置
  43. ##       用户自定义清理资源脚本"三个功能,并在指定的脚本文件中添加代码,使用方法参考脚本配置文件中的相
  44. ##       应注释说明。
  45. ##     5.配置命令用于脚本配置参数的修改,简化脚本特殊工作模式参数配置的工作量,执行后会自动完成脚本相应
  46. ##       模式配置参数的修改,后续再次手工修改配置参数或进行脚本的启动/重启操作请使用“启动/重启”命令,无
  47. ##       需再次用模式配置命令作为相应模式脚本的启动命令。
  48. ##     6.若在Koolshare固件机型上启用过SS服务支持,脚本升级或删除本脚本前请运行停止命令,以清除程序自动
  49. ##       创建的接口文件,亦可手工去/koolshare/ss/postscripts/目录清除P99_lz_rule.sh文件。

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

  63. ## 策略规则优先级执行顺序:由高到低排列,系统抢先执行高优先级策略。
  64. ##     OpenVP@NServer客户端访问互联网流量出口分流出口规则
  65. ##     第一WAN口用户自定义源网址/网段至目标网址/网段高优先级流量出口列表绑定出口规则(high_wan_1_src_to_dst_addr_file)
  66. ##     第二WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定出口规则(wan_2_src_to_dst_addr_file)
  67. ##     第一WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定出口规则(wan_1_src_to_dst_addr_file)
  68. ##     最高高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则
  69. ##     最高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则
  70. ##     第二WAN口客户端及源网址/网段高优先级流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(high_wan_2_client_src_addr_file)
  71. ##     第一WAN口客户端及源网址/网段高优先级流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(high_wan_1_client_src_addr_file)
  72. ##     SS服务线路绑定干预出口规则
  73. ##     路由器主机内部应用访问外网及外网访问路由器出入口规则
  74. ##     高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则
  75. ##     用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则
  76. ##     第二WAN口客户端及源网址/网段流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(wan_2_client_src_addr_file)
  77. ##     第一WAN口客户端及源网址/网段流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(wan_1_client_src_addr_file)
  78. ##     用户自定义目标网址/网段(2)(总条目数≤list_mode_threshold阈值时)分流出口规则(custom_data_file_2)
  79. ##     用户自定义目标网址/网段(1)(总条目数≤list_mode_threshold阈值时)分流出口规则(custom_data_file_1)
  80. ##     高速直连绑定国内运营商目标网址/网段分流第二WAN口流量出口规则
  81. ##     高速直连绑定国内运营商目标网址/网段分流第一WAN口流量出口规则
  82. ##     第二WAN口客户端及源网址/网段高优先级流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(high_wan_2_client_src_addr_file)
  83. ##     第一WAN口客户端及源网址/网段高优先级流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(high_wan_1_client_src_addr_file)
  84. ##     端口分流出口规则
  85. ##     协议分流出口规则
  86. ##     第二WAN口客户端及源网址/网段流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(wan_2_client_src_addr_file)
  87. ##     第一WAN口客户端及源网址/网段流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(wan_1_client_src_addr_file)
  88. ##     国内运营商及用户自定义目标网址/网段分流第二WAN口流量出口规则
  89. ##     国内运营商及用户自定义目标网址/网段分流第一WAN口流量出口规则
  90. ##     国外运营商目标网段流量分流出口规则
  91. ##     未被规则和已定义网址/网段数据覆盖的流量分流出口规则

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


  95. ## 一、基础设置

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

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

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

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

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

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

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

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

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

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

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

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

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


  172. ## 二、高级设置

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  309. ## 路由表缓存(0--启用;非0--禁用)
  310. ## 缺省为启用。
  311. route_cache=0

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

  315. ## IGMP组播管理协议版本号(0--未定义;1--IGMPv1;2--IGMPv2;3--IGMPv3)
  316. ## 缺省为0;修改请慎重;用于IPTV模式网际媒体数据传输。
  317. igmp_version=0

  318. ## IGMP组播数据转内网传输代理(0--第一WAN口;1--第二WAN口;>1--禁用)
  319. ## 缺省为禁用;用于IPTV模式网际媒体数据传输;部分机型(如RT-AC86U等)不支持该功能,应设置禁用。
  320. ## 可将IPTV组播数据从路由器WAN出口外的IPv4组播源地址/接口转入本地内网。
  321. igmp_switch=5

  322. ## 第一WAN口UDPXY组播数据转HTTP流传输代理(0--启用;非0--禁用)
  323. ## 缺省为禁用;用于IPTV模式网际媒体数据传输。
  324. ## 可将IPTV组播数据转为HTTP数据流供内网客户端进行流式播放,能同时支持多个播放器,避免内网广播风暴。
  325. wan1_udpxy_switch=5

  326. ## 第一WAN口IPTV连接方式(0--PPPoE;1--静态IP;>1--DHCP)
  327. ## 缺省为PPPoE;用于IPTV模式网际媒体数据传输。
  328. wan1_iptv_mode=0

  329. ## 第一WAN口UDPXY端口号(1~65535;要求唯一,不可与路由器系统使用中的端口号重复)
  330. ## 缺省为8686;用于IPTV模式网际媒体数据传输。
  331. wan1_udpxy_port=8686

  332. ## 第一WAN口UDPXY缓冲区(4096~2097152 bytes)
  333. ## 缺省为65536;用于IPTV模式网际媒体数据传输。
  334. wan1_udpxy_buffer=65536

  335. ## 第一WAN口UDPXY代理支持的内网客户端数量(1~5000)
  336. ## 缺省为10;用于IPTV模式网际媒体数据传输。
  337. wan1_udpxy_client_num=10

  338. ## 第二WAN口UDPXY组播数据转HTTP流传输代理(0--启用;非0--禁用)
  339. ## 缺省为禁用;用于IPTV模式网际媒体数据传输。
  340. ## 可将IPTV组播数据转为HTTP数据流供内网客户端进行流式播放,能同时支持多个播放器,避免内网广播风暴。
  341. wan2_udpxy_switch=5

  342. ## 第二WAN口IPTV连接方式(0--PPPoE;1--静态IP;>1--DHCP)
  343. ## 缺省为PPPoE;用于IPTV模式网际媒体数据传输。
  344. wan2_iptv_mode=0

  345. ## 第二WAN口UDPXY端口号(1~65535;要求唯一,不可与路由器系统使用中的端口号重复)
  346. ## 缺省为8888;用于IPTV模式网际媒体数据传输。
  347. wan2_udpxy_port=8888

  348. ## 第二WAN口UDPXY缓冲区(4096~2097152 bytes)
  349. ## 缺省为65536;用于IPTV模式网际媒体数据传输。
  350. wan2_udpxy_buffer=65536

  351. ## 第二WAN口UDPXY代理支持的内网客户端数量(1~5000)
  352. ## 缺省为10;用于IPTV模式网际媒体数据传输。
  353. wan2_udpxy_client_num=10

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

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

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

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

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

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


  370. ## --------------用户运行策略自定义区结束--------------
  371. ## ----------------------------------------------------

  372. #END
复制代码

v3.2.8 通用版 lz_rule_func_config.sh 配置脚本代码:
  1. #!/bin/sh
  2. # lz_rule_func_config.sh v3.2.8
  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. ## 技巧:
  10. ##       上传编辑好的firewall-start文件和本代码至路由器后,开关防火墙即可启动本代码,不必重启路由器。
  11. ##       也可通过SSH命令行窗口直接输入如下命令:
  12. ##       启动/重启        /jffs/scripts/lz/lz_rule.sh
  13. ##       暂停运行         /jffs/scripts/lz/lz_rule.sh stop
  14. ##       终止运行         /jffs/scripts/lz/lz_rule.sh STOP
  15. ##       恢复缺省配置     /jffs/scripts/lz/lz_rule.sh default
  16. ##       模式1配置        /jffs/scripts/lz/lz_rule.sh 1
  17. ##       模式2配置        /jffs/scripts/lz/lz_rule.sh 2
  18. ##       模式3配置        /jffs/scripts/lz/lz_rule.sh 3
  19. ##       极速模式配置     /jffs/scripts/lz/lz_rule.sh hd
  20. ##       IPTV模式配置     /jffs/scripts/lz/lz_rule.sh iptv
  21. ## 提示:
  22. ##     1."暂停运行"命令仅是暂时关闭策略路由服务,重启路由器、线路接入或断开、WAN口IP改变、防火墙开关等
  23. ##       事件都会导致本脚本自启动重新运行。终止命令将彻底停止服务,需SSH命令行窗口手动启动方可运行。
  24. ##     2."极速模式配置"命令用于将当前配置自动优化并修改为路由器最大带宽性能传输模式配置,自动选择和设置
  25. ##       策略路由分流服务的运行模式(模式1或模式2)。采用混搭的高速直连绑定出口及系统负载均衡强制输出的
  26. ##       通道流量传输控制方式,精准分流,不支持系统自动分配流量出口、协议分流、端口分流以及带速叠加下载
  27. ##       功能,启动过程中会关闭已配置的上述功能,如与需求不符,请之后手工修改配置。老型号或弱势机型可能
  28. ##       会有脚本服务启动时间过长的情况,可通过合理设定网段出口参数解决,可将条目数量巨大的数据文件的网
  29. ##       址/网段流量出口(例如:中国大陆其他运营商目标网段流量出口、中国电信目标网段流量出口)与"中国大
  30. ##       陆之外所有运营商及所有未被定义的目标网段流量出口"保持一致。
  31. ##     3."IPTV模式配置"命令用于通过路由器双线路同时接入运营商宽带和运营商IPTV的应用场景,要求第一WAN口
  32. ##       接入运营商宽带,第二WAN口接入运营商IPTV网络,使用中同时要求用户拥有IPTV播放源的网址/网段IP地址,
  33. ##       并将上述网址/网段IP地址条目填入脚本配置文件高级设置参数wan_2_src_to_dst_addr_file所指定的第二
  34. ##       WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件wan_2_src_to_dst_addr.txt中,
  35. ##       每个条目由源网址/网段和目标网址/网段两个字段构成,可输入多个条目,具体格式参考相应的注释说明。
  36. ##     4."IPTV模式配置"命令在路由器上提供运营商宽带、运营商IPTV传输的传输通道、IGMP组播数据转内网传输
  37. ##       代理以及UDPXY组播数据转HTTP流传输代理的参数配置,用户可在PC、手机等与路由器有线或无线连接的终
  38. ##       端上使用vlc或者potplayer等软件播放udpxy代理过的播放源地址,如:
  39. ##       http://192.168.50.1:8888/rtp/239.76.253.100:9000,其中192.168.50.1:8888为路由器本地地址及udpxy
  40. ##       访问端口。注意,该模式有可能不支持运营商IPTV机顶盒原有的流媒体播放连接方式,若要保持机顶盒的原
  41. ##       有网络连接及播放方式请另寻他法。用户如需使用其他传输代理等优化技术请自行部署及配置,如需添加额
  42. ##       外的脚本代码,建议使用高级设置中的"外置用户自定义配置脚本"、"外置用户自定义双线路脚本"及"外置
  43. ##       用户自定义清理资源脚本"三个功能,并在指定的脚本文件中添加代码,使用方法参考脚本配置文件中的相
  44. ##       应注释说明。
  45. ##     5.配置命令用于脚本配置参数的修改,简化脚本特殊工作模式参数配置的工作量,执行后会自动完成脚本相应
  46. ##       模式配置参数的修改,后续再次手工修改配置参数或进行脚本的启动/重启操作请使用“启动/重启”命令,无
  47. ##       需再次用模式配置命令作为相应模式脚本的启动命令。
  48. ##     6.若在Koolshare固件机型上启用过SS服务支持,脚本升级或删除本脚本前请运行停止命令,以清除程序自动
  49. ##       创建的接口文件,亦可手工去/koolshare/ss/postscripts/目录清除P99_lz_rule.sh文件。

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

  52. ## 策略规则优先级执行顺序:由高到低排列,系统抢先执行高优先级策略。
  53. ##     OpenVP@NServer客户端访问互联网流量出口分流出口规则
  54. ##     第一WAN口用户自定义源网址/网段至目标网址/网段高优先级流量出口列表绑定出口规则(high_wan_1_src_to_dst_addr_file)
  55. ##     第二WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定出口规则(wan_2_src_to_dst_addr_file)
  56. ##     第一WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定出口规则(wan_1_src_to_dst_addr_file)
  57. ##     最高高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则--优先级ID:IP_RULE_PRIO_CUSTOM_TOP_HIGH
  58. ##     最高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则--优先级ID:IP_RULE_PRIO_CUSTOM_TOP
  59. ##     第二WAN口客户端及源网址/网段高优先级流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(high_wan_2_client_src_addr_file)
  60. ##     第一WAN口客户端及源网址/网段高优先级流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(high_wan_1_client_src_addr_file)
  61. ##     SS服务线路绑定干预出口规则
  62. ##     路由器主机内部应用访问外网及外网访问路由器出入口规则
  63. ##     高优先级用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则--优先级ID:IP_RULE_PRIO_CUSTOM_HIGH
  64. ##     用户自定义客户端或特定网址/网段流量出口命令绑定分流出口规则--优先级ID:IP_RULE_PRIO_CUSTOM
  65. ##     第二WAN口客户端及源网址/网段流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(wan_2_client_src_addr_file)
  66. ##     第一WAN口客户端及源网址/网段流量出口列表(总条目数≤list_mode_threshold阈值时)绑定出口规则(wan_1_client_src_addr_file)
  67. ##     用户自定义目标网址/网段(2)(总条目数≤list_mode_threshold阈值时)分流出口规则(custom_data_file_2)
  68. ##     用户自定义目标网址/网段(1)(总条目数≤list_mode_threshold阈值时)分流出口规则(custom_data_file_1)
  69. ##     高速直连绑定国内运营商目标网址/网段分流第二WAN口流量出口规则
  70. ##     高速直连绑定国内运营商目标网址/网段分流第一WAN口流量出口规则
  71. ##     第二WAN口客户端及源网址/网段高优先级流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(high_wan_2_client_src_addr_file)
  72. ##     第一WAN口客户端及源网址/网段高优先级流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(high_wan_1_client_src_addr_file)
  73. ##     端口分流出口规则
  74. ##     协议分流出口规则
  75. ##     第二WAN口客户端及源网址/网段流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(wan_2_client_src_addr_file)
  76. ##     第一WAN口客户端及源网址/网段流量出口列表(总条目数>list_mode_threshold阈值时)绑定出口规则(wan_1_client_src_addr_file)
  77. ##     国内运营商及用户自定义目标网址/网段分流第二WAN口流量出口规则
  78. ##     国内运营商及用户自定义目标网址/网段分流第一WAN口流量出口规则
  79. ##     国外运营商目标网段流量分流出口规则
  80. ##     未被规则和已定义网址/网段数据覆盖的流量分流出口规则


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

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

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

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

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


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


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

  132. #END
复制代码

v3.2.8 通用版 lz_rule.sh 主执行脚本代码:
  1. #!/bin/sh
  2. # lz_rule.sh v3.2.8
  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. ## 技巧:
  10. ##       上传编辑好的firewall-start文件和本代码至路由器后,开关防火墙即可启动本代码,不必重启路由器。
  11. ##       也可通过SSH命令行窗口直接输入如下命令:
  12. ##       启动/重启        /jffs/scripts/lz/lz_rule.sh
  13. ##       暂停运行         /jffs/scripts/lz/lz_rule.sh stop
  14. ##       终止运行         /jffs/scripts/lz/lz_rule.sh STOP
  15. ##       恢复缺省配置     /jffs/scripts/lz/lz_rule.sh default
  16. ##       模式1配置        /jffs/scripts/lz/lz_rule.sh 1
  17. ##       模式2配置        /jffs/scripts/lz/lz_rule.sh 2
  18. ##       模式3配置        /jffs/scripts/lz/lz_rule.sh 3
  19. ##       极速模式配置     /jffs/scripts/lz/lz_rule.sh hd
  20. ##       IPTV模式配置     /jffs/scripts/lz/lz_rule.sh iptv
  21. ## 提示:
  22. ##     1."暂停运行"命令仅是暂时关闭策略路由服务,重启路由器、线路接入或断开、WAN口IP改变、防火墙开关等
  23. ##       事件都会导致本脚本自启动重新运行。终止命令将彻底停止服务,需SSH命令行窗口手动启动方可运行。
  24. ##     2."极速模式配置"命令用于将当前配置自动优化并修改为路由器最大带宽性能传输模式配置,自动选择和设置
  25. ##       策略路由分流服务的运行模式(模式1或模式2)。采用混搭的高速直连绑定出口及系统负载均衡强制输出的
  26. ##       通道流量传输控制方式,精准分流,不支持系统自动分配流量出口、协议分流、端口分流以及带速叠加下载
  27. ##       功能,启动过程中会关闭已配置的上述功能,如与需求不符,请之后手工修改配置。老型号或弱势机型可能
  28. ##       会有脚本服务启动时间过长的情况,可通过合理设定网段出口参数解决,可将条目数量巨大的数据文件的网
  29. ##       址/网段流量出口(例如:中国大陆其他运营商目标网段流量出口、中国电信目标网段流量出口)与"中国大
  30. ##       陆之外所有运营商及所有未被定义的目标网段流量出口"保持一致。
  31. ##     3."IPTV模式配置"命令用于通过路由器双线路同时接入运营商宽带和运营商IPTV的应用场景,要求第一WAN口
  32. ##       接入运营商宽带,第二WAN口接入运营商IPTV网络,使用中同时要求用户拥有IPTV播放源的网址/网段IP地址,
  33. ##       并将上述网址/网段IP地址条目填入脚本配置文件高级设置参数wan_2_src_to_dst_addr_file所指定的第二
  34. ##       WAN口用户自定义源网址/网段至目标网址/网段流量出口列表绑定数据文件wan_2_src_to_dst_addr.txt中,
  35. ##       每个条目由源网址/网段和目标网址/网段两个字段构成,可输入多个条目,具体格式参考相应的注释说明。
  36. ##     4."IPTV模式配置"命令在路由器上提供运营商宽带、运营商IPTV传输的传输通道、IGMP组播数据转内网传输
  37. ##       代理以及UDPXY组播数据转HTTP流传输代理的参数配置,用户可在PC、手机等与路由器有线或无线连接的终
  38. ##       端上使用vlc或者potplayer等软件播放udpxy代理过的播放源地址,如:
  39. ##       http://192.168.50.1:8888/rtp/239.76.253.100:9000,其中192.168.50.1:8888为路由器本地地址及udpxy
  40. ##       访问端口。注意,该模式有可能不支持运营商IPTV机顶盒原有的流媒体播放连接方式,若要保持机顶盒的原
  41. ##       有网络连接及播放方式请另寻他法。用户如需使用其他传输代理等优化技术请自行部署及配置,如需添加额
  42. ##       外的脚本代码,建议使用高级设置中的"外置用户自定义配置脚本"、"外置用户自定义双线路脚本"及"外置
  43. ##       用户自定义清理资源脚本"三个功能,并在指定的脚本文件中添加代码,使用方法参考脚本配置文件中的相
  44. ##       应注释说明。
  45. ##     5.配置命令用于脚本配置参数的修改,简化脚本特殊工作模式参数配置的工作量,执行后会自动完成脚本相应
  46. ##       模式配置参数的修改,后续再次手工修改配置参数或进行脚本的启动/重启操作请使用“启动/重启”命令,无
  47. ##       需再次用模式配置命令作为相应模式脚本的启动命令。
  48. ##     6.若在Koolshare固件机型上启用过SS服务支持,脚本升级或删除本脚本前请运行停止命令,以清除程序自动
  49. ##       创建的接口文件,亦可手工去/koolshare/ss/postscripts/目录清除P99_lz_rule.sh文件。

  50. ## ----------------------------------------------------
  51. ## -------------全局数据定义及初始化-------------------

  52. ## 版本号
  53. LZ_VERSION=v3.2.8

  54. ## 停止SS服务指令
  55. SS_START="ss_start"

  56. ## 停止SS服务指令
  57. SS_STOP="ss_stop"

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

  63. ## 项目文件部署路径
  64. PATH_BASE=/jffs/scripts
  65. PATH_LZ=${PATH_BASE}/lz
  66. PATH_CONFIGS=${PATH_LZ}/configs
  67. PATH_FUNC=${PATH_LZ}/func
  68. PATH_DATA=${PATH_LZ}/data

  69. ## 同步锁文件路径
  70. PATH_LOCK=/var/lock

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

  73. ## 同步锁文件ID
  74. LOCK_FILE_ID=555

  75. ## 设置文件同步锁
  76. [ ! -d ${PATH_LOCK} ] && {
  77.         mkdir -p ${PATH_LOCK}
  78.         chmod 777 ${PATH_LOCK}
  79. }
  80. exec 555>"${LOCK_FILE}"
  81. flock -x 555

  82. ## 第一WAN口路由表ID号
  83. WAN0=100

  84. ## 第二WAN口路由表ID号
  85. WAN1=200

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

  87. main(){
  88.         ## 使项目文件部署路径、配置脚本、功能脚本和数据文件处于可运行状态
  89.         [ ! -d ${PATH_LZ} ] && mkdir -p ${PATH_LZ}
  90.         chmod 775 ${PATH_LZ}
  91.         [ ! -d ${PATH_CONFIGS} ] && mkdir -p ${PATH_CONFIGS}
  92.         chmod 775 ${PATH_CONFIGS}
  93.         [ ! -d ${PATH_FUNC} ] && mkdir -p ${PATH_FUNC}
  94.         chmod 775 ${PATH_FUNC}
  95.         [ ! -d ${PATH_DATA} ] && mkdir -p ${PATH_DATA}
  96.         chmod 775 ${PATH_DATA}
  97.         cd ${PATH_FUNC}/
  98.         chmod -R 775 *
  99.         cd ${PATH_CONFIGS}/
  100.         chmod -R 775 *
  101.         cd ${PATH_DATA}/
  102.         chmod -R 775 *
  103.         cd ${PATH_LZ}/
  104.         chmod -R 775 *

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

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

  109.         ## 检查脚本关键文件是否存在,若有不存在项则退出运行。
  110.         local local_scripts_file_exist=1
  111.         [ ! -f ${PATH_FUNC}/lz_initialize_config.sh ] && {
  112.                 [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  113.                         echo $(date) [PVID: $]: The file ${PATH_FUNC}/lz_initialize_config.sh does not exist.
  114.                 echo $(date) [PVID: $]: LZ ${PATH_FUNC}/lz_initialize_config.sh does not exist. >> /tmp/syslog.log
  115.                 local_scripts_file_exist=0
  116.         }
  117.         [ ! -f ${PATH_FUNC}/lz_define_global_variables.sh ] && {
  118.                 [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  119.                         echo $(date) [PVID: $]: The file ${PATH_FUNC}/lz_define_global_variables.sh does not exist.
  120.                 echo $(date) [PVID: $]: LZ ${PATH_FUNC}/lz_define_global_variables.sh does not exist. >> /tmp/syslog.log
  121.                 local_scripts_file_exist=0
  122.         }
  123.         [ ! -f ${PATH_FUNC}/lz_clear_custom_scripts_data.sh ] && {
  124.                 [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  125.                         echo $(date) [PVID: $]: The file ${PATH_FUNC}/lz_clear_custom_scripts_data.sh does not exist.
  126.                 echo $(date) [PVID: $]: LZ ${PATH_FUNC}/lz_clear_custom_scripts_data.sh does not exist. >> /tmp/syslog.log
  127.                 local_scripts_file_exist=0
  128.         }
  129.         [ ! -f ${PATH_FUNC}/lz_rule_func.sh ] && {
  130.                 [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  131.                         echo $(date) [PVID: $]: The file ${PATH_FUNC}/lz_rule_func.sh does not exist.
  132.                 echo $(date) [PVID: $]: LZ ${PATH_FUNC}/lz_rule_func.sh does not exist. >> /tmp/syslog.log
  133.                 local_scripts_file_exist=0
  134.         }
  135.         if [ "$local_scripts_file_exist" = "0" ]; then
  136.                 [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  137.                         echo $(date) [PVID: $]: Policy routing service can\'t be started.
  138.                 echo $(date) [PVID: $]: -------- No LZ $LZ_VERSION rules run! -------------- >> /tmp/syslog.log

  139.                 return
  140.         fi

  141.         [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && \
  142.                 echo $(date) [PVID: $]: Initialization script configuration parameters......

  143.         ## 初始化脚本配置
  144.         ## 输入项:
  145.         ##     $1--主执行脚本运行输入参数
  146.         ## 返回值:无
  147.         ${CALL_FUNC_SUBROUTINE}/lz_initialize_config.sh "$1"

  148.         ## 载入脚本配置参数
  149.         ## 策略分流的用户自定义配置在/jffs/scripts/lz/configs/目录下的lz_rule_config.sh
  150.         ## 和lz_rule_func_config.sh文件中
  151.         ${CALL_CONFIG_SUBROUTINE}/lz_rule_config.sh

  152.         ## 全局常量、变量定义及初始化
  153.         ## 输入项:
  154.         ##     全局常量
  155.         ## 返回值:无
  156.         ${CALL_FUNC_SUBROUTINE}/lz_define_global_variables.sh

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

  159.         [ "$1" != "$SS_START" -a "$1" != "$SS_STOP" ] && {
  160.                 echo $(date) [PVID: $]: Configuration parameters initialization is complete.
  161.                 echo $(date) [PVID: $]: Get the router device information......
  162.         }

  163.         ## 启动延时5秒
  164. #        sleep 5s

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

  169.         ## 获取路由器基本信息并输出至系统记录
  170.         ## 输入项:
  171.         ##     $1--主执行脚本运行输入参数
  172.         ##     全局变量
  173.         ##         route_hardware_type--路由器硬件类型
  174.         ##         route_os_name--路由器操作系统名称
  175.         ##         policy_mode--分流模式
  176.         ## 返回值:
  177.         ##     MATCH_SET--iptables设置操作符宏变量,全局常量
  178.         ##     route_local_ip--路由器本地IP地址,全局变量
  179.         lz_get_route_info "$1"

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

  183.         ## 处理系统负载均衡分流策略规则
  184.         ## 输入项:
  185.         ##     全局常量
  186.         ## 返回值:无
  187.         lz_sys_load_balance_control

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

  192.         ## 加载hashlimit组件
  193.         ## 输入项:无
  194.         ## 返回值:无
  195.         [ "$limit_client_download_speed" = "0" ] && lz_load_hashlimit_module

  196.         ## 数据清理
  197.         ## 输入项:
  198.         ##     $1--主执行脚本运行输入参数
  199.         ##     全局常量
  200.         ## 返回值:
  201.         ##     ip_rule_exist--删除后剩余条目数,正常为0,全局变量
  202.         lz_data_cleaning "$1"

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

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

  217.                 ## 清除接口脚本文件
  218.                 ## 输入项:
  219.                 ##     $1--主执行脚本运行输入参数
  220.                 ##     全局常量
  221.                 ## 返回值:无
  222.                 lz_clear_interface_scripts "$1"

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

  226.                 return
  227.         fi

  228.         ## 创建firewall-start启动文件并添加脚本引导项
  229.         ## 输入项:
  230.         ##     全局常量
  231.         ## 返回值:无
  232.         lz_create_firewall_start_command

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

  239.         ## 载入外置用户自定义配置脚本文件
  240.         if [ "$custom_config_scripts" = "0" -a ! -z "$custom_config_scripts_filename" ]; then
  241.                 if [ -f "$custom_config_scripts_filename" ]; then
  242.                         chmod 775 "$custom_config_scripts_filename" > /dev/null 2>&1
  243.                         source "$custom_config_scripts_filename"
  244.                 fi
  245.         fi

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

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

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

  264.                 ## 部署流量路由策略
  265.                 ## 输入项:
  266.                 ##     $1--主执行脚本运行输入参数
  267.                 ##     全局常量及变量
  268.                 ## 返回值:无
  269.                 lz_deployment_routing_policy "$1"

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

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

  279.         else

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

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

  289.                 ## 清除接口脚本文件
  290.                 ## 输入项:
  291.                 ##     $1--主执行脚本运行输入参数
  292.                 ##     全局常量
  293.                 ## 返回值:无
  294.                 lz_clear_interface_scripts "$1"

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

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

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

  309.         sleep 1s

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

  312.                 ip route flush cache

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

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

  319.                 ## 解除文件同步锁
  320.                 flock -u 555
  321.                 rm -rf "${LOCK_FILE}"

  322.                 exit
  323.         fi

  324.         ## 执行主脚本
  325.         main "$1"

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

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

  332. else

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

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

  340. ## 解除文件同步锁
  341. flock -u 555
  342. rm -rf "${LOCK_FILE}"

  343. #END
复制代码

以上为部分代码,完整代码可在主帖中的完整包中查看。

15

主题

3654

帖子

1839

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
981
魔法值
0
注册时间
2018-7-15
 楼主| 发表于 2018-8-19 04:26:44 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽

6

主题

54

帖子

587

积分

高级魔法师

Rank: 4

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

13

主题

591

帖子

1274

积分

大魔法师

Rank: 5Rank: 5

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

15

主题

3654

帖子

1839

积分

大魔法师

Rank: 5Rank: 5

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

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

11

主题

239

帖子

533

积分

高级魔法师

Rank: 4

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

15

主题

3654

帖子

1839

积分

大魔法师

Rank: 5Rank: 5

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

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

842

主题

3568

帖子

2万

积分

圣魔导师

Rank: 10Rank: 10Rank: 10

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

R7000

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

12

主题

280

帖子

648

积分

高级魔法师

Rank: 4

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

15

主题

3654

帖子

1839

积分

大魔法师

Rank: 5Rank: 5

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

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

8

主题

114

帖子

226

积分

中级魔法师

Rank: 3Rank: 3

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

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

15

主题

3654

帖子

1839

积分

大魔法师

Rank: 5Rank: 5

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

可以用WinSCP,网上有下

0

主题

15

帖子

163

积分

初级魔法师

Rank: 2

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

15

主题

3654

帖子

1839

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
981
魔法值
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

主题

86

帖子

177

积分

初级魔法师

Rank: 2

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

0

主题

15

帖子

163

积分

初级魔法师

Rank: 2

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

关键我是小白,怎么装?

15

主题

3654

帖子

1839

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
981
魔法值
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

主题

114

帖子

226

积分

中级魔法师

Rank: 3Rank: 3

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


好的
我试试看
谢谢

8

主题

114

帖子

226

积分

中级魔法师

Rank: 3Rank: 3

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

联系我们|手机版|KoolShare ( 沪ICP备13045430号962110 沪公网备31010402005377

GMT+8, 2019-10-22 02:09 , Processed in 0.180308 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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