<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Linux on icebear&#39;s blog</title>
    <link>https://sfclub.cc/~icybear/tags/linux/</link>
    <description>Recent content in Linux on icebear&#39;s blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 13 Mar 2021 22:57:30 +0000</lastBuildDate>
    <atom:link href="https://sfclub.cc/~icybear/tags/linux/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>使用 cproxy 对程序进行透明代理</title>
      <link>https://sfclub.cc/~icybear/posts/%E4%BD%BF%E7%94%A8-cproxy-%E5%AF%B9%E7%A8%8B%E5%BA%8F%E8%BF%9B%E8%A1%8C%E9%80%8F%E6%98%8E%E4%BB%A3%E7%90%86/</link>
      <pubDate>Sat, 13 Mar 2021 22:57:30 +0000</pubDate>
      <guid>https://sfclub.cc/~icybear/posts/%E4%BD%BF%E7%94%A8-cproxy-%E5%AF%B9%E7%A8%8B%E5%BA%8F%E8%BF%9B%E8%A1%8C%E9%80%8F%E6%98%8E%E4%BB%A3%E7%90%86/</guid>
      <description>&lt;p&gt;在 Windows 下，说到 &lt;code&gt;透明代理&lt;/code&gt; ，你可能会想到 &lt;code&gt;Proxifier&lt;/code&gt; , &lt;code&gt;SSTap&lt;/code&gt;, &lt;code&gt;Mellow&lt;/code&gt;&lt;br&gt;
但在 Linux 下，你可能会想到 &lt;code&gt;proxychains&lt;/code&gt; 然后再想到 &lt;code&gt;proxychains&lt;/code&gt; 不能代理 static-linked 的程序。&lt;/p&gt;
&lt;h1 id=&#34;为什么-proxychainsng-不能代理静态连接的程序&#34;&gt;为什么 ProxyChains(NG) 不能代理静态连接的程序&lt;/h1&gt;
&lt;p&gt;ProxyChains NG 通过一个预加载的共享库来hook到网络相关的函数(比如: connect,getaddrinfo)上，接着他就可以转发这些流量。&lt;br&gt;
缺点似乎显而易见，如果只是通过 &lt;a href=&#34;https://stackoverflow.com/questions/426230/what-is-the-ld-preload-trick&#34;&gt;LD_PRELOAD&lt;/a&gt; 来进行透明代理，那么这招对于静态连接的程序是无用的（比如说 Go 程序..)&lt;br&gt;
其次，ProxyChains 只支持 TCP，这可能导致无法转发 DNS 流量 -&amp;gt; DNS 流量泄漏。&lt;/p&gt;
&lt;h1 id=&#34;cproxy-是什么&#34;&gt;cproxy 是什么&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/NOBLES5E/cproxy&#34;&gt;cproxy&lt;/a&gt; 也是透明代理，作用和 proxychains 类似。&lt;br&gt;
原理上与 proxychains 不同，它使用 &lt;code&gt;cgroup&lt;/code&gt; 进行对程序的代理 &lt;del&gt;，不过配置起来还有点麻烦&lt;/del&gt; &lt;br&gt;
本文将会教您在您的Linux PC上使用 cproxy，截至本文发布之前，cproxy似乎只支持 Linux。&lt;/p&gt;
&lt;h2 id=&#34;下载-cproxy&#34;&gt;下载 cproxy&lt;/h2&gt;
&lt;p&gt;官方推荐的方法是: 直接用 &lt;code&gt;cargo&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cargo install cproxy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果没有 cargo 可以在 &lt;a href=&#34;https://github.com/NOBLES5E/cproxy/releases&#34;&gt;Release&lt;/a&gt; 上下载压缩包。&lt;br&gt;
解压压缩包，可能会发现有两个可执行文件，不过似乎只留一个就好了。&lt;/p&gt;
&lt;h2 id=&#34;安装-cproxy&#34;&gt;安装 cproxy&lt;/h2&gt;
&lt;p&gt;先来试一试 cproxy！&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
