sing-box eBPF 入站:更轻量的透明代理方案
本分支现已加入实验性的 eBPF 入站支持,可在 Linux 与 Root Android 上通过内核 eBPF 程序接管网络连接,无需创建 TUN 设备,也不依赖传统的 iptables/nftables REDIRECT 或 TPROXY 规则。
主要特性:
本机透明代理:通过 cgroup eBPF 接管本机 TCP、UDP 流量
热点共享代理:
热点动态识别:热点接口尚未出现时不会阻止 sing-box 启动,开启或关闭热点后可自动更新挂载状态
DNS 防泄漏:支持
规则集绕过:可根据路由规则集生成 eBPF CIDR 绕过策略,让直连流量尽早在内核侧放行
真实来源信息:为路由规则与 Clash API 保留原始源地址,避免所有连接都显示为
自动内部端口:运行时分别为本机和热点数据路径分配内部端口,无需用户管理监听地址或端口
防止循环代理:代理自身创建的连接会被标记并绕过,避免流量再次进入 eBPF 入站
低配置侵入:不需要额外维护防火墙规则,退出时会清理已挂载的 eBPF 程序和相关资源
与 TUN 相比,eBPF 入站省去了虚拟网卡、路由表和用户态 IP 栈等环节;与 Redirect/TPROXY 相比,不需要修改整套防火墙规则。流量在内核较早阶段完成识别、绕过或重定向,更适合需要长期运行透明代理的 Root Android 设备与 Linux 主机。
示例配置:
编译时需启用
该功能目前仍属于实验性实现,建议升级前保留可回退版本,并欢迎反馈不同 Android 内核、热点实现及标准 Linux 发行版上的兼容性与性能表现。
本分支现已加入实验性的 eBPF 入站支持,可在 Linux 与 Root Android 上通过内核 eBPF 程序接管网络连接,无需创建 TUN 设备,也不依赖传统的 iptables/nftables REDIRECT 或 TPROXY 规则。
主要特性:
本机透明代理:通过 cgroup eBPF 接管本机 TCP、UDP 流量
热点共享代理:
shared_network 模式可代理 Android 热点下游设备的 IPv4/IPv6 流量热点动态识别:热点接口尚未出现时不会阻止 sing-box 启动,开启或关闭热点后可自动更新挂载状态
DNS 防泄漏:支持
dns_mode: hijack/off;hijack 会优先接管 TCP/UDP 53,避免 DNS 请求被绕过规则提前放行规则集绕过:可根据路由规则集生成 eBPF CIDR 绕过策略,让直连流量尽早在内核侧放行
真实来源信息:为路由规则与 Clash API 保留原始源地址,避免所有连接都显示为
127.0.0.1自动内部端口:运行时分别为本机和热点数据路径分配内部端口,无需用户管理监听地址或端口
防止循环代理:代理自身创建的连接会被标记并绕过,避免流量再次进入 eBPF 入站
低配置侵入:不需要额外维护防火墙规则,退出时会清理已挂载的 eBPF 程序和相关资源
与 TUN 相比,eBPF 入站省去了虚拟网卡、路由表和用户态 IP 栈等环节;与 Redirect/TPROXY 相比,不需要修改整套防火墙规则。流量在内核较早阶段完成识别、绕过或重定向,更适合需要长期运行透明代理的 Root Android 设备与 Linux 主机。
示例配置:
{
"type": "ebpf",
"tag": "ebpf-in",
"dns_mode": "hijack",
"shared_network": {
"enabled": true,
"include_interface": [
"wlan2"
]
}
}编译时需启用
with_ebpf,并开启 CGO。运行环境需要 Root/CAP_BPF 等必要权限,以及支持相关 cgroup、socket 与 TC eBPF 能力的 Linux 内核。其他原理及配置细节请查看本分支文档。该功能目前仍属于实验性实现,建议升级前保留可回退版本,并欢迎反馈不同 Android 内核、热点实现及标准 Linux 发行版上的兼容性与性能表现。