爱快无感分流

#

基于 ztc1997/ikuai-bypass/ 二开的 ikuai-bypass 已经 测试完成,请阅读本文:

https://dev.leiyanhui.com/route/ikuai-bypass-joyanhui/

# 优点

  • 可以接受 OpenWrt 死机/故障。完全无感 深造炸了不会有任何影响 OpenWrt关闭也不影响正常上网。
  • 丝毫不影响ipv6,无视fake-ip模式带来的一系列问题。
  • 爱快下内网设备同一个网络内,没有跨三层问题。
  • 依旧可以在爱快上设置某个或者某些设备走 OpenWrt ,或者不深造。
  • 内网流量和国内流量仅经过一个网关,没有网关损耗问题。
  • 可以无感覆盖ipsec拨入的外网设备。
  • 国内网站秒开,国外网站速度也不比clash差。
  • op和clash有问题的情况下,国外未墙网站可以正常访问。
  • 不用操心clash自定义规则,可以用爱快完成全部分流。
  • 不用给设备分配独立网关,所有设备都用爱快作为网关即可。

# 缺点

家里是多线宽带的情况,会略微复杂一些,单线的话非常简单明了。

# 情况

物理机,单网卡主机。安装pve 10.1.1.5
光猫 开桥接
pve物理机和、光猫、ap 以及其他设备都接入交换机器
pve 创建虚拟机安装爱快 10.1.1.1
lxc 或者 docker 或者 vm 运行 openwrt+openclash或者linux+clash或者v2ray等均可
top图 点击这里查看 或者恩山帖子

# 原理

  • openwrt作为爱快的下级路由器,但是作为爱快的wan2的上级路由器,端口分流规则避免环回问题。
  • 利用爱快的流控分流功能和自动wan检测功能,根据ip或者域名分流到openwrt再回到pppoe.
  • 爱快默认的分流优先级顺序为:静态路由>域名分流>端口分流>协议分流>多线负载>默认网关。
  • 我们要用的是 多线负载分流 和 默认网关分流。文末也有提供域名分流方法。
  • 利用pve esxi等虚拟网卡和内部交换机功能 不增加物理设备的情况下 高效连接爱快和OpenWrt.

# 原理图

没想到很多人看不明白,也有朋友来询问,所以简单说明如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#爱快网口
爱快lan1[10.1.1.1]
爱快wan2[192.168.10.2] ==> [lan 192.168.10.1] openwrt/clash [wan 10.1.1.3] ==>爱快==>爱快wan1
爱快wan1 ==> pppoe/宽带运营商
#分流规则
          ==> gfw域名 => 固定走爱快wan2 [==>openwrt]
访问请求   ==> 国内ip => 固定走爱快wan1 
          ==> 其他情况且wan2可用 => 爱快wan2 [==>openwrt]
          ==> 其他情况且wan2不可用 => 爱快wan1
          ==> 来自openwrt的流量 ==>爱快wan1 #避免回到wan2死循环
          ==> 其他自定义规则 => 爱快wan1或者wan2自由配置
#dns
DNS请求 ==> 爱快DNS加速==>第三方代理模式==>mosdns可用 ==>mosdns/adg
                                  ==>mosdns不可用 ==> 备用dns(爱快3.7.7,需要20秒左右才能切换)

# 网口设置

# 爱快

三个虚拟网口

1
2
3
4
5
6
7
8
lan1   10.1.1.1
wan1   pppoe
wan2   IP:192.168.10.2
       网关:192.168.10.1
       掩码:255.255.255.0
       默认网关: √ 设此条线路为默认网关
       自动切换: √ 掉线自动切换
       线路检测:HTTP www.google.com 或者 ping  192.168.10.1

# openwrt

两个虚拟网口

1
2
3
4
5
6
7
8
br-lan lan  静态ip
            IPv4 地址:192.168.10.1
            IPv4 掩码:255.255.255.0
            IPv4 网关  留空
            IPv4 广播地址 留空
            DHCP服务器  √ 忽略此接口
