Loon知识库

发布时间 2023-05-27 17:02:38作者: 视觉书虫

 

问:什么是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变化,按照用户配置的参数切换流量模式。它只能使用DIRECEPROXYRULE三个参数,分别代表全局直连、全局代理、自动分流,作用于全局。当它运行在全局直连的模式下时,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
 
问:为什么我只能直连?
答:盗版和共享用户会被限制,请购买正版支持开发者。
 
问:为什么一些国内的请求会被代理?
答:具体原因如下
  1. 由于DNS返回的查询的结果完全是由DNS服务器决定的,所以对于具有全球节点的域名,有可能返回不同地区的IP结果,即便是使用ECS也无解;
  2. 出现此问题时可以选择清除DNS记录,或者重启Loon来获得新的查询结果,以改善此问题;
  3. 由于所有的请求最终走向哪里,都是由DNS服务器返回的查询结果所决定的,故无法通过添加直连规则来解决请求走向境外的问题。即便添加了直连规则,鉴于已经获得了DNS服务器返回的境外IP结果,所以最终还是会通过直连的方式连接到境外IP;
  4. 确认你的微信是否绑定了境外手机号,如果是境外手机号则必定走代理。如果节点质量较差,建议增加直连规则,此时直连到境外的效果可能会比使用节点效果更好。
 
问: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同步权限即可解除限制。