Loon知识库
问:什么是MitM?
答:
MitM
全称是Man-in-the-middle attack
,中文简称中间人攻击
,具体参见维基百科的解释。Loon下的MitM
是用来解密HTTPS请求产生的加密数据的,这些数据只有解密后Loon才能进行复写、脚本注入等篡改操作。问:什么是复写?
答:复写是专门用来处理
HTTP/HTTPS
类型的构造请求,在请求未发出前,根据所设定的复写类型和内容来修改请求数据,复写仅针对HTTP请求或者解密后的HTTPS请求有效。问:什么是脚本?
答:Loon下的脚本特指使用
JavaScript
语言编写的可运行在JavaScriptCore
框架下的代码。问:为什么URL-REGEX规则没效果?
答:对于HTTP请求,
URL-REGEX
类型的规则可以直接进行匹配;但对于HTTPS请求必须先对其相关域名进行MitM解密后才能匹配,因为HTTPS是加密请求,需要解密后获得URL才能完成匹配。问:为什么USER-AGENT规则没效果?
答:对于HTTP请求,
USER-AGENT
类型的规则可以直接在HTTP Proxy&TUN
混合模式和TUN Only
模式下进行匹配。而HTTPS请求在 iOS15 之前,HTTP Proxy&TUN
混合模式下是可以直接匹配的,但是 iOS15 之后,Apple不再给CONNECT
类型的请求携带User-Agent
,这就导致HTTPS类型的请求必须要通过MitM
解密后才能获取到User-Agent
,所以HPPTS类请求必须经过MitM
解密后才能匹配USER-AGENT
类规则。问:Loon有没有通配符规则?
答:没有
问:单纯的IP类请求会查本地DNS吗?
答:不会
问:为什么会提示策略组循环引用异常?
答:在Loon中,节点、筛选节点、策略组都可以作为一个子策略,所以节点名称、筛选节点名称、筛选组名称不能同名,否则会因为同名而无法查询到具体的策略从而导致报错。
问:不同类型的规则之间,查询效率有什么区别吗?
答:
DOMAIN = DOMAIN-SUFFIX = DOMAIN-KEYWORD = IP-CIDR = IP-CIDR6 = IP-ASN = GEOIP = USER-AGENT > URL-REGEX
这里面的
URL-REGEX
类规则是一条一条匹配的,而其他类型的规则匹配一条和匹配十万条的消耗时间是一样的。问:规则和复写里的
DIRECT/REJECT
等类型的书写格式为什么没有保持大小写统一?答:由于二者大部分的类名存在同名情况,为了表示区分,规则的类名必须要大写,复写的类名必须要小写,否则会匹配不到。
问:规则里的
REJECT
和复写里的reject
在执行效率上有差别吗?答:如果规则里的域名使用的是
DOMAIN
类型,则规则里的REJECT
执行效率会比复写里的reject
执行效率更高。如果规则里的域名使用的是URL-REGEX
类型,则二者执行效率一致。问:解密的主机名支持IP和通配符吗?
答:
1*.126.*
或者*.a.com
这样的写法Loon都是支持的。问:支持类似
.120.
或115.1.
或者128.0
的IP类DOMAIN-KEWORD写法吗?答:不支持,请使用CIDR写法。
问:切换网络后,DNS缓存会清除吗?
答:需要在DNS服务器配置页面关闭持久化DNS缓存才会自动清除,但是DNS记录会完整保存。另外,应之前用户的要求,切换网络后不再清除DNS记录,避免被误认为BUG。
问:ssid-trigger和ssid策略有什么区别和优劣之分吗?
答:
ssid-trigger
参数会对全局流量模式产生影响,它通过监听Wi-Fi变化,按照用户配置的参数切换流量模式。它只能使用DIRECE
、PROXY
和RULE
三个参数,分别代表全局直连、全局代理、自动分流,作用于全局。当它运行在全局直连的模式下时,REJECT类规则会全部失效,但复写和脚本不会失效。ssid
策略则只针对某一个策略组产生影响,它也是通过监听Wi-Fi变化来实现的,但是它可以指定策略组,且不会让REJECT类规则失效。从体验上来讲,它带给用户的体验是最好的。问:可以给GEOIP规则添加no-resolve参数吗?
答:可以,但不建议这么做,因为
no-resolve
参数的含义是只对IP类规则匹配,而不对域名类请求匹配。
举个例子,我们需要给阿里云的DoH地址增加一个直连规则,阿里云的DoH域名是
dns.alidns.com
,对应的IP地址是223.5.5.5
。 以
IP-CIDR
规则为例可以写为:IP-CIDR,223.5.5.5/32,DIRECT
;当你无论用域名或者IP直接发起请求的时候,这条规则都可以匹配上; 现在加上
no-resolve
参数可以写为IP-CIDR,223.5.5.5/32,DIRECT,no-resolve
,这时仅仅在使用此IP发起请求的时候会匹配到该规则,用dns.alidns.com
域名请求时则不会匹配。 所以一个请求是纯IP类的(Telegram直接用IP发起请求)那么就需要设置
no-resolve
参数,从而减少其他域名类的请求为了匹配这条规则进行不必要的DNS查询; 如果一个请求同时会使用域名或者IP,那么就不需要添加
no-resolve
参数,比如常用的GEOIP,cn,DIRECT
就不需要,否则会有很多域名类型的请求不会匹配到该规则,从而被兜底处理。问:no-resolve参数在使用时有什么需要注意的吗?
答:
no-resolve
参数在实际使用时有着严格的书写格式要求,需要参考下面的格式书写# 错误的书写格式
IP-CIDR, 162.14.132.109/32, no-resolve, DIRECT
IP-CIDR6, 2402:4e00:1200:ed00:0:9089:6dac:96b6/128, no-resolve, DIRECT
IP-ASN, 4134, no-resolve, DIRECT
# 正确的书写格式
IP-CIDR, 162.14.132.109/32, no-resolve
IP-CIDR, 162.14.132.109/32, DIRECT, no-resolve
IP-CIDR6, 2402:4e00:1200:ed00:0:9089:6dac:96b6/128, no-resolve
IP-CIDR6, 2402:4e00:1200:ed00:0:9089:6dac:96b6/128, DIRECT, no-resolve
IP-ASN, 4134, no-resolve
IP-ASN, 4134, DIRECT, no-resolve
问:为什么我只能直连?
答:盗版和共享用户会被限制,请购买正版支持开发者。
问:为什么一些国内的请求会被代理?
答:具体原因如下
- 由于DNS返回的查询的结果完全是由DNS服务器决定的,所以对于具有全球节点的域名,有可能返回不同地区的IP结果,即便是使用ECS也无解;
- 出现此问题时可以选择清除DNS记录,或者重启Loon来获得新的查询结果,以改善此问题;
- 由于所有的请求最终走向哪里,都是由DNS服务器返回的查询结果所决定的,故无法通过添加直连规则来解决请求走向境外的问题。即便添加了直连规则,鉴于已经获得了DNS服务器返回的境外IP结果,所以最终还是会通过直连的方式连接到境外IP;
- 确认你的微信是否绑定了境外手机号,如果是境外手机号则必定走代理。如果节点质量较差,建议增加直连规则,此时直连到境外的效果可能会比使用节点效果更好。
问:Loon的PROXY是内置策略组吗?
答:不是,Loon并没有内置
PROXY
策略组。当配置中不存在任何策略组时,PROXY
将使用用户在策略页面选择的节点,当配置中存在策略组时,则PROXY
没有任何意义。问:为什么我给插件指派了代理策略却不能代理?
答:如果指派的策略或节点不存在,Loon将会遵循无法找到策略的逻辑自动为插件的
PROXY
项指派所有节点里的第一个节点,无论该节点是否有效。问:Final是什么意思?
答:
Final
在代理工具中最完美的翻译为“兜底”——该词语原义为“把底细全部揭露出来(多指隐讳的事)”。自2016年《现代汉语词典》第7版起,“兜底”增加了第二义,即“把剩余部分都承担下来”。在Loon应用里,兜底代表其他规则没有处理的,都会被兜底接管处理。问:为什么我启用IPv6后打不开Facebook和Twitter?
答:这类应用在
TUN模式
下会使用QUIC协议
,如果节点不支持UDP
的话就会直连,此时Loon就会在本地进行DNS查询,从而导致获得IPv4和IPv6的DNS查询结果时优先使用IPv6地址通讯,如果此时你的节点又不支持IPv6自然就打不开了。 不过,IPv4和IPv6的自动优先级和自定义优先级已经在计划中了,现阶段你只能通过添加规则才能解决这个问题。
问:什么是插件?
答:插件是规则、复写、脚本及通用参数的集合,它相当于一个子配置,可以只包含其中一部分,插件的插件结构和可配置的通用参数如下:
#!name= 插件的名称,不可换行。
#!desc= 插件的功能描述,不可换行。
#!author= 作者署名,可用空格分隔多位作者的署名。
#!openUrl = 插件配置的链接,此链接可在插件界面点击该插件配置的链接跳转,仅允许配置一条链接。此链接一般用来配置教程地址、配套的前端界面地址等。
#!homepage= 插件的项目主页,此链接可在插件界面点击该插件的作者署名跳转,仅允许配置一条链接,一般用来配置插件的作者主页等。
#!icon= 插件的图标,需要80px的直角图标。
[General]
bypass-tun =
skip-proxy =
real-ip =
dns-server =
doh-server =
doq-server =
doh3-server =
force-http-engine-hosts =
[Rule]
[Rewrite]
[Host]
[Script]
[Mitm]
问:为什么Loon的延时测试会比其他软件高?
答:由于Loon采用了自己的延时统计方法,所以可能与其他同类工具的测得的延时有所差异:
如图,前面的延时是建立TCP连接时的三次握手时间总和,后面的延时是发出HTTP HEADER请求后第一次获得响应的时间,它的响应成功与否决定了服务器是否可用。
需要注意的是,自动策略组是对其策略组里配置的
Test-URL
地址做测试,而手动选择策略组的延时则是针对General
里的proxy-test-url
地址做测试。问:脚本的内存占用如何查看?
答:你需要进入脚本任务中查看,当前任务项目的右侧会有上下两部分的内存数值,上面的数值为脚本运行前的内存用量,下面的数值为脚本运行时的峰值内存用量,二者相减即为此脚本的最大内存用量。
由于不同的iOS版本对
NetworkExtension
框架的内存使用量有着不同的限制,如iOS 15及以上的版本拥有50MB的内存使用量,而iOS 9~iOS 14的版本则只有15MB的内存使用量。所以,当超过NetworkExtension
框架所允许的内存上限时,此处的内存数值将显示为红色字样。问:Loon限制设备数量吗?
答:设备数量是限制的,但是对正版用户无影响,具体规则如下
- 当iCloud账号相同时,不限制设备数量;
- 当iCloud账号不同时,限制3个iCloud验证和绑定;
- 当未登录iCloud账号时,限制5台设备;
- 无论是iCloud账号还是设备本身,一旦激活绑定,不可解绑;
- Loon Lite暂未限制设备数量,但不承诺未来不限制。
你可参考下面的图片了解什么是iCloud账户
什么是iCloud账户
设备ID
改变,从而导致被误判为新设备,所以一旦提示设备超出限制请不必慌张,请打开设备的设置并按照下图打开Loon的iCloud同步权限即可解除限制。