wan   eth1  DHCP客户端 (去爱快的静态dhcp里面给配置为 10.1.1.3)
wan6  不用管,你开启ipv6 和wan配置为DHCP客户端的情况下,wan6会自动获取ipv6地址

此时,相当于 openwrt作为爱快的下级路由器,但是作为爱快的wan2的上级路由器。下面会添加一个端口分流规则避免环回问题。

# 爱快分流规则

1
2
3
4
5
6
访问请求 ==> 爱快判断请求中的域名或者ip
  如果请求是gfw的域名 ==> wan2      (流控分流>分流设置>域名分流)
  如果请求的ip是国内ip ==> wan1直连     (流控分流>分流设置>多线负载) (自定义运营商添加国内所有ip地址)
  其他情况且wan2可用  ==> wan2    (因为上文中吧wan2设置为默认了)
  其他情况且wan2不可用  ==> wan1直连
如果流量是来自openwrt  ==> wan1  (流控分流>分流设置>端口分流)把10.1.1.3(openwrt)定向到wan1避免环回

# 辅助工具和其他说明

ztc1997/ikuai-bypass 可以自动给爱快添加gwf域名列表和国内ip地址列表,并可以自动更新。
后文中的openwrt可以运行在kvm docker lxc 都可以无影响,爱快内的docker和kvm也可以。
这个方案适合pve esxi unraid 。 如果是kvm 这个方案中所有的网口都要用 virtio 性能是最好的,可以最低的资源占用跑满。
openwrt 可以用lxc/docker/kvm运行的普通linux+clash替代,开ipv4和ipv6转发就好 。

# 准备工作

后面是原始记录

# 爱快设备

我这里是pve 用vm运行的设备。先添加两个虚拟网卡,一个做wan一个做lan, 配置wan1到 eth1 pppoe 配置lan1 到 eth0 ip配置为10.1.1.1 配置dhcp 为 10.1.1.X段 dns为10.1.1.1 ,配置dns 输入两个国内正常的dns,先配置DNS加速模式 为代理模式 doh https://doh.pub/dns-query 这样接入爱快的设备 均可正常上网,只是不能深造学习。 再添加一个虚拟网卡 并从pve关闭爱快后重新打开,爱快中可以看到多了一个 eth2 备用

# 深造设备

可以用lxc docker 或者 vm 都可以 看自己。 也可以物理设备 n1 之类的。 我这里因为是pve,所以 lxc 运行了一个 openwrt+openclash. openwrt 需要注意的是这里的openwrt不是旁路由模式,所以需要添加两个虚拟网卡 用于lan(192.168.10.1)和wan(10.1.1.3 也可以从爱快dhcp) 正常lxc或者vm安装openwrt。配置好深造。 然后找一个电脑或者vm/lxc ip设置为 和lan同一个网段的ip 网关和dns都配置为192.168.10.1. wan 口也可以配置为dhcp,然后在爱快里给他静态分配一个也可以。

# 手动ip v4 配置方法

先确保关闭爱快和

# 国内ip v4地址列表

先看手动添加方法,文末有自动维护方法。 https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt 如果没有深造,可以用https://ghproxy.com/https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt 这个地址打开 因为爱快一次只能输入5000个ip,但是国内的ip地址有6000多条,我们需要前5000条和后面1000多条分两次插入。 所以把上面的地址复制到一个支持行数显示的文本编辑器里面。备用。

# 爱快内配置国内ipv4

爱快 流控分流>多线负载>自定义运营商. 添加运营商 名称叫做 国内 ip地址粘贴前5000条 备注国内1 同样后面的1000多条 也粘贴进来 名称也是叫做国内 备注 国内2

# 分流

爱快 流控分流>多线负载,点添加 负载模式:源IP+目的IP+目的端口 运营商 选择国内 负载比例:wan1 1 点操作后面的开启。然后保存

# wan2

然后返回 网络设置 > 内外网设置 创建一个接口 wan2 ,绑定到 eth2。使用静态ip 192.168.10.2 ,网关为192.168.10.1(openwrt的地址)

