爱快无感分流 自动更新规则 ikuai-bypass 修改版

更新说明

旧版文档地址:https://dev.leiyanhui.com/route/ikuai-bypass-joyanhui/ 本文内容未覆盖到信息请参考旧版文档。

项目说明

ikuai-bypass 是一个自动维护爱快分流规则的小工具,基于golang开发。 项目地址 https://github.com/joyanhui/ikuai-bypass/

爱快分流原理

爱快分流方式不同与传统的旁路由方案,更加直观,速度也更加好。
下述文档中 以爱快+openwrt为例,(实际上 openwrt可以用其他linux甚至win/macos替代,只要能运行你想要的对应的工具即可。可以在docker/lxc/kvm/vmware/virtuabox/物理设备)中运行openwrt.
分流方式主要有两种: 1、isp分流和域名分流配合: 基于爱快的自定义isp的ip功能,实现针对wan口的分流,把非国内ip和部分域名分流到wan2口由openwrt处理后 回流到wan1,国内ip和国内大站直接分流到wan1。
2、ip分组+端口分流和下一跳网关: 基于爱快的ip分组功能和端口分流功能,把国内ip直接走wan1,其他ip或者指定的ip用下一跳网关的方式到达openwrt再回流到wan1。

爱快分流的优点

  • 比单openwrt方案更加直观容易维护
  • 比旁路由方案更加稳定 速度也好很多。
  • 和自建dns配合更简单。

openwrt的安装方式

以下均为有效的方式 ,这里的openwrt泛指可以运行你喜欢的那些工具的系统。

  • 爱快内的docker 其他设备的docker 或者lxc运行的openwrt或者其他配置好的系统。
  • 爱快内的kvm 或者其他的 kvm vmware virtualbox 和hyper-v 等虚拟机系统。
  • 双网口设备 / 单网口设备。
  • 测试过的系统 openwrt 老毛子 alpine macos11-15 win8-11 debian pve opensuse nixos …..
  • 支持的深度学习工具软件:暂时未发现无法支持的工具。

常规使用方式 isp分流和域名分流配合

较为复杂,但是高可用性网络自愈性比较好。

简单说明

建议在pve/esxi/unraid/群晖/docker/lxc/podman中运行爱快+openwrt,当然也可以物理设备。
单网卡 pve测试没问题,其他环境同样不会有问题。 爱快3个或者3个以上网卡/虚拟网卡 作为主路由
openwrt/其他linux 双网卡/虚拟网卡,作为下级路由(非旁路由)

pve下推荐配置

推荐 2G内存安装ikuai 32位版,硬盘1G即可,然后修改为 512M内存
openwrt 官方版,或者自编译版本 内存 256-512M(开clash要300M,v2系256M就可以) 硬盘512M即可,或者看你img的分区。或lxc运行
iKuai Bypass 运行在 openwrt
mosdns 也可以运行在 openwrt mosdns all in one方案 modns配adg方案 64位 爱快,kvm/docker 运行 openwrt 和 iKuai Bypass 以及 mosdns 也可以,但是不推荐。

物理网络/虚拟网卡配置 举例

爱快 lan1 绑定到 eth0 开DHCP dhcp范围 10.1.1.5-10.1.1.254
爱快 wan1 绑定到 eth1 pppoe拨号 wan1先设置为默认线路 爱快 wan2 绑定到 eth2 静态ip指定 10.0.0.2 网关10.0.0.1

openwrt wan 绑定到eth1 DHCP客户端,连接到爱快lan1 从爱快静态ip绑定为10.1.1.3 openwrt lan 绑定套eth0 关闭DHCP服务,ip地址配置 10.1.1.1

下文说配置都以上述为例

避免死循环

在爱快内手动添加一个分流规则 流控分流 > 分流设置 > 端口分流
分流方式:外网线路 线路:wan1 源地址 ip/mac分组 添加一个 10.1.1.3 点加入 保存
此时 openwrt出来的流量 走wan1 不会再到wan2回到openwrt 导致死循环。
此时openwrt 可以正常访问外部网络。
注意:备注不建议包含字符:IKUAI_BYPASS ,否则有概率会被ikuai_bypass工具清理掉。

