subconverter进阶使用教学

好久没水文章了,在wjh师傅的催更下来写一篇。

前情提要

过去我曾写过一篇subconverter订阅转换及搭配 clash 使用教程

简要介绍了一下subconverter和clash的使用小技巧

本篇将要在原基础上更进一步,透过自定义的subconverter来获得更好的上网体验

本文所解决的问题

会想要做进一步的修改自然是因为实际使用遇到了一些问题:

  • Clash存在DNS泄露
  • 使用FakeIP后公司内网的DNS解析无法正常获取
  • 国域网访问比蜗牛还慢

实际上,为了方便大家使用,已经创建了一个项目来存放相关配置以及创建容器镜像来(如果可以请给我的项目加星 orz )

实际解决思路

解决DNS泄露问题

首先就是修改外部配置文件了,在subconverter订阅转换及搭配 clash 使用教程所介绍的配置目前已不太适用,请参考下面的配置

[custom]
;不要随意改变关键字,否则会导致出错

;设置规则标志位
ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list
ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/UnBan.list
ruleset=🛑 全球拦截,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list
ruleset=Google,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Google.list
ruleset=Google,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/GoogleFCM.list
ruleset=Google,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/GoogleCN.list
ruleset=Google,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/GoogleCNProxyIP.list
ruleset=📺 巴哈姆特,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Bahamut.list
ruleset=📺 Youtube,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/YouTubeMusic.list
ruleset=📺 Youtube,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/YouTube.list
ruleset=🔰 节点选择,rules/ConnersHua/Surge/Ruleset/Global.list
ruleset=🍎 苹果服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Apple.list
ruleset=⚙️ 开发者,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Developer.list
ruleset=⚙️ 开发者,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Github.list
ruleset=Netflix,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Netflix.list
ruleset=Netflix,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/NetflixIP.list
ruleset=🔞 R18,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Porn.list
ruleset=🖼️ Pixiv,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Pixiv.list
ruleset=⚙️ 开发者,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Developer.list
ruleset=⚙️ 开发者,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Github.list
ruleset=Disney+,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/DisneyPlus.list
ruleset=✈️ Telegram,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Telegram.list
ruleset=🪟 巨硬服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Microsoft.list
ruleset=🪟 巨硬服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/OneDrive.list
ruleset=🎮 Xbox,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Xbox.list
ruleset=🕹︎ Nintendo,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Nintendo.list
ruleset=🖥️ PC游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Epic.list
ruleset=🖥️ PC游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Steam.list
ruleset=🖥️ PC游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Blizzard.list
ruleset=🤖 AI相关,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/OpenAi.list
ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaIpV6.list
ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Download.list
ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list
ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/UnBan.list
ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list
ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaMedia.list
ruleset=REJECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list
ruleset=REJECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list
ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaCompanyIp.list
ruleset=DIRECT,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaIp.list
ruleset=DIRECT,[]GEOIP,CN,no-resolve
ruleset=🐟 漏网之鱼,[]FINAL
;设置规则标志位

;设置分组标志位
custom_proxy_group=🔰 节点选择`select`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]流媒体`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=✈ 手动选择`select`.*
custom_proxy_group=Disney+`select`[]🔰 节点选择`[]🇹🇼 台湾地区`[]🇸🇬 新加坡`[]🇹🇼🇸🇬 中文地区`[]流媒体`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=Google`select`[]🔰 节点选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=📺 Youtube`select`[]🔰 节点选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=⚙️ 开发者`select`[]🔰 节点选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=🕹︎ Nintendo`select`[]🔰 节点选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=🖥️ PC游戏平台`select`[]🔰 节点选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=🎮 Xbox`select`[]🔰 节点选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=🤖 AI相关`select`[]🔰 节点选择`[]🇹🇼 台湾地区`[]🇸🇬 新加坡`[]🇹🇼🇸🇬 中文地区`[]流媒体`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=🖼️ Pixiv`select`[]🔰 节点选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=✈️ Telegram`select`[]🔰 节点选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=📺 巴哈姆特`select`[]🇹🇼 台湾地区`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`(台)
custom_proxy_group=🍎 苹果服务`select`[]🔰 节点选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=🪟 巨硬服务`select`[]🔰 节点选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=🔞 R18`select`[]🔰 节点选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=Netflix`select`[]🔰 节点选择`[]🇹🇼🇸🇬 中文地区`[]流媒体`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼 台湾地区`[]🇸🇬 新加坡`[]🇯🇵 日本国`[]🪙超低倍率0.2`[]DIRECT
custom_proxy_group=🌏 全球直连`select`[]DIRECT`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换
custom_proxy_group=🛑 全球拦截`select`[]REJECT`[]DIRECT
custom_proxy_group=🐟 漏网之鱼`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`[]DIRECT
custom_proxy_group=✈ 延迟最低`url-test`.*`http://www.gstatic.com/generate_204`500
custom_proxy_group=✈ 故障切换`fallback`.*`http://www.gstatic.com/generate_204`500
custom_proxy_group=🌏 亚洲及大洋洲`url-test`(台|新|日|韩|马来|印度|澳大利亚|新西兰)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🌍 欧洲及中东地区`url-test`(英|法|德|阿姆斯特丹|荷兰|土耳其|比利时|瑞士)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🇺🇸🇨🇦 北美通用`url-test`(美|加拿)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🇹🇼🇸🇬 中文地区`url-test`(台|新)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🇹🇼 台湾地区`url-test`(台)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🇯🇵 日本国`url-test`(日)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🇸🇬 新加坡`url-test`(新加坡|R新|s新)`http://www.gstatic.com/generate_204`500
custom_proxy_group=流媒体`url-test`(R台|s台|R新|s新|流|流媒体)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🪙超低倍率0.2`url-test`(0.2)`http://www.gstatic.com/generate_204`500

