<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Soul Of Free Loop &#187; ProxyDroid</title>
	<atom:link href="https://zohead.com/archives/tag/proxydroid/feed" rel="self" type="application/rss+xml" />
	<link>https://zohead.com</link>
	<description>Uranus Zhou&#039;s Blog</description>
	<lastBuildDate>Sat, 19 Jul 2025 15:42:46 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>解决SSH Tunnel在Android 4.4下的问题</title>
		<link>https://zohead.com/archives/ssh-tunnel-4-4/</link>
		<comments>https://zohead.com/archives/ssh-tunnel-4-4/#comments</comments>
		<pubDate>Mon, 09 Feb 2015 16:24:09 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[ProxyDroid]]></category>
		<category><![CDATA[redsocks]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[SSH Tunnel]]></category>
		<category><![CDATA[代理]]></category>
		<category><![CDATA[翻墙]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=851</guid>
		<description><![CDATA[去年双11在 Linost 上打折促销买的 SSH 账号一直在电脑和手机上用来翻墙效果还是可以的，电脑上用 ssh 命令，Android 手机上用 SSH Tunnel 这款 App 配合使用的话也没发现什么问题。但最近把 New PadFone Infinity 手机的系统升级到 4.4 版本之后就发现 SSH Tunnel 的全局代理功能无法正常工作了，App 连接 SSH 服务器提示成功，但是实际在手机上其它 App 的任何网络请求都会报错，根本无法使用。 刚开始没找到解决办法，SSH Tunnel 的 Google Play Store 评论里也有其它用户反映了这个问题，但作者也一直没 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>去年双11在 <a href="https://my.linost.com/aff.php?aff=1674" target="_blank">Linost</a> 上打折促销买的 SSH 账号一直在电脑和手机上用来翻墙效果还是可以的，电脑上用 ssh 命令，Android 手机上用 <a href="https://play.google.com/store/apps/details?id=org.sshtunnel" target="_blank">SSH Tunnel</a> 这款 App 配合使用的话也没发现什么问题。但最近把 New PadFone Infinity 手机的系统升级到 4.4 版本之后就发现 SSH Tunnel 的全局代理功能无法正常工作了，App 连接 SSH 服务器提示成功，但是实际在手机上其它 App 的任何网络请求都会报错，根本无法使用。</p>
<p>刚开始没找到解决办法，SSH Tunnel 的 Google Play Store 评论里也有其它用户反映了这个问题，但作者也一直没有更新此软件，因此想了一个临时的办法就是用 SSH Tunnel 的动态 SOCKS 代理功能 + <a href="https://play.google.com/store/apps/details?id=org.proxydroid" target="_blank">ProxyDroid</a> 这款 App 的全局代理功能配合实现 Android 的全局翻墙功能。这样需要先关闭 SSH Tunnel 的全局代理功能，然后指定一个动态绑定端口，然后在 ProxyDroid 里指定使用 SSH Tunnel 绑定端口开启全局代理，经过实际测试可以达到效果。</p>
<p>后来想到明明一个 SSH Tunnel App 就可以实现的功能，现在必须安装两个 App 终究是不太好的，而且稍微了解下就清楚了 SSH Tunnel 和 ProxyDroid 的全局代理功能都是通过 redsocks + iptables 配合使用来实现的。</p>
<p>我们先来看看 SSH Tunnel 在启用全局代理选项并连接服务器之后生成的临时 <strong>redsocks.conf</strong> 配置文件内容：</p>
<pre class="brush: plain; title: /data/data/org.sshtunnel/redsocks.conf; notranslate">
base {
 log_debug = off;
 log_info = off;
 log = stderr;
 daemon = on;
 redirector = iptables;
}

redsocks {
 local_ip = 127.0.0.1;
 local_port = 8123;
 ip = 127.0.0.1;
 port = 9050;
 type = socks5;
}
</pre>
<p>这个文件所在路径为：<strong>/data/data/org.sshtunnel</strong>，<span style="line-height: 19.2000007629395px;">开启 root 权限之后</span><span style="line-height: 1.5;">安装终端模拟器或者其它文件管理器都可以看到。稍加分析可以看到 <strong>redsocks.conf</strong> 配置文件是由 SSH Tunnel 中自带的 <strong>proxy_socks.sh</strong> 脚本自动生成的。</span></p>
<p>通过查看 redsocks 项目网站上的说明，这个生成的临时 redsocks.conf 似乎也是对的，但是连接成功之后通过 ps 命令却看不到 redsocks 进程，看来就是 redsocks 进程没有正常运行引起的了。</p>
<p>经过多番尝试修改 <strong>proxy_socks.sh</strong> 脚本以产生不同的配置文件，才发现 SSH Tunnel 自带的 <strong>proxy_socks.sh</strong> 生成的配置文件在 Android 4.4 上由于日志选项被关闭会导致 redsocks 进程异常退出（具体原因未知）。使用 root 浏览器等工具修改该脚本为以下形式（修改的行已高亮显示出来）：</p>
<pre class="brush: bash; highlight: [12,13]; title: /data/data/org.sshtunnel/proxy_socks.sh; notranslate">
#!/system/bin/sh

DIR=/data/data/org.sshtunnel

PATH=$DIR:$PATH

case $1 in
 start)

echo &quot;
base {
 log_debug = on;
 log_info = on;
 log = stderr;
 daemon = on;
 redirector = iptables;
}
&quot; &gt;$DIR/redsocks.conf

   echo &quot;
redsocks {
 local_ip = 127.0.0.1;
 local_port = 8123;
 ip = 127.0.0.1;
 port = $2;
 type = socks5;
}
&quot; &gt;&gt;$DIR/redsocks.conf

  $DIR/redsocks -p $DIR/redsocks.pid -c $DIR/redsocks.conf

  ;;
stop)
  kill -9 `cat $DIR/redsocks.pid`

  rm $DIR/redsocks.pid
  rm $DIR/redsocks.conf

  ;;
esac
</pre>
<p>保存退出之后，重新开启 SSH Tunnel 的全局代理功能并连接 SSH 服务器，这时查看 redsocks 进程：</p>
<pre class="brush: bash; title: ; notranslate">
root@ASUS-A86:/ # busybox ps ax | busybox grep -i redsock
 7808 root       0:00 /data/data/org.sshtunnel/redsocks -p /data/data/org.sshtunnel/redsocks.pid -c /data/data/org.sshtunnel/redsocks.conf
 8211 root       0:00 busybox grep -i redsock
</pre>
<p>之后你就会发现处于墙外无限制的状态了。</p>
<p>另外还有一种解决办法就是直接把 ProxyDroid 软件中的 redsocks 二进制文件（路径为：/data/data/org.proxydroid）拷贝到 <strong>/data/data/org.sshtunnel</strong> 目录中直接覆盖，这样就不用修改脚本了，玩的开心 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/ssh-tunnel-4-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
