标签 TUN 下的文章

前言

最近在闲鱼上淘了一个二手 macbook m1 air 16+512,想着把 windows 上的 singbox 搬过去。因为之前都是跑的纯内核,所以这时也打算用纯内核来跑。

遇到第一个问题,配置文件是 1.11 时候写的,但是很多带 provider 的 singbox 修改版,都没有历史版本,不打 tag,编译出来的都是最新版本,或者是有 1.11 Tag,Fork 了一下自己跑 Github action,但是编译出来的是原版。或者是原仓库之前 action 跑过的,很多产物都已经失效了无法下载。

后面只能尝试用 1.12 版本,找了一个仓库 lux5am/sing-box,这个看着是挺不错的,然后下载了个 1.12 版本,但是配置跑不起来,一直报错 loop on detour: direct

+0800 2026-01-21 20:07:33 INFO network: updated default interface en0, index 11
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set geosite-microsoft from URL: https://github.com/CHIZI-0618/v2ray-rules-dat/raw/refs/heads/release/singbox_rule_set/geosite-microsoft.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set category-ads-all from URL: https://raw.githubusercontent.com/CHIZI-0618/v2ray-rules-dat/release/singbox_rule_set/geosite-category-ads-all.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set cn-domain from URL: https://raw.githubusercontent.com/CHIZI-0618/v2ray-rules-dat/release/singbox_rule_set/geosite-cn.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set category-games@cn from URL: https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-category-games@cn.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set alibaba from URL: https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-alibaba.srs
+0800 2026-01-21 20:07:33 INFO outbound/direct: outbound connection to github.com:443
+0800 2026-01-21 20:07:33 DEBUG dns: lookup domain github.com
+0800 2026-01-21 20:07:33 INFO outbound/direct: outbound connection to raw.githubusercontent.com:443
+0800 2026-01-21 20:07:33 INFO outbound/direct: outbound connection to raw.githubusercontent.com:443
+0800 2026-01-21 20:07:33 DEBUG dns: lookup domain raw.githubusercontent.com
+0800 2026-01-21 20:07:33 DEBUG dns: lookup failed for github.com: loop on detour: direct

改了半天配置,又去参考了一下别人的,或者是换另外一个仓库的 1.12 修改版,最终都跑不起来,折腾了好久最终是放弃了。然后想着,如果后面又遇到这种问题,再加上 singbox 的配置语法经常变更,后面又得折腾一下,想了想还是换内核吧。

那也没啥好选了,只能是 mihomo 了。于是就弄了一下这玩意的开机自启。

配置开机自启

主要是参考:OKHK ✨ macOS 上 配置 Launchctl 运行 Clash Meta(Mihomo)内核服务
其实里面文件的路径应该是能变的,但是我为了复制方便,直接就用文章的了 。

核心文件准备

sudo mv mihomo-darwin-arm64-v1.19.19 /usr/local/bin/clash
sudo chown root clash
sudo chmod +x clash
mkdir -p /Users/app/.config/clash
mv config.yaml /Users/app/.config/clash
chmod 644 /Users/app/.config/clash/config.yaml

launchctl 配置文件

/usr/local/bin/start_clash_with_dns.sh:设置 dns + 启动核心

#!/bin/bash set -e

export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" export HOME="/Users/app" timeout=120
elapsed=0
while [ $elapsed -lt $timeout ]; do if scutil --dns | grep -q "nameserver"; then
        networksetup -setdnsservers Wi-Fi 198.18.0.2
        echo "$(date) DNS:198.18.0.2" >> /Users/app/.config/clash/clash_dns.log
        break fi sleep 5
    elapsed=$((elapsed + 5))
done exec /usr/local/bin/clash -d /Users/app/.config/clash


/Library/LaunchDaemons/clash.plist:launchctl plist 配置文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>clash</string> <key>ProgramArguments</key> <array> <string>/bin/bash</string> <string>/usr/local/bin/start_clash_with_dns.sh</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/Users/app/.config/clash</string> <key>StandardOutPath</key> <string>/Users/app/.config/clash/clash_stdout.log</string> <key>StandardErrorPath</key> <string>/Users/app/.config/clash/clash_stderr.log</string> </dict> </plist> 


授予权限:

