Privoxy Android SSH Tunneling¶
最近想要解决自己的 Pixel 4 手机 越过长城 问题,但是又没有时间重新部署 OpenConnect VPN 。我忽然想到,既然我的Android系统安装了 Termux - Andorid终端 ,实际上手机就是一个完整的Linux系统,何不类似电脑一样,采用 SSH Tunneling: 动态端口转发 实现一键翻墙呢?
备注
Android系统网络配置中可以设置代理,但是这个代理仅限于 HTTP/HTTPS 代理,也就是说无法直接使用 SSH Tunneling: 动态端口转发 创建的 Socks5 代理。所以,这里才会引入一个简洁的 Privoxy代理服务 代理服务器,作为中间转接。
ssh + privoxy
¶
Termux安装 后安装
openssh
:
apt install openssh iproute2
配置
.ssh/config
设置 ssh多路传输multiplexing加速 以便能够一次登录多次复用连接:
Host *
ServerAliveInterval 60
ControlMaster auto
ControlPath ~/.ssh/%h-%p-%r
ControlPersist yes
StrictHostKeyChecking no
Compression yes
安装 Privoxy代理服务 :
apt install privoxy
默认安装后,配置文件位于 ~/../usr/etc/privoxy
目录下的 config
文件,默认配置就可以运行。
配置socks上游代理¶
既然我们已经构建了 SSH Tunneling: 动态端口转发 ,也安装好了 Privoxy代理服务 ,接下来就需要配置 privoxy
代理转发到Socks5:
修改
~/../usr/etc/privoxy/config
配置文件,在最后添加以下配置表示允许本地访问(回环地址拒绝外部访问)以及将访问转发到本地的 Socks5 代理服务器( SSH Tunneling: 动态端口转发 ) 上:
permit-access localhost
forward-socks5 / 127.0.0.1:1080 .
使用如下命令启动
privoxy
(建议在 tmux多会话终端管理 或 screen终端多路复用管理器 中运行):
privoxy --no-daemon ../etc/privoxy/config
一切就绪,现在只需要配置 Android 系统使用
127.0.0.1:8118
作为代理服务器就可以 越过长城
待改进¶
不足待改进:
Android提供了WLAN配置(WiFi)使用代理,但是没有提供移动网络的配置,所以上述方法在使用4G/5G移动网络时无效。不过,我想到一个改进方案 在Alpine Linux环境部署Privoxy透明代理 (待实践)
需要有一个按需代理的配置方法,方便用户输入不同需要代理翻墙的地址,类似 Firefox 和 Chrome 常用的插件
SwitchyOmega