;设置分组标志位
enable_rule_generator=true

overwrite_original_rules=true

exclude_remarks=(到期|官方|Traffic|Expire|剩余|时间|官网|产品|香港|俄罗斯)

enable_rule_generator=true
overwrite_original_rules=true

添加redir-port配置

redir-port是Linux 系统中iptables 的一个模块,它可以将来自特定来源IP 地址和端口的网络流量重定向到另一个目标IP 地址和端口。 这是一种防火墙规则,通常用于将内部网络中的流量重定向到特定的服务器或服务上,或者将流量从一个端口重定向到另一个端口

具体请看 项目地址

为subconverter添加DNS部分的配置模板

由于subconverter默认转换时并不会附带DNS部分的配置,需要客户端进行添加,所以在这里我们直接通过修改subconverter的模板来实现向配置文件添加

dns:
  enable: true
  listen: 127.0.0.1:8853
  default-nameserver:
    - 223.5.5.5
    - 8.8.4.4
  ipv6: false
  enhanced-mode: fake-ip
  nameserver:
    - 119.29.29.29
    - 223.5.5.5
    - tls://223.5.5.5:853
    - tls://223.6.6.6:853
    - tls://120.53.53.53
    - tls://1.12.12.12
  fallback:
    - https://1.0.0.1/dns-query
    - https://public.dns.iij.jp/dns-query
    - tls://8.8.4.4:853
  fallback-filter:
    geoip: false
    ipcidr:
      - 240.0.0.0/4
      - 0.0.0.0/32
      - 127.0.0.1/32
    domain:
      - +.facebook.com
      - +.twitter.com
      - +.google.com
      - +.googleapis.com
      - +.google.cn
      - +.googleapis.cn
      - +.xn--ngstr-lra8j.com
      - +.googlevideo.com
      - +.gvt1.com
      - +.gmail.com
      - +.youtube.com
      - +.youtu.be
      - +.gvt0.com
      - +.gvt2.com
      - +.gvt3.com
      - +.gstatic.com
      - +.265.com
      - +.2mdn.net
      - +.app-measurement.com
      - +.c.admob.com
      - +.clickserve.dartsearch.net
      - +.crl.pki.goog
      - +.doubleclick.net
      - +.firebase-settings.crashlytics.com
      - +.google-analytics.com
      - +.googleadservices.com
      - +.googleanalytics.com
      - +.googleoptimize.com
      - +.googlesyndication.com
      - +.googletagmanager.com
      - +.googletagservices.com
  fake-ip-filter:
    {% include "include/cn-list.txt" %}
    {% include "include/a-list.txt" %}

具体请看 项目地址

fake-ip-filter

fake-ip-filter
部分所添加的为国域网的域名清单,这边默认给的不多,也就七万多条,其作用是当DNS查询匹配这些域名时,并不会使用FakeIP,而是返回正确的解析,一方面这能提高国域网的访问速度,另一方面,你也可以通过添加自定义的内容(例如公司内网的域名)来获取真实的地址,防止开启代理的同时无法正常访问内网网站

如果你有自己的订阅转换服务器可以参考下面的方法进行自定义:

首先运行一个容器

docker run --name tester mrxianyu/subconverter:latest

将容器内的all_base.tpl拷贝至本地的项容器目文件夹中(下面操作均是在本地的项容器目文件夹中进行的)

docker cp tester:/base/base/all_base.tpl ./

将include文件夹拷贝出来

docker cp tester:/base/include ./

此处我们假设需要自定义的域名列表(格式参考include文件夹下已存在的文件)写在include/URL.txt

接着我们向的all_base.tpl中的fake-ip-filter部分写入引用这个文件

..............
      - +.firebase-settings.crashlytics.com
      - +.google-analytics.com
      - +.googleadservices.com
      - +.googleanalytics.com
      - +.googleoptimize.com
      - +.googlesyndication.com
      - +.googletagmanager.com
      - +.googletagservices.com
  fake-ip-filter:
    {% include "include/cn-list.txt" %}
    {% include "include/a-list.txt" %}
    {% include "include/URL.txt" %}
.............

最后使用如下示例dockercompose文件启用正式的订阅转换服务器即可

version: '3'
services:
  app:
    image: mrxianyu/subconverter
    container_name: subconverter
    restart: unless-stopped
    volumes:
      - ./pref.toml:/base/pref.toml:ro
      - ./include:/base/include:ro
    ports:
      - '25500:25500'

subconverter进阶使用教学
https://blog.xianyu.one/2024/04/09/sub-server-re/
作者
咸鱼
发布于
2024年4月9日
许可协议