sudo chown root /Library/LaunchDaemons/clash.plist
sudo chmod 644 /Library/LaunchDaemons/clash.plist
sudo chown root /usr/local/bin/start_clash_with_dns.sh
sudo chmod +x /usr/local/bin/start_clash_with_dns.sh

启动服务

第一次启动用下面的命令,如果是已经 load 过的,用下面的 alias 的 startclash。
反复 load 会出错或者是 unload 还没有 load 的也会出错,但是错误日志没有具体怎么写,这里提醒一下。

sudo launchctl load /Library/LaunchDaemons/clash.plist

一些常用命令

重启

sudo launchctl unload /Library/LaunchDaemons/clash.plist
sudo launchctl load /Library/LaunchDaemons/clash.plist

alias 用于方便手动控制:

alias stopclash='sudo launchctl stop clash && networksetup -setdnsservers Wi-Fi Empty && sudo launchctl list | grep clash' alias startclash='sudo launchctl start clash && networksetup -setdnsservers Wi-Fi 192.168.0.2 && sudo launchctl list | grep clash' 

uu 远程连接不上

tun 启动之后不知道为什么 uu 远程用不了,显示没有网络链接。
问了一下 AI,给了一些方法,现在虽然是解决,但我不知道具体是哪个命令解决的。
这里我都贴出来有遇到的老友可以试一试这一些方法,如果关闭 clash 之后没有网络,可以开关一下 wifi,这样就有网络了。

sudo route -n flush
sudo ifconfig en0 down
sudo ifconfig en0 up
sudo pkill -f "uu\|tun" sudo rm /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

sudo route -n flush 这个可以执行多次,时不时执行一下,比如关闭 uu 远程之后,打开了之后。
如果实在不行就把 uu 远程卸载了,重启电脑,再安装上,然后再试试。不行的话就再执行一下上面这些命令。
查看路由表: netstat -rn -f inet


📌 转载信息
转载时间:
2026/1/24 06:41:06

一套基础功能完善的代理解决方案,实现:1. 多订阅统一分流规则 2. 自定义多组自动选取 3. 跨端同步配置 4.TUN 与应用白(黑)名单 5. 日志与连接监控 6.FakeIP 与 DNS 分流 7. 内置开箱即用分流规则

下载

  • Win:github release 下载 exe

  • Linux:release 有 deb rpm appimage,arch 的 aur 可下载 PKGBUILD 改为最新版本本地 makepkg -si

跨端同步配置

同步方式

  • 局域网下在应用中生成与扫描二维码完成同步,如果无法局域网同步,可以导出导入配置使用

跨端同步配置冲突

  • 分流,TUN 等配置都是单个的可选项,在安卓端同步桌面端配置建议取消勾选 TUN 避免覆盖安卓端绕过应用的配置

安卓端分应用代理

  • 可参考如下配置

  • 白名单是√了的才走代理

  • 如下为关闭,只有√了才绕过,默认是走代理,适用于需要代理的应用远多于不需要的

IP 自检与测速

相关站点

  • 常用站点,用于检查节点 IP 与风控程度
  • 常用测速

分流规则设置

分流规则的作用

  • 为什么需要分流规则? - 1. 绕开 IP 限制与风控 2. 在对部分服务(如 AI)维持 1 的基础上部分(如 Google 搜索)服务选择速度较快的节点 3. 保持部分服务(如 X)IP 区域

  • 使用后的示例场景:在使用 HK 节点减小 Google 搜索时延的基础上,通过 US 节点保持 AI 服务最新(Google AI 相关服务优先 US 上线),使用 JP 节点访问社媒 X,获取相关区域内容推荐

  • 不使用的示例场景:使用了没有解锁的节点导致不能访问,原因包括:1. 处于不提供服务的区域(AI 限制,OpenAI,Claude,Gemini,HK 节点无法访问),日厂游戏锁 JP 2. 节点风控(Youtube 可访问但点不开视频 / 一步一个 CF 人机验证) 3. 节点在某些站点跳 CN 或 HK(可访问某些网站但 xx 不可访问)

常用分流区域

  • 在不考虑节点自身特殊情况下,一般常用以下区域的节点:

    • US(Google 服务优先于 US 上线,部分时候仅限 US)

    • JP(日厂游戏锁 IP,社交媒体,流媒体审核)

    • HK(地域上近,时延低,B 站港澳台)

    • TW(巴哈姆特动画站点等锁 TW IP)

    • KR,SG(地域上近,时延相对低)