配置 wan2 为默认线路

此时所有对外网访问 都会 经过wan2 到openwrt,然后根据你的深度学习软件的分流情况决定是否加密,再回到爱快的lan1 再流向外网。
此时你的上网速度和传统的旁路由模式完全一样,略慢。

配置国内域名强制走wan1直连

流控分流 > 分流设置 > 域名分流,选择wan1 ,输入几个域名,输入客户端ip,建议 10.1.1.5-10.1.1.254 ,此时10.1.1.5-10.1.1.254 的设备访问这个域名会直接走wan1 , 不经过openwrt,速度飞快。
当然你自己输入太麻烦了。ikuai-bypass 可以自动帮你维护这个域名列表。

配置某些域名强制走wan2 交给openwrt处理

目的是啥,你肯定知道。配置和上面一样,同样 ikuai-bypass 可以自动帮你维护这个域名列表。

配置国内ip强制走wan1

因为域名清单里面的域名不能覆盖所有网站,还有一些是没有域名直接ip连接情况。所以需要维护一个根据ip分流的规则。
流控分流 > 分流设置 > 多线负载 自定义运营商 添加运营商 名称:国内ip地址 目的地址:输入几个国内的ip,备注:自定义
返回 流控分流 > 分流设置 > 多线负载 点右侧添加 运营商:选择你刚刚添加的名称,点wan1 后面的启用,保存。
此时 你访问这个ip上的网站或者其他东西,会强制走wan1 不经过openwrt,速度飞快。
同样 ikuai-bypass 可以自动帮你维护这个IP地址列表。

配置默认线路 确保网络100%可用性

把wan2 配置为默认线路,网络设置 > 内外网设置 wan2 同时打开

  • 默认网关:设此条线路为默认网关
  • 自动切换:掉线自动切换
  • 线路检测:HTTP www.google.com

此时,访问不在国内域名清单的域名,并且ip不再自定义运营商的国内ip地址的服务器,会默认走wan2。如果openwrt死机或者google连不上,会自动临时禁用wan2 默认走wan1。

使用ikuai-bypass 自动维护ip和域名规则。

较为简单

部署ikuai-bypass

ikuai-bypass 只要部署在可以访问到 爱快路由器的地方即可。一般建议以服务模式直接部署到openwrt内。

服务模式 openwrt/alpine/rc/systemd

以openwrt为例 请参考 github

下载最新版

https://github.com/joyanhui/ikuai-bypass/releases

配置文件

需要自定义一个配置文件 config.yml 格式如下。
然后运行 ./ikuai-bypass -c /路径/config.yml 即可在启动时候 自动更新一次规则文件,并在 cron指定的时间内定时运行。
下面的配置文件 会执行一下操作

  1. 自动登陆到 网址是 http://10.1.1.1 的爱快 使用用户名admin 密码 admin888登陆,如果登陆成功。
  2. 运营商/IP分流规则 他会帮你添加 一个 国内IP列表 的运营商,你需要去爱快 流控分流 > 分流设置 > 多线负载 添加规则,选择 国内IP列表 启用wan1
    也会添加几个 telegram google 等ip地址,你可以删掉那几行,也可以添加规则 启用wan2
  3. 另外会添加4个域名分流规则 分别强制走wan1 和wan2 你可以在下面配置文件清晰看到。需要注意的是 china-list 和 gfw两个清单 都很长,添加/更新的时候会很慢。你可以根据你的需求决定是否要保留,添加后会增加你访问网址的速度,但是会增加ikuai的性能消耗(大概增加30-120M内存消耗,cpu负载也会增加一点),如果你的ikuai配置很烂,可以去掉其他规则 只使用 国内IP列表 的IP分流即可 。

