更新说明
旧版文档地址: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指定的时间内定时运行。
下面的配置文件 会执行一下操作
- 自动登陆到 网址是 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配置