更新说明
旧版文档地址:https://dev.leiyanhui.com/route/ikuai-bypass-joyanhui-old/ 本文内容未覆盖到信息请参考旧版文档。
项目说明
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 绑定到eth0 DHCP客户端,连接到爱快lan1 从爱快静态ip绑定为10.1.1.3
openwrt lan 绑定套eth1 关闭DHCP服务,ip地址配置 10.0.0.1 即为爱快wan2的上游网关
openwrt的两个网口绑定到那个eth不影响使用,用默认的就好。
可以参考top图github
下文说配置都以上述为例
避免死循环
在爱快内手动添加一个分流规则 流控分流 > 分流设置 > 端口分流
分流方式:外网线路 线路: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 可以自动帮你维护这个域名列表,通过ikuai-bypass可以自己托管一个域名列表并保证规则的id是最大。
配置某些域名强制走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指定的时间内定时运行。
下面的配置文件 会执行一下操作
- 自动登陆到 网址是 http://10.1.1.1 的爱快 使用用户名admin 密码 admin888登陆,如果登陆成功。
- 运营商/IP分流规则 他会帮你添加 一个
国内IP列表
的运营商,你需要去爱快 流控分流 > 分流设置 > 多线负载 添加规则,选择 国内IP列表 启用wan1
也会添加几个 telegram google 等ip地址,你可以删掉那几行,也可以添加规则 启用wan2 - 另外会添加4个域名分流规则 分别强制走wan1 和wan2 你可以在下面配置文件清晰看到。需要注意的是 china-list 和 gfw两个清单 都很长,添加/更新的时候会很慢。你可以根据你的需求决定是否要保留,添加后会增加你访问网址的速度,但是会增加ikuai的性能消耗(大概增加30-120M内存消耗,cpu负载也会增加一点),如果你的ikuai配置很烂,可以去掉其他规则 只使用 国内IP列表 的IP分流即可 。
文件内容参考 https://github.com/joyanhui/ikuai-bypass/blob/main/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
参考上文
配置文件
参考上文
运行命令参考
|
|
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
: 先运行一次 而后等待计划任务触发nocron
或once
或1
: 忽略配置文件的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
- 默认为cleanAll(即清理所有备注中包含
-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配置