分流规则的干扰项

  • 节点的解锁情况会影响到分流的设置决策,如 HK 节点如果以其他区域解锁 AI,也可以访问 AI 服务

  • 一般机场测评与群中(各类 tg 频道)都有类似以下的表格,写明节点各流媒体等解锁情况,如要付费,建议先了解解锁情况

分流规则的潜在问题

  • 对规则是否覆盖全面,是否相关联的均在一个分流组内有要求,网站的主站点可能与相关存储站点使用不相同甚至不直接相关的域名,比如油管有用到谷歌的存储,如果这时候分流规则里没有将两块合在一个规则下,可能出现跨域无法访问或跨国访问较慢的问题,如果此时仍需要分流,可以配合在线面板排查相关域名问题,自行补充分流规则

IP 风险数据参考

  • ip 风险可参考

较好

较差

  • 可以点开 threats 查看相关风险项,比如如果在 VPN 一项有,可能在注册一些域名站点与访问站点时被识别成 VPN 禁止访问

karing 分流规则实践

  • 不同机场自带分流配置质量参差不齐,建议使用配置覆盖,保持分流规则的一致性

基本操作

  • 在分流规则界面下,选中自定义分流组,选中禁用机场分流,在右上角点击笔状按钮添加所需规则(如果不清楚应该加入哪些,可参考防止 DNS 泄露部分设置)
  • 进入编辑界面,可点击具体分流规则进行编辑,右键省略号图标可添加新分流规则,+ 添加为自定义规则,第二个添加为预设规则
  • 编辑界面与添加预设界面,可以在添加预设里勾选需要的规则

  • 单击对应分流组可自行补充分流相关

