ET对分享服务到内网从来都没有过限制,我们只需将ET服务的listen地址设为0.0.0.0,然后在手机的WIFI设置里更改代理为ET所在计算机的内网IP即可。但偶尔我们会遇到内网中不存在ET服务的状况——例如去朋友家做客,或者在机场/饭店等公共场合,或者有时根本就没有WIFI可用。此时便显现出移动版客户端的存在价值了。

了解了一下Android的VPN开发框架,基于IP层的API,意味着不但需要阅读,更需要手动处理TCP协议,并不是随手就可以完成的。那么是否可以在“不存在ET Android APP”这一前提下,在Android中运行ET呢?

事实上是可以的。

选择对的版本

我们不能忘记两个要素:

  1. Android是基于Linux的操作系统
  2. Android手机的SoC都使用ARM指令集(我没听说过基于其它指令集的Android手机)

那么理论上:以Linux-ARM方式编译的Go语言程序,是可以运行在Android上的——恰好,我们有这个版本的Releaseet.go.linux.arm.tar.gz,它原本是被提供给树莓派的。

显然的,运行非GUI程序我们需要shell——或者一个虚拟终端。虽然Android不提供终端,但我们可以自己安装,这里我使用的是Termux

Termux

Termux的使用非常简单,打开APP即进入shell,我们只需掌握一条命令便可玩转它:

pkg install [包名]

使用这个命令安装我们常用的工具,然后便可像使用普通Linux一样使用它。现在我们安装几个会用到的包:

pkg install wget # 安装wget
pkg install tar # 安装tar
pkg install vim # 安装vim

你可以直接将指令复制到你的Termux中执行。万一偶尔提示安装异常,重新执行一遍指令就好。

在Android上使用ET

没错,安装方法基本和Linux教程一模一样:

# 下载et.go.linux.arm.tar.gz 我这里下载的是0.7.2,建议下载最新版本
wget https://github.com/eaglexiang/eagle.tunnel.go/releases/download/v0.7.2/et.go.linux.arm.tar.gz
# 解压
tar -zxvf ./et.go.linux.arm.tar.gz
# 进入目录
cd ./Eagle_Tunnel_Go/publish
# 列出所有文件
ls

如果不出意外你应该会看到这个样子:

files

那么我们现在配置一下:

vim ./config/client.conf

具体的配置方法可以照搬《Linux用户 使用指南》中的客户端这一小节。

拷贝现有的配置文件

你也可以直接将自己PC上的配置文件拷贝过来使用,借助QQ、微信、邮箱……如果碰巧你在PC端使用ET-Electron,直接拷贝它生成的配置文件,也是可以的。

运行

配置完成后,我们正式运行ET:

./et.go.linux -c ./config/client.conf

不出意外的话,就能看到以下熟悉的界面了:

main output

配置手机

ET虽然运行起来,手机系统却并不知情。我们需要手动设置系统代理为127.0.0.1:8080——不论是WIFI还是移动流量都支持设置代理。考虑到不同的Android定制版,UI界面都不太一样,这里就不再赘述具体的设置按钮在哪里/长什么样子。如有疑惑,百度一下就好。

termux_google

小麻烦

有一个小麻烦是,交叉编译的二进制包可能无法调用手机上的DNS接口,这会导致智能模式失效。解决办法是在手机上重新编译一遍源码,具体的编译方法就不啰嗦了。

发表评论