下面 勾选 设此条线路为默认网关 和 掉线自动切换 可以设置为:线路检测 HTTP 检测地址 google.com 这样当 OpenWrt 不能正常访问国外网,流量会切换到 wan1 也可以 线路检测:ping 检测地址 192.168.10.1 ,这个地址是 OpenWrt 的 lan 地址,检查它的存在与否,用来确定是不是要将流量切换到 wan1 。

# 设置openwrt出口强制为wan1

不然 外网ip会分流到op又再次分流会wan2到openwrt 死循环。 爱快 流控分流 > 分流设置 > 端口分流 添加一条规则 分流方式:外网 线路 wan1 IP/分组: 添加openwrt的wan地址 10.1.1.3

# 打开ipv6

测试没有问题的时候,爱快 网络设置 > IPv6 > IPv6设置 wan1 DHCPv6客户端(动态获取) 启用 openwrt 系统 设置向导 启用 ipv6 (没有这个选项的固件可能需要 另外配置)

# 关闭openwrt的dhcp

因为我这里 都是虚拟网卡 理论上都会接入唯一的主交换机,所以爱快和op都开dhcp的话,有可能会有冲突。所以关掉openwrt的dchp. 网络 接口 lan 关闭 dhcp

# 进阶

# ipv4 地址列表

https://github.com/17mon/china_ip_list https://github.com/Loyalsoldier/geoip/tree/release/text https://ispip.clang.cn/all_cn.txt

# ipv6 地址列表

https://ispip.clang.cn/all_cn_ipv6.txt

# 基于域名的

https://github.com/Loyalsoldier/v2ray-rules-dat/tree/release

# docker自动更新规则

https://github.com/ztc1997/ikuai-bypass ztc1997大佬的docker支持自动更新ip列表和gfw域名列表。支持爱快内docker运行或者其他能访问爱快面板的地方运行。支持定时任务。 配制文件优化如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
## 本文件/data/ikuai-bypass/config.yml
## /data/ikuai-bypass/ 映射到 /etc/ikuai-bypass
## 爱快管理页面的 URL,结尾不要加 "/",
## 如不填写,则使用第一个接口的网关地址作为爱快地址,
ikuai-url: http://10.1.1.1 #爱快地址
username: admin # 爱快用户名
password: ******  # 爱快密码
cron: 0 4 * * * # 执行更新的周期 crontab
custom-isp:     # 自定义运营商
  - name: 国内  # 自定义运营商名称cnip就直接走wan1 非cnip走在默认可用的情况下走默认即wan2
    ## 自定义运营商 cidr 列表网址,每行一个,超过5000行会自动分为多个,ipv6 地址会被删除
    url: https://ghproxy.com/https://raw.githubusercontent.com/Loyalsoldier/geoip/release/text/cn.txt
    ## 下面的ip 可以分别添加到到wan2的 多线负载 规则
  - name: telegram
    url: https://ghproxy.com/https://raw.githubusercontent.com/Loyalsoldier/geoip/release/text/telegram.txt
  - name: google
    url: https://ghproxy.com/https://raw.githubusercontent.com/Loyalsoldier/geoip/release/text/google.txt
  - name: twitter
    url: https://ghproxy.com/https://raw.githubusercontent.com/Loyalsoldier/geoip/release/text/twitter.txt
  - name: facebook
    url: https://ghproxy.com/https://raw.githubusercontent.com/Loyalsoldier/geoip/release/text/facebook.txt
stream-domain:      # 域名分流 被墙的域名  无脑走wan2
  - interface: wan2 # 分流线路
    src-addr: 10.1.1.5-10.1.1.250   # 分流的源地址 我这边10.1.1.1是爱快  2/4是AP 3是openwrt
    ## 域名列表网址,每行一个,超过1000行会自动分为多个
    url: https://ghproxy.com/https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/gfw.txt
  - interface: wan2
    src-addr: 10.1.1.5-10.1.1.250
    url: https://ghproxy.com/https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/greatfire.txt