特殊分流

  • GA(自定义,可选) - 写在广告拦截前,避免 Google Analysis 被当广告拦截,如果不使用相关服务,可以不加

  • 可以考虑合并 AI 相关为一个分流组,用于 AI 相关访问

  • linux.do(自定义) - 用于直连网站 (初次时 L 站仍可直连

排查漏网之鱼

  • 由于右上角的连接状态不能搜索,通常使用设置里的在线面板
  • 通过连接 tab 下搜索对应域名排查所走规则,如果不合适将对应域名或域名后缀修改到适合的分流组里即可
  • 比如此处将 parsec 远程连接,发现走到了代理,网络延迟达到 100ms 以上,将其对应的进程修改为走直连后,延迟降到个位数 ms

进阶实践 - 自定义自动选择(不推荐)

  • 理论上可以将同区域放一个自动选择组里,设置好后无感使用,但实测尽管检查节点存活时间设置已经为较大值,仍会频繁切换节点,容易被风控,不推荐使用

  • 功能在分流→自定义自动选择,比如此处将不同机场的 US 节点聚合起来使用

TUN 与系统代理

概念区别

  • 一段取自 Karing 文档的系统代理与 TUN 概念上的区别
  • 规则 → 按分流规则走代理

  • 全局 → 无视分流规则走代理

  • 代理 → 支持代理(如果软件不支持,需要通过 fiddler 这类应用相关应用提供支持,通过 fiddler 代理对应应用的流量)且设置了代理的应用按照规则 / 全局走代理

  • TUN → 所有应用按照规则 / 全局走代理

使用区别

  • 在支持代理的应用中,如果仅使用系统代理,需要自行在所有需要代理的软件中全部作代理相关设置(如果设置变更,比如代理端口,对应所有应用都需要更改,除非自动识别),TUN 模式下不需要任何的配置,也不需要软件支持代理,可以无感地使用代理,常见代理模式下需要自行设置的场景包括:

    • 终端 PowerShell

    • 比如 wget 等命令行程序的对外访问依赖于相应 shell 的代理设置

    • 系统代理在没有设置 https_proxy 与 http_proxy 两个环境变量的情况下,wget 会超时取不到 index.html,TUN 模式不需要这些设置

    • git

    • 印象里 windows 下 git 是不走命令行的环境变量的,需要使用自己的代理设置,比如如下全局的 http 与 https 代理设置(访问本地应用不应写成 https)

    • 配置后可以稳定高速的使用 git clone(此处示例 fatal 为 ctrl + c 中断)

    • TUN 下置空两个代理设置一样正常访问

    • JavaScript 的 fetch api,参考下文设置,本身是 fetch api 需要引入依赖的 undici 显式设置代理,也是个不认环境变量的

    • Docker,参考下文 Docker 代理问题,pull 镜像的时候也是需要自行配代理

Windows 下以 TUN 自启

  • 可以先试试 karing 文档里的方法,实测在 win11 24h2 不一定生效,无法 TUN 自启
  • linux 自行在桌面设置启动即可,TUN 只需要在初次使用或更新后初次使用输入 sudo 密码,往后不再需要

引入

  • Windows 下 TUN 模式开启需要以管理员权限启动程序,而软件设置的开机自启不能以管理员权限启动程序,使得每次开机需要自行右键管理员权限启动,比较麻烦,以下展示如何通过任务计划实现以管理员身份开机自启 Karing

  • 注:安卓上默认开启 TUN 模式,结合绕开代理的应用设置很好用

  • 开启 TUN 后的图标显示

[2026.1.6] Karing 施法指北35

  • 在网络设置应看到

流程

  • win 键起手,任务计划程序
可以顺手禁用夸克自动更新
  • 右边创建任务,在常规 tab 下,名字自选,描述自选,选中使用最高权限
  • 触发器 tab,设置登录时(不是启动时),选中特定用户
  • 操作 tab,选择启动程序,找到 karing 的快捷方式或安装目录下的 exe 程序
  • (仅笔记本)条件 tab,取消两个电池相关选项(勾选即电池供电时不运行此任务)
  • 设置 tab,勾选过了开始时间立即启动
  • 确定后完成创建任务,回到 karing 关闭自启选项

  • 可重启验证是否成功自启与 TUN 自动开启

TUN 设置

  • 此处设置可以防止 DNS 泄露,哪怕不需要防止 DNS 泄露也可参考,因为重点是外网域名就应在代理服务器解析而不是本地

应用设置

TUN,DNS,分流,IPV6

  • DNS 参见如下设置,可以采用自动设置功能

  • 建议开启严格路由,防止请求同时发到 TUN 跟其他网络(win)

  • DNS 开启分流,代理解析为 FakeIP(dns 请求会在代理服务器完成,更快与正确的 CDN)
  • 分流规则,如果不能保证所有海外的流量都被前面拦截,关闭 acl,karing 的代理兜底 final 在所有规则之后,GeoSite,GeoIP 需要开,避免国内流量走代理,
  • 最终效果上,必须在仅开启 TUN 的基础上,不出现 DNS 泄露

  • 如有海外站点访问不了大概率节点风控,自行通过网络检测 debug

  • 取消 IPV6,开启存在因 IPV6 流量 DNS 劫持失败而泄露的问题
  • (可选)关闭浏览器安全 DNS,DNS 分流 + TUN FakeIP 不是很需要,境内流量可以走 udp,需要也可以 tls 与 https,但延迟会高些,境外直接丢给代理服务器做 DNS 解析,不需要此功能。如果仅使用系统代理,不使用 TUN,访问被 DNS 污染(但未被 SNI 阻断的站点),可以使用此功能,选择操作系统默认选项以外其他公共 DNS 即可。

from

to

核实测试

是否浏览器层面 DNS 泄露

  • 如果仅使用系统代理,或仅在浏览器层面希望不出现泄露,参考以下测试结果足以

  • 在设置里测试结果应类似于下方结果,不能有任何 CN 的,包括 IP 地址与测出的 DNS

是否分流规则正确

  • 确保国内站点访问为直连,一般延迟控制在较低水平(Baidu 可以除外,真的慢),也可在在线面板连接 tab 下进一步核查

是否 DNS 解析正确

  • 如果使用 TUN,希望包括本地应用等均不出现 DNS 泄露

  • 在浏览器测试之外,进一步地,可以检查 dns 解析与 Wireshark 抓包

  • 检查解析方法 - 检查 nslookup dns 解析

  • 应满足:

    • 1. 默认 nslookup 的 dns 请求(无论直连,代理)均发向 TUN 设定网关(karing 默认 10.20.0.2)(直连流量直接解析出目标 ip,代理流量返回 FakeIP,198.20.x.y,符合预期)

    • 2. 开启 DNS 劫持后,以任意 DNS 服务器请求解析,应返回统一的劫持后结果,即 198 开头的 FakeIP

    • 3. 直连与代理 DNS 请求均被拦截,仅直连 DNS 请求被放行

    • 访问油管,站点本身与相关的其他海外请求 DNS 进入 karing,但不从本地发出(通过代理协议包裹给了代理服务器作解析)

    • 访问 b 站,DNS 请求进入 karing,直接放行

    • (可选)可进一步确认,直连流量走的 DNS 服务器与设置相同

    • 类似地。在 Linux 上应有:

原理拓展阅读

  • 深入理解 TUN 工作流程,FakeIP 与更多相关知识

推荐阅读:

https://blog.skk.moe/post/what-happend-to-dns-in-proxy

https://blog.skk.moe/post/lets-talk-about-dns-cdn-fake-ip
(,好像不能显示预览,丢个图上去

常见问题与其他杂项

TUN 保留端口

  • 有部分端口可能被保留不可使用,对 8080,3306,6379 等常见不影响,但对 3000 有影响,可以自行更换端口使用

修改设置了没有起作用

  • 修改完需要回到主界面,等待自动断开重连后生效

添加更新配置与无法连接

  • 参考 Karing 文档中部分

界面卡顿

  • 删除最新版,下载 857 版本(上游 flutter 问题,新版已解决)

添加配置没有内容

  • UA 里仅勾选 clash-verge 或 V2Ray 再尝试

像 Clash 一样查看日志与断开某个连接

  • 设置 - 在线面板

批量导入节点过滤

  • 可以按正则规则导入配置时进行节点过滤

自定义自动选择组

订阅转换

  • 不需要,节点,订阅链接都可以直接导入

PKGBUILD 参考

pkgname=karing-bin
pkgver=1.2.10.1308
pkgrel=1
pkgdesc="Simple & Powerful proxy utility, Support routing rules for clash/sing-box"
arch=('x86_64')
url="https://github.com/KaringX/karing"
license=('GPL-3.0-or-later')
depends=('gtk3' 'libayatana-appindicator' 'glib2' 'libnotify' 'libsecret' 'xdg-user-dirs' 'zenity' 'libkeybinder3')
optdepends=('libappindicator-gtk3: for system tray icon support')
provides=('karing')
conflicts=('karing' 'karing-git')

source=("${pkgname}-${pkgver}.deb::https://github.com/KaringX/karing/releases/download/v${pkgver}/karing_${pkgver}_linux_amd64.deb")

sha256sums=('SKIP')

package() {
  cd "${srcdir}"

  bsdtar -xf "${pkgname}-${pkgver}.deb"
  bsdtar -xf data.tar.zst -C "${pkgdir}"

  find "${pkgdir}" -type d -exec chmod 755 {} \;
  if [ -d "${pkgdir}/usr/share/karing" ]; then
    find "${pkgdir}/usr/share/karing" -type f -name "karing" -exec chmod 755 {} \;
  fi

  rm -rf "${pkgdir}/usr/share/doc"

  install -dm755 "${pkgdir}/usr/bin"
  ln -sf "/usr/share/karing/karing" "${pkgdir}/usr/bin/karing"
}

( 连接无法复制过来,在此处补充正文缺失的连接:
IP 风控: https://ipdata.co/
测速:https://speed.cloudflare.com/ https://www.speedtest.net/
karing tun 与代理区别文档: FAQ | Karing - Clash compatible & Powerful proxy utility
fetch api 代理:https://blog.csdn.net/m0_58360315/article/details/137288725?spm=1001.2014.3001.5501
dns 泄露测试与分流: IPCheck.ing - Check My IP Address and Geolocation - Check WebRTC Connection IP - DNS Leak Test - Speed Test - Ping/MTR Test - Jason Ng Open Source

https://www.dnsleaktest.com/results.html

拓展阅读:

https://blog.skk.moe/post/what-happend-to-dns-in-proxy/
https://blog.skk.moe/post/lets-talk-about-dns-cdn-fake-ip/


📌 转载信息
转载时间:
2026/1/6 19:06:10