文件内容参考 https://github.com/joyanhui/ikuai-bypass/blob/main/config.yml

运行命令参考

1
./ikuai-bypass  -r cron -m ispdomain -c  /opt/ikuai-bypass/config.yml 

另外一种使用方式 ip分组+端口分流和下一跳网关

这种方式较为简单,并且不需要openwrt设备有2个网口。爱快也只需要2个网口。

网络结构

爱快配置好wan1 和lan1 以及pppoe等 正常上网。

配置好一个openwrt

这里的openwrt依旧是泛指可以运行你想要的工具软件的系统,作为爱快的下级普通设备。 可以使用单臂路由,手动指定ip为 10.1.1.3 或者有ikuai的dhcp分配均可

避免死循环

参考上文

下一跳网关和ip分组

由ikuai-bypass来维护,从ikuai-bypass的配置文件中修改即可。

使用ikuai-bypass 自动维护ip分组、端口分流和下一跳网关

部署ikuai-bypass

参考上文

配置文件

参考上文

运行命令参考

1
./ikuai-bypass  -r cron -m ipgroup -c  /opt/ikuai-bypass/config.yml 

docker

我没有打包docker镜像,因为完全没必要,你可以自己用下面的命令启动一个docker
请参考 : github
以及 github的readme中的docker部分

常用参数

最新的参数说明请参考github的文档桌面,这里更新可能存在滞后。

  • -c : 配置文件路径 默认为当前目录下config.yml 可用相对路径或者绝对路径
  • -m : 是否启用ip分组和下一跳网关模式(端口分流)v2.0以后版本有效
    • ispdomain : 使用isp和域名分流功能(默认,为了兼容v1.x版本)
    • ipgroup : 使用ip分组和下一跳网关模式(端口分流)
    • ii : 同时使用 上面两种模式
  • -r : 运行模式 默认为cron
    • cron : 先运行一次 而后等待计划任务触发
    • nocrononce1: 忽略配置文件的cron定时配置配置 运行一次然后就直接退出结束,适合调试使用或者使用系统自带的计划任务或serverless/函数计算等方式触发。
    • cronAft : 先不运行等计划任务触发
    • clean : 清理模式 默认可选附加参数为 -tag cleanAll
    • exportDomainSteamToTxt : 导出域名分流规则到txt文件模式 方便手动从爱快导入 默认可选附加参数为 -exportPath /tmp 暂时只支持域名分流功能导出,
  • -tag : 备注信息 clean清理模式下的附加参数
    • 默认为cleanAll(即清理所有备注中包含IKUAI_BYPASS字符的规则)
    • 单独指定备注的关键词 可以不添写IKUAI_BYPASS_前缀 例如-r clean -tag ipcn-r clean -tag IKUAI_BYPASS_ipcn
  • -exportPath : 导出域名分流规则的路径
  • -login : ikuai登陆地址和账户密码,优先级比配置文件的优先级更高。格式: http://10.1.1.1,admin,password 为空则使用配置文件内登陆信息
  • -delOldRule : 删除旧规则顺序,默认为 after
    • after : 先更新规则成功后再删除旧规则
    • before : 先删除旧规则再更新新规则,如果更新失败会丢失规则

其他补充

本文有一定滞后性,内容以 https://github.com/joyanhui/ikuai-bypass/ 的最新说明为准。

自定义规则和ikuai-bypass的规则

ikuai-bypass 自动维护的规则 都会添加备注 IKUAI_BYPASS ,只要你添加的自定义的规则备注不包含这个字符即可。

关于实例配置文件

实例配置文件使用了 https://mirror.ghproxy.com 作为github的代理方便可以在无科学环境更新规则,但是ghproxy有被gfw污染的先例,请自行更新更稳定的或者自建的github代理。
配置文件中有一些额外的选项和注释,可以自行酌情删除。

是否可以替代原版ikuai-bypass

原版是基于docker的,所以也可以直接替代,参考上面的docker配置

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计