这个容器在更新的时候只会删除 备注名称为IKUAI_BYPASS的规则,自己添加的规则不会有影响。

# 去广告和dns加速

adguardhome 配制 爱快的dns加速即可。 adg 分流 https://github.com/mouyase/ChinaListForAdGuardHome/
也可以不单独分流,直接一股脑把dns全部写入 也可以.
另外最好用 爱快 3.7.7 版本,目前是体验版 ikuai9.com:555/1/main/iKuai_x86_beta 直接后台直接上传升级。3.7.7 的第三方代理加速模式支持设置备用dns.可以在adguardhome关闭或者宕机保证正常。

# 关于ipv6

上面ipv4 正常后,op和爱快这边都可以打开ipv6 可以正常支持。

# 部分配置截图

默认上传到imgur 请挂深度学习工具查看,也可能失效

爱快 网络设置 > 内外网设置 点击查看imgur
爱快 wan2 设置 点击查看imgur
爱快 基于ip的分流设置 点击查看imgur
爱快 基于ip的自定义运营商的设置,红框部分由ztc1997/ikuai-bypass自动管理 点击查看imgur
爱快 基于域名的设置 红框部分由ztc1997/ikuai-bypass自动管理 点击查看imgur
爱快 强制openwrt的出口流量走wan1的设置 10.1.1.3是爱快通过dhcp给openwrt分配的域名 点击查看imgur
爱快内kvm运行的openwrt的配置 pve/lxc/docker运行都是一样,关键是需要两个虚拟网口 点击查看imgur
openwrt 两个网口的设置 点击查看imgur

# 附lxc的openwrt配置文件

cat /etc/pve/lxc/103.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
arch: amd64
cores: 12
hostname: op
memory: 512
net0: name=eth0,bridge=vmbr0,hwaddr=1A:C2:8D:8D:56:70,type=veth
net1: name=eth1,bridge=vmbr0,hwaddr=EA:49:A6:98:4D:59,type=veth
ostype: unmanaged
rootfs: nvme_btrfs:103/vm-103-disk-0.raw,size=512M
swap: 0
lxc.include: /usr/share/lxc/config/openwrt.common.conf
lxc.cgroup2.devices.allow: c 108:0 rwm
lxc.mount.entry: /dev/ppp dev/ppp none bind,create=file
lxc.mount.entry: /dev/net dev/net none bind,create=dir
lxc.cap.drop:

lxc.cgroup2 适合pve7-8版本 旧版是 lxc.cgroup
/dev/ppp 因为这里op不需要拨号所以非必需
/dev/net 是 clash-tun要用的

# 附ikuai的kvm配置文件

cat /etc/pve/qemu-server/101.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
agent: 1
boot: order=scsi0;ide2;net0
cores: 12
cpu: host
ide2: nvme_btrfs:iso/iKuai8_x64_3.7.6_Build202309081651.iso,media=cdrom,size=52604K
machine: q35
memory: 4096
meta: creation-qemu=8.0.2,ctime=1698058265
name: ikuai
net0: virtio=F6:9E:AC:C8:3B:64,bridge=vmbr0,firewall=1
net1: virtio=0A:58:E2:6F:14:21,bridge=vmbr0,firewall=1
net2: virtio=DA:36:A5:E6:93:9B,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: l26
scsi0: nvme_btrfs:101/vm-101-disk-0.qcow2,cache=unsafe,iothread=1,size=4G
scsihw: virtio-scsi-single
smbios1: uuid=cd6edce3-e6d4-44e2-abd7-f6907dcaf34c
sockets: 1
vmgenid: 42a99cea-820b-48fe-9ef5-2989a97e9758

可以用3.7.6安装后升级到3.7.7
三个虚拟网口

# 本文另外发布到恩山帖

https://www.right.com.cn/forum/thread-8310402-1-1.html

# 本文参考

https://www.right.com.cn/forum/thread-8252571-1-1.html

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