VPN 与代理
你的公网 IP 和 VPN 路由、代理应用、VPN 断网保护和泄漏测试。
VPN 与公网 IP
“健康 › 流量出口”、Wi-Fi 菜单和 kilobat ip 会显示默认路由使用的接口以及它是不是 VPN,信息来自这台 Mac 的路由表和 macOS 列为已连接的 VPN。如果 VPN 已连接但默认路由仍走 Wi-Fi(例如未设置出口节点的 Tailscale),会显示为“分流”:只有部分目标经过它。打开“设置 › 网络 › 查询公网 IP”,还能看到网站看到的地址:在网络变化时以及每 30 分钟向 Cloudflare 查询一次,并根据 Kilobat 内置的 DB-IP 数据显示其注册所在的国家或地区。该功能默认关闭,因为 Cloudflare 会看到这个请求;kilobat ip --public 只查询一次。注册国家或地区并不代表你或服务器所在的位置,它和 VPN 都不能证明连接是私密或匿名的。“设置 › 菜单栏 › VPN”会在蝙蝠旁显示“开启”“分流”或“关闭”(打开查询时附带国家或地区代码),历史记录会列出 VPN 何时开启或关闭、公网 IP 何时变化。
代理和 VPN
Kilobat 可以与代理应用(Clash Verge、ClashX、mihomo、Mihomo Party、FlClash、Surge、sing-box、Stash、V2Ray、Xray、Shadowsocks)和 VPN 一起使用。它只读取信息,从不转发流量,也不更改它们的设置。
- 流量计入正确的应用。通过本地代理发送流量的应用会计入它自己的流量,转发流量的代理核心或 VPN 隧道则标为“承载其他应用的流量”,不会重复计算。
- 每个应用走了哪条路线。使用兼容 Clash 的 API(Clash Verge、ClashX、mihomo、Mihomo Party、FlClash、sing-box 的 clash_api)时,应用的那一行会显示它经过的节点,例如“经由 HK-01 · 2 个直连”,提示中会列出每个主机、节点和规则。Kilobat 从该应用自己的配置中读取 API 地址和密钥,并且从不显示密钥。
- “健康 › 流量出口”中会显示的问题:
- 系统代理指向未运行的应用,这会让所有浏览器都无法上网;
- DNS 或 IPv6 绕过了 VPN;
- 代理和 VPN 同时在接管流量;
- 全局模式;
- 阻止功能看不到系统代理背后的应用。macOS 过滤器永远看不到发往 127.0.0.1 的连接,所以请打开代理的 TUN 模式,或在代理的规则中阻止该应用。
- 为什么连不上?会增加一个“代理应用”层,显示代理的模式及其当前节点的响应速度,并在问题出在失效节点时指出来。
在终端中:kilobat proxy、kilobat proxy routes --app Telegram、kilobat proxy test 和 kilobat vpn。如果 Kilobat 自己找不到某个代理核心,可以传入 --controller 127.0.0.1:9090 --secret …。智能体可以通过 get_proxy_status、test_proxy_nodes 和 check_vpn 获得同样的信息。
VPN 断网保护
拥有 Pro 并开启网络过滤器后,在“设置 › 网络”中打开VPN 断网保护。如果 VPN 断开,Kilobat 会阻止新连接,直到它恢复,这期间不会有任何内容经由咖啡馆或酒店的 Wi-Fi 发出。弹出窗口和仪表盘会显示已阻止:VPN 已断开,菜单栏中的蝙蝠会加上一把锁,通知中还会提供允许 5 分钟。
- VPN 连接后即启动。断网保护会等到 VPN 在 Mac 启动后第一次承载全部流量,所以没有 VPN 时打开它也绝不会让你断网。此后直到重新启动,只要 VPN 断开,它在任何网络上都会阻止,因为加入新网络的那一刻正是 App 最容易泄漏的时候。只承载部分目的地的分流 VPN 也视为断开。
- 仍可联网的有:VPN App 及其辅助程序和网络扩展(WireGuard、Tailscale、Mullvad、NordVPN、Proton VPN、ExpressVPN、Surfshark、Cisco Secure Client、GlobalProtect、OpenVPN Connect、Tunnelblick 等,以及 macOS 中有配置的任何 VPN App)、Apple 的网络服务(DNS、DHCP、证书检查、网络登录窗口、内建 VPN)、Kilobat,以及本地网络(除非你关闭它)。其他一切都要等待,不论其规则或配置如何,“不受限”也不例外。
- 临时放行。横幅、通知或菜单栏右键菜单中的允许 5 分钟会放行所有流量,方便打开网络登录页面或快速检查一下;之后如果 VPN 仍然断开,会重新阻止。关闭就在它旁边,“设置”中也有。
它做不到的事:过滤器只能看到新连接,所以 VPN 断开时已打开的连接会继续,不过大多会随所用的隧道一起断开。DNS 查询仍会发出,以便 VPN 找到它的服务器。如果 Kilobat 退出,过滤器会保持最后收到的状态,VPN 的隧道接口消失时仍会阻止;打开 Kilobat 即可允许流量或关闭断网保护。在终端中:kilobat settings kill-switch on,kilobat vpn 或 kilobat conditions 会显示它的状态;智能体通过 check_vpn 和 get_conditions 读取状态,set_kill_switch 会先询问你。
VPN 泄漏测试
在 VPN 打开时,点按“健康 › 流量出口”或“设置 › 网络”中的检查泄漏。大约十秒内,Kilobat 会检查流量绕过 VPN 的三种途径,逐项给出通过或失败,并附上修复设置;如果 Kilobat 认识你的 VPN App(Mullvad、NordVPN、Proton VPN、ExpressVPN、Tailscale、WireGuard),会使用该 App 中的名称;对于 Cisco、GlobalProtect 等工作 VPN,会告诉你该向 IT 部门询问什么。
- DNS。macOS 用于普通查询的解析器,以及到每个解析器的路由:如果某个解析器经由 Wi-Fi 或以太网而不是隧道到达,你查询的每个域名都会泄漏。Kilobat 还会通过 bash.ws 查询几个虚构的域名,bash.ws 会报告发出查询的解析器;既不属于你的 VPN、也不属于 Cloudflare 或 Google 等公共 DNS 服务的解析器,很可能属于你的网络运营商。
- IPv6。如果 VPN 只承载 IPv4,而 Mac 有经由 Wi-Fi 的 IPv6 路由,IPv6 网站就会收到你的真实地址。Kilobat 会向 api6.ipify.org 查询你的 IPv6 地址,显示这些网站看到的内容,并指出 VPN 设置,或如何为该网络关闭 IPv6(“系统设置” › “网络” › “Wi-Fi” › “详细信息” › “TCP/IP” › “配置 IPv6” › “仅本地链接”)。
- UDP 和 WebRTC。浏览器的 WebRTC 会从每个网络接口发送 UDP。Kilobat 会经由 VPN 发送一个 STUN 请求(发往 Google 或 Cloudflare 的服务器),再直接从 Wi-Fi 或以太网发送一个:如果第二个收到了应答,或第一个的返回地址与 VPN 的出口不同,网页就可能获知你的真实地址。修复方法是 VPN 的断网保护或锁定选项。Kilobat 无法运行浏览器的 WebRTC,所以也会说明如何阻止浏览器共享本地地址:Safari 会隐藏它们;Firefox 关闭
media.peerconnection.enabled;Brave 使用其 WebRTC IP 处理政策;Chrome 使用 Google 的 WebRTC Network Limiter 扩展程序。
泄漏测试是免费的。它不会更改任何设置,被询问的服务看到你的地址,就像任何网站一样。测试通过只代表这台 Mac 在那一刻的情况,并不代表每个 App。在终端中:kilobat vpn leaks(有泄漏时以 1 退出,--json 供脚本使用);智能体使用 check_vpn_leaks。