Cproxy:每个应用程序透明代理基于Linux CGroup Net_CLS

2021-02-24 21:50:57

cproxy可以将程序进行的TCP和DNS(UDP)通信重定向到本地端口(例如V2Ray的dokodemo门入站和ss-redir)。

与复杂的现有透明代理设置相比,使用cproxy就像代理链一样简单,但是与代理链不同,它可以在任何程序(包括静态链接的Go程序)上运行并重定向DNS请求。

您可以通过从发布页面下载二进制文件进行安装,也可以与货物一起安装:

使用cproxy,您甚至可以代理现有过程。当您要代理现有系统服务(例如docker)时,这非常方便。为此,只需运行

cproxy --port< destination-local-port> --use-tproxy-<您的程序> --arg1 --arg2 ...#或用于现有的进程cproxy --port< destination-local-port> --use-tproxy --pid< existing-process-pid>

您的V2Ray或shadowsocks服务应在入站端口上启用tproxy。对于V2Ray,您需要" tproxy&#34 ;:" tproxy"如V2Ray文档中所述。对于shadowsocks,您需要-u,如shadowsocks联机帮助页所示。

本节提供了使用DNS和TCP重定向的示例设置。使用以下V2Ray配置,您可以将程序的DNS请求与1.1.1.1代理为DNS服务器,并代理所有TCP连接。

{" outbounds&#34 ;: [{" protocol&#34 ;:" vmess&#34 ;," settings&#34 ;: {" vnext& #34 ;: [{" address&#34 ;:"< your-server-addr> &#34 ;、&#34 ;:<您的服务器端口&gt ;、"安全&#34 ;:"自动&#34 ;、"用户& #34 ;: [{" alterId&#34 ;: ...," id&#34 ;:" ..." }]}]," domainStrategy&#34 ;:" UseIP" }," streamSettings&#34 ;: {" network&#34 ;:" tcp" }," tag&#34 ;:" out" },{" protocol&#34 ;:" dns&#34 ;、" settings&#34 ;: {" network&#34 ;:" udp& #34 ;、"地址&#34 ;:" 1.1.1.1&#34 ;、" port&#34 ;: 53}," tag&#34 ;:& #34; dns-out" }]," dns":{"服务器":[" 1.1.1.1" ]}," routing&#34 ;: {" rules&#34 ;: [{" port&#34 ;: 1082," network&#34 ;:&# 34; udp"," inboundTag":["透明" ]," outboundTag&#34 ;:" dns-out&#34 ;," type&#34 ;:" field" }]}," inbounds&#34 ;: [{" listen&#34 ;:" 127.0.0.1&#34 ;," port&#34 ;: 1082, " protocol&#34 ;:" dokodemo-door&#34 ;," settings&#34 ;: {" followRedirect&#34 ;: true," network &#34 ;:" tcp,udp" }," sniffing&#34 ;: {" destOverride&#34 ;: [" http&#34 ;," tls" ]," enabled&#34 ;: true}," tag&#34 ;:" transparent" }]}

通过使用linux cgroup net_cls,实现非常简单!只需阅读https://github.com/NOBLES5E/cproxy/blob/master/src/main.rs :)

proxychains:易于使用,但不适用于静态链接程序(例如Go程序)。