graftcp 是一款仅面向 Linux 的命令行代理重定向工具,它通过 ptrace(2) 拦截目标程序的 socket 系统调用,把任意进程的 TCP 连接、UDP 数据报和 DNS 查询透明地转向 SOCKS5 或 HTTP 代理。与 tsocks、proxychains、proxychains-ng 不同,它完全不依赖 LD_PRELOAD,因此对静态链接程序(例如大多数 Go 二进制)同样有效;旧的 graftcp + graftcp-local 双程序模型已合并为单一命令,无需再启动本地守护进程。适合需要让指定命令或整个 shell 会话走代理的开发、运维与调试场景。 核心功能: - TCP 代理重定向:用 ptrace(2) 拦截 connect(2) 等 socket 系统调用,把目标进程的 TCP 连接改写到 SOCKS5 或 HTTP 代理。 - 单二进制架构:原 graftcp + graftcp-local 已合并为一个命令,mgraftcp 保留为兼容别名,不再需要单独启动守护进程,也不再使用 FIFO、/proc 扫描或 netlink 反查连接。 - Loopback token IP 路由:每次被拦截的连接分配唯一 127.0.0.0/8 token IP,由内嵌本地代理在进程内直接回查原始目标地址。 - 免 LD_PRELOAD:不注入动态库,对静态链接程序(如 Go 编译的二进制)同样可以强制走代理。 - DNS 代理:以 --enable-dns 启用内嵌 DNS 转发器,把目标端口 53 的 UDP connect()/sendto() 改写到本地监听,再按代理策略以 TCP 方式转发到 --dns-server 指定的上游 DNS(默认关闭)。 - 通用 UDP 代理:以 --enable-udp 启用,改写 UDP connect()、sendto()、sendmsg() 目标地址,通过 SOCKS5 UDP ASSOCIATE 或 direct UDP 转发(默认关闭)。 - 代理选择模式:--select_proxy_mode 支持 auto、random、only_http_proxy、only_socks5、direct 五种策略;auto 优先尝试 SOCKS5 UDP,失败回退 direct UDP。 - 多种代理端点:--socks5 支持 TCP 端点(127.0.0.1:1080),也支持 Unix socket 端点(unix:/path/tor.sock)承载 TCP CONNECT 流量;--http_proxy 支持 HTTP 代理。 - SOCKS5 认证:--socks5_username 与 --socks5_password 指定账号密码。 - 黑白名单路由:-b/--blackip-file 指定直连 IP 列表,-w/--whiteip-file 指定仅这些 IP 走 SOCKS5。 - 本地地址处理:默认忽略本地目标地址,-n/--not-ignore-local 可将本地连接也重定向到 SOCKS5。 - 配置文件:按 --config、可执行文件同级、XDG 配置目录、Home 目录、/etc 等九个位置依次查找 graftcp.conf/mgraftcp.conf,配置项与命令行参数一一对应且被命令行覆盖。 - seccomp-BPF 加速:在支持的内核上自动安装 seccomp-BPF 过滤器,使只有 socket 相关系统调用陷入 tracer 以降低跟踪开销,不支持时自动回退为逐系统调用停点。 - IPv6 兼容:IPv6 connect(2) 改写为 IPv4-mapped Loopback 地址 ::ffff:127.x.y.z,复用同一套 token 路由逻辑。 - 缓冲区还原:TCP 与通用 UDP 的 sockaddr 缓冲区在 connect()/sendto()/sendmsg() 返回后 best-effort 恢复,DNS 改写则刻意保留以兼容 musl 等校验响应来源的 resolver。 - 身份切换:-u/--username 以指定用户身份运行命令并处理 setuid/setgid。 - 调试与版本:--enable-debug-log 输出调试日志,--version 打印版本信息,-h/--help 显示完整用法。 - 典型用法:可直接包装单条命令(如 graftcp --socks5 127.0.0.1:1080 curl https://example.com)、git clone 等网络操作,或用 graftcp bash --rcfile 拉起整个走代理的交互式 shell。 **中文支持**:项目自带完整简体中文 README(README.zh-CN.md),中文文档与英文版同步;软件为纯命令行工具、无图形界面,命令行帮助与配置项说明为英文。
本站收录软件分别遵循 Apache License 2.0、MIT、GPLv2、GPLv3等开源许可协议。
软件版权归原作者所有。
禁止利用本站工具爬虫、跨平台数据抓取、批量注册、刷量、黑产牟利。
违规使用全部责任由使用者自行承担。
所有资源均来自互联网,如有侵权,请联系删除。
微信: Reborn2025-a
Copyright 归原作者及贡献者所有 许可协议: GNU General Public License v3.0(GPL-3.0) LICENSE:https://github.com/hmgle/graftcp/blob/master/COPYING Referer:https://github.com/hmgle/graftcp 分发说明:本站整理分发官方原版程序,使用与再分发请遵循原项目协议,并保留相关 LICENSE / NOTICE 文件。